|
Thanks for taking the time out to reply but I do have some more queries.
Naveen R wrote: no. When you call createwindow() from a thread, what ever be its style, it is created in same thread.
If so, then what about the message loop. If I have a MainFrame window which in turn is creating 5 Popup windows, I believe that every window will have its own message loop. How does it maintain 6 message loops within the same thread?
Thanks.
---
Hakuna-Matada
It means no worries for the rest of your days...
It's our problem free, Philosophy
"I think my response was 'What idiot dreamed this up?'" -- Mary Ann Davidson, Oracle's chief security officer, in typical blunt manner, remembering her reaction to the company's scheme to brand its databases as "unbreakable."
|
|
|
|
|
HakunaMatada wrote: I believe that every window will have its own message loop
No. Only one meesage loop will be there. When a window is created, there will no message loop. we have to explicitly write the message after creating the function( MFC is internally doing this). In the MainFrame case you said the sequence will be...
1. Create MainFrame
2. Create 5 popup window
3. Start the message loop
while( GetMessage())
{<br />
TranslateMessage();<br />
DispatchMessage();<br />
}
you can find this message loop in the CWinThread::PumpMessage() function.
nave
|
|
|
|
|
So, what you are saying is that there is just one message loop which gets created and the framework makes it seem like all have separate message loops?
Lets say for example...
1) Create MainFrame.
2) Run Message Loop.
3) Create 5 Popup windows on an event, say button click.
Lets say the classes for the Mainframe and Popup windows are CMainFrame, CPopup1, CPopup2.... etc. All classes have their own message loops(BEGIN_MSG_MAP and END_MSG_MAP). Does the framework being used make us think that separate message loops are being used when in reality only message loop is being used or is the case otherwise?
Thanks again for the answers.
---
Hakuna-Matada
It means no worries for the rest of your days...
It's our problem free, Philosophy
"I think my response was 'What idiot dreamed this up?'" -- Mary Ann Davidson, Oracle's chief security officer, in typical blunt manner, remembering her reaction to the company's scheme to brand its databases as "unbreakable."
|
|
|
|
|
HakunaMatada wrote: All classes have their own message loops(BEGIN_MSG_MAP and END_MSG_MAP)
BEGIN_MSG_MAP and END_MSG_MAP are not message loop, they are message maps. The function added between that macro will be called by the MFC framework when a message of corresponing type arrives in that window.
The better method to explorer this type of thing is to step in to the code of MFC while debugging.
nave
|
|
|
|
|
Thanks for the info.
---
Hakuna-Matada
It means no worries for the rest of your days...
It's our problem free, Philosophy
"I think my response was 'What idiot dreamed this up?'" -- Mary Ann Davidson, Oracle's chief security officer, in typical blunt manner, remembering her reaction to the company's scheme to brand its databases as "unbreakable."
|
|
|
|
|
HakunaMatada wrote: o WS_POPUP style windows get created in a separate thread than the thread which created them or do they run in the same thread
Windows styles (like WS_POPUP) and threads are orthogonal concepts.
WS_POPUP is about adorning your window (and maybe raising expectations in the user of your window).
What you want to learn about is worker threads and UI threads!
Maybe this[^] helps?
Failure is not an option - it's built right in.
|
|
|
|
|
Thanks.
---
Hakuna-Matada
It means no worries for the rest of your days...
It's our problem free, Philosophy
"I think my response was 'What idiot dreamed this up?'" -- Mary Ann Davidson, Oracle's chief security officer, in typical blunt manner, remembering her reaction to the company's scheme to brand its databases as "unbreakable."
|
|
|
|
|
hi
Is there any example to understand this api
thanks
|
|
|
|
|
|
thanks
is there any simple example
|
|
|
|
|
|
|
Hello,
I have created a menu like the following code
CMenu Data1;
Data1.CreateMenu();
Data1.AppendMenu(MF_STRING ,DataP, "Demand");
CMenu M;
M.CreateMenu();
M.AppendMenu(MF_POPUP ,(UINT)Data1.m_hMenu, "Data");
M.AppendMenu(MF_STRING, Model_EntityP,"Model Entity");
M.AppendMenu(MF_STRING ,EditP, "Edit");
pFrame->SetMenu(&M);
The above code works if I remove the popup Data1 option and then execute the program.
It doesn't allow me to create popups.
Where exactly popups should be added for me to see after I click on the topline menu?
Prithaa
|
|
|
|
|
CMenu Data1;
Data1.CreatePopupMenu();// try this code
Data1.AppendMenu(MF_STRING ,DataP, "Demand");
|
|
|
|
|
prithaa wrote: M.AppendMenu(MF_POPUP ,(UINT)Data1.m_hMenu, "Data");
modify it as below
M.AppendMenu(MF_POPUP ,(UINT)Data1.Detach(), "Data");
nave
|
|
|
|
|
Hello,
Thanks .
I did the required changes in the code and now I am getting the pull down menu which is grayed and not active.
How do I activate the pull down ?
I have written the following code for the pull down
M.AppendMenu(MF_STRING | MF_ENABLED ,DEMAND_ID, "DEMAND");
M.AppendMenu(MF_STRING | MF_ENABLED ,COST_ID, "COST");
Prithaa
|
|
|
|
|
Hi pritha..
overide the OnCmdMsg() function of the view class and return true when the
nID == DEMAND_ID or nId == COST_ID
and
nCode == CN_COMMAND
nave
|
|
|
|
|
Hello,
What ever you have asked me to do it has worked for me .But I don't understand why I have done that.
Especially the OnCmdMsg().Why this method when I have set the nFlags as MF_ENABLED.
You can give me any reference on the topics if explaining the whole thing is tedious.
Thanks It works
Prithaa
|
|
|
|
|
prithaa wrote: Why this method when
Actaully MFC didnt says to do so. In MSDN they are telling to add dummy command handler if we want a menu to be active.
from MSDN:
Disabling the Automatic Disabling of Button Controls
If you place a button control on a dialog bar, or in a dialog using where you are calling CWnd::UpdateDialogControls on your own, you will notice that buttons which do not have ON_COMMAND or ON_UPDATE_COMMAND_UI handlers will be automatically disabled for you by the framework. In some cases, you will not need to have a handler, but you will want the button to remain enabled. The easiest way to achieve this is to add a dummy command handler (easy to do with ClassWizard) and do nothing in it.
nave
|
|
|
|
|
prithaa wrote: What ever you have asked me to do it has worked for me
If any of the answers post by any one was help full for you, please vote for it.
nave
|
|
|
|
|
Hello,
What is this vote for ? I haven't done that before.
Prithaa
|
|
|
|
|
Good morning pritha
in the bottom of message you can find something like.
"Rate this message: 1 2 3 4 5 (out of 5)". Thats called voting.
Well where r u in India?
nave
|
|
|
|
|
Hello
I voted 5 but why is that for?
I am in Mumbai.Where r u?
Pritha
|
|
|
|
|
prithaa wrote: I voted 5 but why is that for?
Actaully for most of the answers we post, we dont gets any replay even though if they got the correct answers. So we dont know whether it helped them or not and so will not be getting any satisfaction in doing this. Voting is just another method of telling how much that post helped him.
prithaa wrote: I am in Mumbai.Where r u?
Basically am from kerala. Working in technopark. but now in Japan doing some onsite work for Tohiba.
nave
|
|
|
|
|
Hello,
Oh that is it. But usually I make it a point to reply back with a many thanks even if it doesn't solve my particular problem since I think that is the least I can do to get my problem solved.Till now I have not answered any questions for codeproject so at least a thanks letter is a must.
I didn't vote till now but my messages end with my message with a thanking note and the person answering my question knows that the topic is done.
All the best for you project.
Thanks Naveen
|
|
|
|