c++ - 如何发送信息

标签 c++ windows forms console sendmessage

我有一个问题。我想在我的程序中(按照代码)有 2 个窗口:控制台和空窗体来输出图形。并从我的 func main 发送消息到 form 以绘制形状。向控制台输入数据。但是 func 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;
}

谢谢。

最佳答案

SendMessage 函数直到消息被窗口处理后才返回。您需要有一个事件循环才能处理消息。找教程here .

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

关于c++ - 如何发送信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4983561/

相关文章:

java - 检测 Windows 还是 Linux?

c++ - 在设置容器的 find() 上崩溃

c++ - 元编程 : using a const array

windows - 将多个文件通过管道传输到一个批处理文件中(使用资源管理器突出显示)

javascript - Jquery 对表单选择的影响

css - 表单在 Internet Explorer 中根本没有样式 - CSS 不显示

forms - odoo 如何在网站模板中设置选定的属性

c++ - Cocos 2D-X 3.2 添加和删除事件监听器

c++ - 为什么不允许我调用由 const 引用返回的对象的方法?

c++ - windows - 如何访问总计 "user mode stack trace database(ust)"?