我有个问题。我想在我的程序(以下代码)有2个窗口:控制台和空的形式输出图形。从我的func main发送消息到form来绘制形状。将数据输入到控制台。但是函数SendMessage()不起作用。出什么问题了?
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;
}
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;
}谢谢。
发布于 2011-02-13 19:46:34
直到窗口处理完消息,SendMessage函数才会返回。您需要有一个事件循环来处理消息。查找教程here。
在事件循环中,您必须处理两个窗口的消息:控制台窗口和GUI窗口。对于控制台消息,您需要处理按键事件,并将您的自定义消息(WM_USER + X)发送到图形用户界面窗口。
https://stackoverflow.com/questions/4983561
复制相似问题