使用C++编写一个可视化窗口

您所在的位置:网站首页 可视化流程编辑软件 使用C++编写一个可视化窗口

使用C++编写一个可视化窗口

2024-07-15 21:27| 来源: 网络整理| 查看: 265

初学C++时,控制台会给我们提供一个黑窗口,而这篇文章所做的就是:创建一个属于图形界面窗口,而不是使用控制台黑窗口

如图,这是一个标题为XSZY的窗口 这都是自定义的 一个标题为XSZY的窗口

所有有关视窗的基本函数和类型都定义在头文件 中 我们只需要引用就好了

//引用头文件 windows.h #include

然后定义程序的入口函数main

int __stdcall WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR lpCmdLine, int nCmdShow) { }

说到这个入口函数,其实使用main()也是可以的

int main() { } int main(int argc, char** argv) { } int main(int argc, char* argv[]) { }

其实C++定义了很多程序入口,只要程序中包含其中一个,程序就可以运行了

而WinMain的声明同样也是有依据可寻的

在头文件 中, 有这样两句话 int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd); int WINAPI wWinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nShowCmd); 它们分别声明了两种程序入口 WinMain 和 wWinMain wWinMain 是 WinMain 的宽字符版本, 形参列表中的LPWSTR说明了这个事实 顺带说一下吧 基本所有的函数、类型、结构体、宏等都带有A 和 W, 比如 WNDCLASSA 和 WNDCLASSW 一般A是窄字符, W是宽字符 LPSTR 其实就是 char* ; 而LPWSTR 是 wchar_t* 表示宽字符时需要标记L 比如定义宽字符串HelloWorld应该写为 L"HelloWorld!" ,系统就会识别为宽字符了

说了这么多,该定义窗口实例句柄了 这是用来指向一个实例( instance ) 的类型 HINSTANCE 前缀H就是Handle句柄的意思, instance就是实例的意思

这个句柄的作用就是:指定一个窗口实例

如果你使用的时WinMain,那么可以选择直接使用形参表中的第一个或第二个参数,但是如果你使用的时int main(),那么就需要定义一个新的实例句柄

int WINAPI WinMain(HINSTANCE hInst, //可以使用这个 HINSTANCE hPrev, //也可以使用这个(习惯上使用上面的) LPSTR lpCmdLine, int nShowCmd) { } int main() { HINSTANCE hInst; //定一个新的实例句柄 }

定义来有什么用呢? 我们需要做一个窗口,就需要创建它,而定义它的标准,是由结构体WNDCLASS来完成的,能够让窗口和窗口结构体链接上的,需要实例句柄一致,并且和窗口类名一致

窗口类在 中的定义

typedef struct tagWNDCLASSA { UINT style; WNDPROC lpfnWndProc; int cbClsExtra; int cbWndExtra; HINSTANCE hInstance; HICON hIcon; HCURSOR hCursor; HBRUSH hbrBackground; LPCSTR lpszMenuName; LPCSTR lpszClassName; } WNDCLASSA,*PWNDCLASSA,*NPWNDCLASSA,*LPWNDCLASSA; typedef struct tagWNDCLASSW { UINT style; WNDPROC lpfnWndProc; int cbClsExtra;


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3