当前位置:首页 > Windows程序 > 正文

win程序入门win32基本窗口框架全解析

2021-03-28 Windows程序

    在VC++6.0环境中创建win32程序

技术分享

选择第三个这时可以运行看到hello world了。

技术分享

程序解析:

#define MAX_LOADSTRING 100  \\定义最大字长</span> HINSTANCE hInst; \\当前进程资源的句柄 TCHAR szTitle[MAX_LOADSTRING];   \\窗口上方显示的标题 TCHAR szWindowClass[MAX_LOADSTRING]; \\窗口定义的名称

实际上前面第一行的句柄就相当于ID号,每运行一个进程都需要系统分配一个编码来标示它。TCHAR是双字节的字符类型,char为单字节。


这是win32程序的主程序相当于main:

int APIENTRY WinMain(HINSTANCE hInstance,  //当前实例的句柄(标志)windows是多任务操作系统,一个程序可以运行多个实例,为了区分它 HINSTANCE hPrevInstance,  //前一个实例的句柄 LPSTR lpCmdLine, //长字符串指针数据类型,传给WinMain命令 int nCmdShow) //指定窗口如何显示,应用程序常不理会该值 {. MSG msg;  //消息数据类型 HACCEL hAccelTable;  //存放键盘加速键表的句柄,键盘加速键是应用程序使用的快捷键如word下ALT+F查找 LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING); //将IDS_APP_TITLE里的内容载入字符串szTitle中 LoadString(hInstance, IDC_TEST, szWindowClass, MAX_LOADSTRING); //将IDC_TEST里的内容载入字符串szWindowClass中 MyRegisterClass(hInstance);  //注册窗口 if (!InitInstance (hInstance, nCmdShow))   //启动窗口,失败则程序退出         {            return FALSE;    }    hAccelTable = LoadAccelerators(hInstance, (LPCTSTR)IDC_TEST); //载入快捷键表,该表能在资源VC的视图中看到 while (GetMessage(&msg, NULL, 0, 0)) //消息循环,如果得到退出消息返回0 {            if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg)) //如果是不是快捷键则进入if,是则直接发给窗口过程    {        TranslateMessage(&msg);  //翻译消息        DispatchMessage(&msg);  //发送消息给窗口过程            } } return msg.wParam;  //返回退出 }
窗口注册函数
ATOM MyRegisterClass(HINSTANCE hInstance)  //ATOM为unsigned short类型 { WNDCLASSEX wcex;  //定义一个窗口类 wcex.cbSize = sizeof(WNDCLASSEX); //窗口大小 wcex.style = CS_HREDRAW | CS_VREDRAW; //窗口风格,用|符号能够同时选中,具体类型看下面的图 wcex.lpfnWndProc = (WNDPROC)WndProc;  //窗口过程函数,下面有定义 wcex.cbClsExtra = 0;  //附加字节,一般为0 wcex.cbWndExtra = 0;  //附加字节,一般为0 wcex.hInstance = hInstance;  //实例句柄 wcex.hIcon = LoadIcon(hInstance, (LPCTSTR)IDI_TEST);  //窗口图标,可以在资源视图中改 wcex.hCursor = LoadCursor(NULL, IDC_ARROW);  //窗口中光标的风格   wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);  //窗口画刷颜色 wcex.lpszMenuName = (LPCSTR)IDC_TEST;  //菜单资源名称,可以在资源视图中改 wcex.lpszClassName = szWindowClass;  //窗口类名称 wcex.hIconSm = LoadIcon(wcex.hInstance, (LPCTSTR)IDI_SMALL);   //窗口小图标 return RegisterClassEx(&wcex);  //注册 }

窗口风格:

技术分享


启动窗口:

BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) //启动窗口函数,第二个参数为启动类型 { HWND hWnd;  //定义窗口句柄(标识) hInst = hInstance; // Store instance handle in our global variable,,翻译过来是将记录当前实例的句柄设置为该实例 hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,  //创建窗口 CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL); if (!hWnd)  //判断是否创建成功 { return FALSE; } ShowWindow(hWnd, nCmdShow);  //显示窗口 UpdateWindow(hWnd);  //刷新窗口 return TRUE; }


温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/69348.html