首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用SendMessage

如何使用SendMessage
EN

Stack Overflow用户
提问于 2011-02-13 18:04:36
回答 1查看 7.1K关注 0票数 2

我有个问题。我想在我的程序(以下代码)有2个窗口:控制台和空的形式输出图形。从我的func main发送消息到form来绘制形状。将数据输入到控制台。但是函数SendMessage()不起作用。出什么问题了?

代码语言:javascript
复制
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;
}

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2011-02-13 19:46:34

直到窗口处理完消息,SendMessage函数才会返回。您需要有一个事件循环来处理消息。查找教程here

在事件循环中,您必须处理两个窗口的消息:控制台窗口和GUI窗口。对于控制台消息,您需要处理按键事件,并将您的自定义消息(WM_USER + X)发送到图形用户界面窗口。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4983561

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档