C语言CreateWindow()创建窗口及消息处理过程 纯PAI创建

[复制链接]
查看: 3393|回复: 31
发表于 2023-2-15 12:04:57 | 显示全部楼层 | 阅读模式
分为四步:
一、定义窗口类
二、初始化窗口
三、创建窗口
四、处理消息

#include <windows.h>
HINSTANCE hinst;
LRESULT CALLBACK MainWndProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam);
int WINAPI WinMain(HINSTANCE hinstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){
        //主函数里创建窗口
        //定义窗口类
        WNDCLASSEX wcx;//窗口类变量
        HWND hwnd;//窗口句柄,创建窗口后得到
        MSG msg;//消息变量
        BOOL fGotMessage;//是否取到了消息
        hinst=hinstance;//保存实例句柄

        //初始化窗口类
        wcx.lpszClassName="MainWClass";//窗口名称
        wcx.cbSize=sizeof(wcx);//窗口大小
        wcx.style=CS_HREDRAW|CS_VREDRAW;//是否重画
        wcx.lpfnWndProc=MainWndProc;//窗口过程
        wcx.cbClsExtra=0;//不适用类内存
        wcx.cbWndExtra=0;//不适用窗口内存
        wcx.hInstance=hinstance;//实例句柄
        wcx.hIcon=LoadIcon(NULL,IDI_APPLICATION);//窗口大图标
        wcx.hIconSm=(HICON)LoadImage(hinstance,//窗口小图标
                MAKEINTRESOURCE(5),//从5号资源取图片
                IMAGE_ICON,//图片类型
                GetSystemMetrics(SM_CXSMICON),//图片的宽为标准小图标的宽度
                GetSystemMetrics(SM_CYSMICON),//图片的高为标准小图标的高度
                LR_DEFAULTCOLOR//默认颜色
                );
        wcx.hCursor=LoadCursor(NULL, IDC_ARROW);//鼠标形状
        wcx.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);//窗口背景
        wcx.lpszMenuName=NULL;//窗口菜单


        //注册窗口类
        if(!RegisterClassEx(&wcx)){//如果注册失败则返回
                return 1;
        }


        //创建窗口
        hwnd=CreateWindow("MainWClass",
                "Hello",//窗口标题
                WS_OVERLAPPEDWINDOW,//窗口样式
                CW_USEDEFAULT,//窗口位置 x坐标
                CW_USEDEFAULT,//窗口位置 y坐标
                CW_USEDEFAULT,//宽度
                CW_USEDEFAULT,//高度
                (HWND)NULL,//父窗口句柄
                (HMENU)NULL,//窗口没有菜单,则使用窗口类的菜单,窗口类也没有菜单,所以最终没有菜单
                hinstance,//实例句柄--main函数的第一个参数
                (LPVOID)NULL);//创建窗口的初始数据

        if(!hwnd){//如果窗口创建失败
                return 1;
        }

        ShowWindow(hwnd,//显示窗口
                nCmdShow);//显示方式-main函数的最后一个参数
        UpdateWindow(hwnd);//立即显示

        //消息循环,去消息队列里取消息
        while(fGotMessage=GetMessage(&msg,(HWND)NULL,0,0)!=0){//取到了消息
                TranslateMessage(&msg);//翻译消息
                DispatchMessage(&msg);//转发消息--转发给窗口过程
        }

        return msg.wParam;//返回消息参数

}

LRESULT CALLBACK MainWndProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam){
        //处理窗口消息
        switch(uMsg){//对窗口转发过来的消息进行处理
        case WM_DESTROY://关闭窗口时
        PostQuitMessage(0);//退出消息循环,自动结束窗口
        //ExitThread(0);//退出主线程
        return 0;
        default://其它消息交由windows处理,DefWindowProc是系统默认的窗口过程
                return DefWindowProc(hwnd,uMsg,wParam,lParam);

        }

};


易博软件介绍

0

主题

19

帖子

10

积分

营销入门

Rank: 2

积分
10
发表于 2023-2-19 22:36:01 | 显示全部楼层
任重道远啊~~~~~  
发表于 2023-2-20 21:45:45 | 显示全部楼层
好贴! 支持!
发表于 2023-2-21 13:55:35 | 显示全部楼层
世上有些问题,有许多种解法!当然,今天看了你的贴子!让人感触很深!如果做为程序员来讲,当然讲求效率为先!不然还真的没有什么人可以成为杰出或是优秀的程序员了!

0

主题

15

帖子

8

积分

营销入门

Rank: 2

积分
8
发表于 2023-2-22 06:01:08 | 显示全部楼层
写的很好,想成为一个好的程序员,需要努力努力再努力!!!

0

主题

14

帖子

8

积分

营销入门

Rank: 2

积分
8
发表于 2023-2-23 03:11:43 | 显示全部楼层
虽然看不懂,但真的不错!!谢谢!!

0

主题

15

帖子

8

积分

营销入门

Rank: 2

积分
8
发表于 2023-2-25 02:27:14 | 显示全部楼层
^你好!我想问你一道题:试分别以顺序表和单链表作存储结构,各写一个实现线性表的就地(既使用尽可能少的附加空间)逆置的算法,在原表的存储空间内将线性表(a1,a2,.....an)逆置为(an,.....,a2,a1).

0

主题

18

帖子

10

积分

营销入门

Rank: 2

积分
10
发表于 2023-2-26 02:38:52 | 显示全部楼层
大哥能帮忙吗   

0

主题

12

帖子

7

积分

营销入门

Rank: 2

积分
7
发表于 2023-2-26 17:44:42 | 显示全部楼层
^做为一个刚入门程序的我都感触良多..向你表示120分的敬意

0

主题

9

帖子

5

积分

营销入门

Rank: 2

积分
5
发表于 2023-2-28 11:53:36 | 显示全部楼层
有同感
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1、请认真发帖,禁止回复纯表情,纯数字等无意义的内容!帖子内容不要太简单!
2、提倡文明上网,净化网络环境!抵制低俗不良违法有害信息。
3、如果你对主帖作者的帖子不屑一顾的话,请勿回帖。谢谢合作!
3、问答求助区发帖求助后,如有其他用户热心帮您解决问题后,请自觉点击设为最佳答案按钮。

 
 
QQ在线客服
QQ技术支持
工作时间:
8:00-18:00
软著登字:
1361266号
官方微信扫一扫
weixin

QQ|小黑屋|Archiver|慈众营销 ( 粤ICP备15049986号 )|网站地图

自动发帖软件 | 自动发帖器 | 营销推广软件 | 网络营销工具 | 网络营销软件 | 网站推广工具 | 网络推广软件 | 网络推广工具 | 网页推广软件 | 信息发布软件 | 网站推广工具 | 网页推广软件

Powered by Discuz! X3.4   © 2012-2020 Comsenz Inc.  慈众科技 - Collect from 深圳吉宝泰佛文化有限公司 公司地址:罗湖区黄贝街道深南东路集浩大厦A1403

返回顶部 返回列表