How to SendMessage
I have a problem. I want in my program(follow code) have 2 windows: console and empty form to output graphics. And from my func main send messages to form to draw shapes. Input data to console. But func SendMessage() doesn't work. What wrong?
int main()
{
char szClassName[] = "CG_WAPI_Template";
HWND hWnd = GetConsoleWindow();
HINSTANCE hInstance = NULL;
MSG lpMsg;
if(!AllocConsole())
MessageBox(NULL, "Failed to create the console!", "Ошибка", MB_ICONEXCLAMATION|MB_OK);
void *h_inc = GetStdHandle(STD_INPUT_HANDLE);
void *h_out = GetStdHandle(STD_OUTPUT_HANDLE);
WNDCLASS wc;
/*wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = WndProc;
...
*/
if(!RegisterClass(&wc))
{MessageBox(NULL, "Не могу зарегистрировать класс окна!", "Ошибка", MB_OK);
return 0;
}
开发者_JS百科
hWnd = CreateWindow(...);
ShowWindow(hWnd, SW_MAXIMIZE);
UpdateWindow(hWnd);
char buf[2];
unsigned long lengh;
ReadConsole(h_inc,buf,1,&lengh,NULL);
SendMessage(hWnd, WM_USER+2, 0, 0);
if(GetMessage(&lpMsg, NULL, 0, 0))
{
TranslateMessage(&lpMsg);
DispatchMessage(&lpMsg);
}
ReadConsole(h_inc,buf,1,&lengh,NULL);
if (!FreeConsole())
MessageBox(NULL, "Could not free the console!", "Ошибка", MB_OK);
return 0;
}
Thank you.
SendMessage function does not return until the message is processed by the window. You need to have an event loop in order to handle messages. Look fo r a tutorial here.
In your event loop you will have to handle messages for two windows: for the console window and for the GUI winodow. For the console messages you will need to handle the key press events, and send your custom message (WM_USER + X) to the GUI window.
精彩评论