如何在作为控制台启动的应用程序中创建窗口?

时间:2012-07-27 08:29:41

标签: c++ winapi console window

我知道当应用程序从一开始就被窗口化时创建窗口的方式,即你打电话

LRESULT CALLBACK WindowProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam);
int WinMain(HINSTANCE hInst,HINSTANCE,LPSTR,int nCmdShow);

但是如果我想让用户在结束时显示控制台应用程序输出的选项该怎么办。这是在ad-hoc创建的窗口中以更易读的形式显示其数据,而不是控制台允许的纯文本模式。

在控制台应用程序中,我有一个监视用户按键操作的功能,当我的程序结束时,它会显示消息:press D to display result in a window instead of console,代码为:

if (virtual_key == 0x44) {
  HWND myWindow = myCreateWindFunc(/* data */);
}

那就是我需要将创建窗口的所有代码打包成一个函数,然后只需用它来调用函数来填充它的控件。

1 个答案:

答案 0 :(得分:3)

控制台应用程序可以使用任何相关的WinAPI函数(MessageBoxDialogBox等)创建子窗口或对话框。

唯一需要注意的是,create函数可能需要控制台窗口的句柄。要获得它,您可以使用此处的示例How To Obtain a Console Window Handle