番茄系统家园 - 免费重装系统!简单装系统,人人都是装机大师!
当前位置:首页>系统资讯 > C++如何创建窗口程序 c++创建窗口程序方法

C++如何创建窗口程序 c++创建窗口程序方法

来源:番茄系统家园浏览:时间:2023-02-20 18:25:32

Windows操作系统中,编程用的最多的就是C++,我们的C窗口是使用纯Win32 API函数创建的,很多用户们都想知道C++如何创建窗口程序,接下来小编给大家带来c++创建窗口程序方法。

C++如何创建窗口程序

创建一个完整的窗口程序需要四个步骤:

1.设计一个窗口类

2.注册窗口类

3.创建窗口

4.显示及更新窗口

当Windows操作系统启动一个程序时,它调用的就是该程序的WinMain函数( 实际是由插入到可执行文件中的启动代码调用的)。 WinMain是Windows程序的入口点函数,与DOS程序的入口点函数main的作用相同,当WinMain 函数结束或返回时,Windows应用程序结束。

  1. int WINAPI WinMain(

  2.     HINSTANCE hInstance,        //应用程序实例

  3.     HINSTANCE hPrevInstance,    //上一个应用程序实例

  4.     LPSTR lpCmdLine,            //命令行参数

  5.     int nShowCmd                //窗口显示的样式

  6. );

WINAPI:是一个宏,它代表的是__stdcall(注意是两个下划线),表示的是参数传递的顺序:从右往左入栈,同时在函数返回前自动清空堆栈。

hInstance:表示该程序当前运行的实例的句柄,这是一个数值。当程序在Windows下运行时,它唯一标识运行中的实例(注意,只有运行中的程序实例, 才有实例句柄)。一个应用程序可以运行多个实例,每运行一个实例,系统都会给该实例分配一个句柄值,并通过hInstance参数传递给 WinMain 函数。

hPrevInstance:表示当前实例的前一个实例的句柄。在Win32环境下,这个参数总是NULL,即在Win32环境下,这个参数不再起作用。

lpCmdLine:是一个以空终止的字符串, 指定传递给应用程序的命令行参数,相当于C或C++中的main函数中的参数char *argv[]。

nShowCmd:表示一个窗口的显示,表示它是要最大化显示、最小化显示、正常大小显示还是隐藏显示。

  1. #include

  2. #include

  3. #pragma comment(linker, "/subsystem:\"console\" /entry:\"WinMainCRTStartup\"")


  4. int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR lpCmdLine, int nCmdShow) {


  5.     printf("%p %p %p\n", hInstance, hPrevInstance, GetModuleHandleA(NULL));

  6.     printf("%d %d\n", nCmdShow, SW_SHOWNORMAL);


  7.     printf("%s\n", lpCmdLine);


  8.     MessageBoxA(NULL, TEXT("第一个 Windows API 程序"), TEXT("黑猫编程"), MB_OK);


  9.     return 0;

  10. }

C++如何创建窗口程序 c++创建窗口程序方法

字符集

  1. #include

  2. #include

  3. #include

  4. #include


  5. int main() {


  6.     const char* str1 = "Abc中国";

  7.     printf("%s  %d\n", str1, strlen(str1));


  8.     _wsetlocale(LC_ALL, L"chs");

  9.     const wchar_t* str2 = L"ABC中国文字";

  10.     wprintf(L"%s  %d\n", str2, wcslen(str2));


  11.     MessageBoxW(NULL, TEXT("hello cat."), L"coding", MB_OK);


  12.     return 0;

  13. }

Windows 编程模型

一个完整的Win32程序(#include windows.h>),该程序实现的功能是创建一个窗口,并在该窗口中响应键盘及鼠标消息,程序的实现步骤为:

WinMain函数的定义

创建一个窗口

进行消息循环

编写窗口过程函数

C++如何创建窗口程序 c++创建窗口程序方法

项目创建

C++如何创建窗口程序 c++创建窗口程序方法

C++如何创建窗口程序 c++创建窗口程序方法

窗口程序模板代码

  1. #include


  2. // 自定义窗口过程回调函数

  3. LRESULT CALLBACK MyWindowProc(HWND hwnd, UINT Msg, WPARAM wParam, LPARAM lParam) {


  4.     switch (Msg) {

  5.     case WM_DESTROY:

  6.         PostQuitMessage(0);

  7.         return 0;

  8.     }


  9.     return DefWindowProcA(hwnd, Msg, wParam, lParam);

  10. }


  11. int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) {


  12.     // 注册窗口类

  13.     WNDCLASS wnd;


  14.     wnd.cbClsExtra = 0;

  15.     wnd.cbWndExtra = 0;


  16.     wnd.hbrBackground = (HBRUSH)(GetStockObject(WHITE_BRUSH));

  17.     wnd.hCursor = LoadIcon(NULL, IDC_ARROW);

  18.     wnd.hIcon = LoadIcon(NULL, IDI_APPLICATION);

  19.     wnd.lpfnWndProc = MyWindowProc;

  20.     wnd.lpszClassName = TEXT("blackcat");

  21.     wnd.lpszMenuName = NULL;

  22.     wnd.style = CS_HREDRAW;

  23.     wnd.hInstance = hInstance;


  24.     RegisterClassA(&wnd);


  25.     // 创建窗口 返回之前发送 VW_CREATE

  26.     HWND hwnd = CreateWindowA(

  27.         TEXT("blackcat"),

  28.         TEXT("黑猫编程"),

  29.         WS_OVERLAPPEDWINDOW,

  30.         100, 100, 300, 300, NULL, NULL, hInstance, NULL

  31.     );


  32.     // 显示窗口

  33.     ShowWindow(hwnd, nShowCmd);


  34.     // 更新窗口

  35.     UpdateWindow(hwnd);


  36.     // 消息循环 收到 VM_QUIT 退出

  37.     MSG msg;

  38.     while (GetMessageA(&msg, hwnd, 0, 0)) {

  39.         TranslateMessage(&msg);

  40.         DispatchMessageA(&msg);

  41.     }


  42.     return 0;

  43. }

线程和窗口

在WIN32中,消息队列是与线程(Thread)相关的,一个线程只能有一个消息队列(queue)与之相对应。当一个线程里面首次调用User32.dll或GDI32.dll中的函数时,系统会为该线程创建一个消息队列,否则就没有消息队列。

在一个线程中可以产生多个窗口,所以每个窗口课共用一个线程消息队列,所有产生给某个窗口的消息,都先由创建这个窗口的线程处理,窗口在任何线程中都可以创建,但消息循环必须要和创建窗口在同一线程,否则窗口将无法从DispatchMessage()获取任何消息,为了使窗口接受这些消息,线程必须有自己的循环。

C++如何创建窗口程序 c++创建窗口程序方法

消息分类

标准消息:所有以WM_开头的消息,除了WM_COMMAND

命令消息:来自菜单栏、工具栏、按钮或者快捷键的消息。WM_COMMAND

通告消息:由控件产生的消息,例如按钮单击、列表项的选择等,为了向其父窗口通知事件的发生。

SendMessage和PostMessage

C++如何创建窗口程序 c++创建窗口程序方法

PostThreadMessage

C++如何创建窗口程序 c++创建窗口程序方法

C++介绍

C++(c plus plus)是一种计算机高级程序设计语言,由C语言扩展升级而产生,最早于1979年由本贾尼·斯特劳斯特卢普在AT&T贝尔工作室研发。

C++既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。C++擅长面向对象程序设计的同时,还可以进行基于过程的程序设计。 C++几乎可以创建任何类型的程序:游戏、设备驱动程序、HPC、云、桌面、嵌入式和移动应用等。 甚至用于其他编程语言的库和编译器也使用C++编写。

C++拥有计算机运行的实用性特征,同时还致力于提高大规模程序的编程质量与程序设计语言的问题描述能力。

以上就是C++如何创建窗口程序,c++创建窗口程序方法的全部内容了,希望对各位小伙伴有所帮助

推荐系统

  • 雨林木风 winxp下载 纯净版 永久激活 winxp ghost系统 sp3 系统下载

    雨林木风 winxp下载 纯净版 永久激活 winxp ghost系统 sp3 系统下载64位
    系统大小:0MB系统类型:WinXP

    雨林木风在系统方面技术积累雄厚深耕多年,打造了国内重装系统行业知名品牌,雨林木风WindowsXP其系统口碑得到许多人认可,积累了广大的用户群体,是一款稳定流畅的系统,雨林木风 winxp下载 纯净版 永久激活 winxp ghost系统 sp3 系统下载,有需要的朋友速度下载吧。

    系统等级:
    进入下载 >
  • 萝卜家园win7纯净版 ghost系统下载 x64 联想电脑专用

    萝卜家园win7纯净版 ghost系统下载 x64 联想电脑专用64位
    系统大小:0MB系统类型:Win7

    萝卜家园win7纯净版是款非常纯净的win7系统,此版本优化更新了大量的驱动,帮助用户们进行舒适的使用,更加的适合家庭办公的使用,方便用户,有需要的用户们快来下载安装吧。

    系统等级:
    进入下载 >
  • 雨林木风xp系统 xp系统纯净版 winXP ghost xp sp3 纯净版系统下载

    雨林木风xp系统 xp系统纯净版 winXP ghost xp sp3 纯净版系统下载64位
    系统大小:1.01GB系统类型:WinXP

    雨林木风xp系统 xp系统纯净版 winXP ghost xp sp3 纯净版系统下载,雨林木风WinXP系统技术积累雄厚深耕多年,采用了新的系统功能和硬件驱动,可以更好的发挥系统的性能,优化了系统、驱动对硬件的加速,加固了系统安全策略,运行环境安全可靠稳定。

    系统等级:
    进入下载 >
  • 萝卜家园win10企业版 免激活密钥 激活工具 V2023 X64位系统下载

    萝卜家园win10企业版 免激活密钥 激活工具 V2023 X64位系统下载64位
    系统大小:0MB系统类型:Win10

    萝卜家园在系统方面技术积累雄厚深耕多年,打造了国内重装系统行业的萝卜家园品牌,(win10企业版,win10 ghost,win10镜像),萝卜家园win10企业版 免激活密钥 激活工具 ghost镜像 X64位系统下载,其系统口碑得到许多人认可,积累了广大的用户群体,萝卜家园win10纯净版是一款稳定流畅的系统,一直以来都以用户为中心,是由萝卜家园win10团队推出的萝卜家园

    系统等级:
    进入下载 >
  • 萝卜家园windows10游戏版 win10游戏专业版 V2023 X64位系统下载

    萝卜家园windows10游戏版 win10游戏专业版 V2023 X64位系统下载64位
    系统大小:0MB系统类型:Win10

    萝卜家园windows10游戏版 win10游戏专业版 ghost X64位 系统下载,萝卜家园在系统方面技术积累雄厚深耕多年,打造了国内重装系统行业的萝卜家园品牌,其系统口碑得到许多人认可,积累了广大的用户群体,萝卜家园win10纯净版是一款稳定流畅的系统,一直以来都以用户为中心,是由萝卜家园win10团队推出的萝卜家园win10国内镜像版,基于国内用户的习惯,做

    系统等级:
    进入下载 >
  • windows11下载 萝卜家园win11专业版 X64位 V2023官网下载

    windows11下载 萝卜家园win11专业版 X64位 V2023官网下载64位
    系统大小:0MB系统类型:Win11

    萝卜家园在系统方面技术积累雄厚深耕多年,windows11下载 萝卜家园win11专业版 X64位 官网正式版可以更好的发挥系统的性能,优化了系统、驱动对硬件的加速,使得软件在WINDOWS11系统中运行得更加流畅,加固了系统安全策略,WINDOWS11系统在家用办公上跑分表现都是非常优秀,完美的兼容各种硬件和软件,运行环境安全可靠稳定。

    系统等级:
    进入下载 >