|
Cedric Moonen wrote: The first argument to PostMessage should be the handle of the window to which you want to post the message. You can retrieve it from the CDialog by calling GetSafeHwnd() on it.
CDialog is derived from CWnd which has a PostMessage method with the following signature:
BOOL CWnd::PostMessage(UINT message, WPARAM wParam, LPARAM lParam)
Depending on the specifics calling Win32's ::PostMessage function may not be the best way to go about things.
Steve
|
|
|
|
|
Stephen Hewitt wrote: Depending on the specifics calling Win32's ::PostMessage function may not be the best way to go about things.
What do you mean ? If the thread runs outside the dialog class, you have to use ::PostMessage to deliver the message to the correct window. I don't see what you mean in fact, could you elaborate ?
|
|
|
|
|
He’s using MFC and wants to post a message to a CDialog derived class. If the worker thread has access to this class then he can use CDialog::PostMessage. An example:
CDialog theDialog;
void CalledFromOtherThread()
{
theDialog.PostMessage(WM_APP, 0, 0);
}
Steve
|
|
|
|
|
PostMessage function [^] takes four parameters, indeed.
I.e. did you realize the thread procedure is NOT a method (a instance one) of your dialog class?
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
If you're starting your thread from within the dialog you want to update, pass the hwnd of the dialog as the LPARAM if you use MFC (AfxBeginThread) - then you can use that in your PostMessage. If you don't use MFC, you can pass it as arglist or lpParmeter depending on how you start your thread.
You can use GetSafeHwnd() in your dialog to get the hWnd to pass.
Inside the thread, cast that parameter to an hWnd and you've got it.
Hope that helps.
Karl - WK5M
PP-ASEL-IA (N43CS)
PGP Key: 0xDB02E193
PGP Key Fingerprint: 8F06 5A2E 2735 892B 821C 871A 0411 94EA DB02 E193
|
|
|
|
|
you can also you the application object memeber variable m_hWnd!
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow Never mind - my own stupidity is the source of every "problem" - Mixture
cheers,
Alok Gupta
VC Forum Q&A :- I/ IV
Support CRY- Child Relief and You/xml>
|
|
|
|
|
I'm searching a 2d array with this all I get is not found any help please
#include <stdio.h>
void main( )
{
int x,
y;
int iTwoD[ 3 ][ 3 ]={ { 1,2,3 } , { 4,5,6 } , { 7,8,9 }} ;
int iFoundAt[2]={0,0};
int iValue = 0;
int iFound = 0;
printf( "\nEnter a search value: " );
scanf( "&d", &iValue );
for( x = 0; x <= 2; x++ )
{
for( y = 0; y <= 2; y++ )
{
if( iTwoD[ x ][ y ] = iValue )
{
iFound = 1;
iFoundAt[ 0 ] = x;
iFoundAt[ 1 ] = y;
break;
}
}
}
if( iFound == 1 )
printf( "\nFound value in iTwoD[%d][%d]\n", iFoundAt[ 0 ], iFoundAt[ 1 ] );
else
printf( "\nsearch value not found\n" );
}
|
|
|
|
|
gordon3056 wrote: scanf( "&d", &iValue );
this line is faulty; did you inspect the value of iValue?
|
|
|
|
|
thanks very much bin looking at this for 6 days I might be able to finish the book now
|
|
|
|
|
gordon3056 wrote: scanf( "&d", &iValue );
Should be
scanf( "%d", &iValue );
The debugger is your friend!
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
Mark Salsbery wrote: The debugger is your friend!
and CodeReview by CodeProject is your pal!
|
|
|
|
|
Luc Pattyn wrote: and CodeReview by CodeProject is your pal!
What is this "CodeReview"??
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
Mark Salsbery wrote: What is this "CodeReview"??
That is a conspiracy of some 5 million people, where in turn one finds the erroneous line,
and another one indicates the exact column of the mistake.
|
|
|
|
|
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
thanks very much
|
|
|
|
|
I think you also want the equality operator here:
if( iTwoD[ x ][ y ] == iValue )
Hope that helps.
Karl - WK5M
PP-ASEL-IA (N43CS)
PGP Key: 0xDB02E193
PGP Key Fingerprint: 8F06 5A2E 2735 892B 821C 871A 0411 94EA DB02 E193
|
|
|
|
|
gordon3056 wrote: if( iTwoD[ x ][ y ] = iValue )
should be (== NOT = ):
if( iTwoD[ x ][ y ] == iValue )
This signature was proudly tested on animals.
|
|
|
|
|
Good eyes guys - I didn't see that one
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
if( iTwoD[ x ][ y ] = iValue )
and this line should be:
if( iTwoD[ x ][ y ] == iValue )
|
|
|
|
|
|
how to Window title bar sliding under the menu bar ,please give me examples or Recommendations
wqewqqeweqwrwerewrwe
|
|
|
|
|
Hi,
I have a menu in a CDialog, but it's looking ugly so I'm wondering if there is any way to use a menu bar instead. I don't need any docking capabilities, just a better-looking menu. I found CMenuBar from Paul DiLascia's article at http://www.microsoft.com/msj/0199/c/c0199.aspx[^], but it says it's designed for MDI apps. So, is there anything I can use in CDialog?
There is sufficient light for those who desire to see, and there is sufficient darkness for those of a contrary disposition.
Blaise Pascal
|
|
|
|
|
sashoalm wrote: I have a menu in a CDialog, but it's looking ugly so I'm wondering if there is any way to use a menu bar instead.
I am wondering if you can't use something other than a Dialog?
led mike
|
|
|
|
|
Word of the day - overkill?
But seriously, it would be too much effort, and prettier menus don't justify it. And as I said, it's not anything critical, the default menus just look ugly.
There is sufficient light for those who desire to see, and there is sufficient darkness for those of a contrary disposition.
Blaise Pascal
|
|
|
|
|
sashoalm wrote: Word of the day - overkill?
But seriously, it would be too much effort
Rather than argue with you I will conclude my involvement in this attempt to assist you by making sure you have been made aware of the CFormView class in the MFC library.
led mike
|
|
|
|