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

how to create window in an application that started as console one?

本文关键字:应用程序 创建 窗口 启动 控制台      更新时间:2023-10-16

我从一开始就知道应用程序窗口化时创建窗口的方式,也就是说你调用

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

但是,如果我想让用户选择在控制台应用程序输出结束时显示它,该怎么办呢。也就是说,在特别创建的窗口中以更可读的形式显示其数据,而不是控制台允许的纯文本模式。

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

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

也就是说,我需要将创建窗口的所有代码打包到一个函数中,然后用数据调用它上的函数来填充它的控件。

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

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