控制台程序
窗口程序
库程序:静态库程序,动态库程序
编译工具:
编译器cl.exe
链接器link.exe
资源编译器rc.exe
库:
kernel32.dll - 提供核心的API,例如进程、线程、内存管理等;
user32.dll - 提供窗口、消息等API;
gdi32.dll - 绘图相关的API。
头文件:
windef.h - windows数据类型;
winbase.h - kernel32 API的头文件;
wingdi.h - gdi32 API的头文件;
winuser.h - user32 API的头文件;
winnt.h - Unicode字符集文件;
windows.h - 所有windows头文件的集合。
1、编码历史
ASC->ASCII->DBCS->UNICODE
windows上unicode一般用utf-16,中英文都为双字节。
2、宽字节字符
wchar_t每个字符占2个字节
char每个字符占1个字节
wchar_t实际是unsigned short类型,定义时需要增加“L”通知编译器按照双字节编译字符串,采用Unicode编码。
需要使用支持wchar_t函数操作宽字节字符串。例如:
const wchar_t* pwszText = L"Hello wchar",
wprintf(L"%sn", pwszText);
如果分不清用char还是wchar_t,可以使用TCHAR,TCHAR是微软用宏定义的推导字符类型,。
const TCHAR* tstr = __TEXT(“hello tchar”);
#ifdef UNICODE
wprintf(L"%s, %dn", tstr, wcslen(tstr));
#else
printf(“%s, %dn”, tstr, strlen(tstr));
#endif
3、系统调用函数的参数类型
LPSTR == char* LPCSTR == const char*
LPWSTR == wchar_t* LPCWSTR == const wchar_t*
LPTSTR == TCHAR* LPCTSTR == const TCHAR*
1、创建入口函数
2、注册窗口类
3、创建窗口
4、显示窗口
5、消息循环
https://docs.microsoft.com/zh-cn/windows/win32/winmsg/about-window-classes
1、概念
窗口类是包含了窗口各种参数信息的数据结构;
每个窗口都具有窗口类,基于窗口类创建窗口;
每个窗口类都具有一个名称,使用前必须注册到系统。
2、分类
系统窗口类
| 系统窗口类 | 说明 |
|Button|按钮的类|
| ComboBox | 组合框的类 |
| Edit | 编辑控件的类 |
|ListBox|列表框的类|
| MDIClient | MDI客户端窗口的类 |
|ScrollBar| 滚动条的类 |
|Static|静态控件的类|
应用程序全局类
应用程序本地类
style窗口类分格
应用程序全局窗口类的注册,需要在窗口类的分格中增加CS_GLOBALCLASS。
例如:
WNIDCLASS wc{0};
wc.style = …|CS_GLOBALCLASS;
应用程序局部窗口类,在注册窗口类时,不添加CS_GLOBALCLASS风格。
其它分格:
CS_HREDRAW - 当窗口水平变化时,窗口重新绘制;
CS_VERDRAW - 当窗口垂直变化时,窗口重新绘制;
CS_DBLCLKS - 允许窗口接收鼠标双击;
CS_NOCLOSE - 窗口没有关闭按钮。
CreateWindow(); CreateWindowEx(); 创建子窗口: 设置父窗口句柄; 窗口风格增加WS_CHILD | WS_VISIBLE 一个窗口类可以用来创建多个窗口。八、消息
消息组成
窗口句柄
消息ID
消息的两个参数
消息产生的时间
消息产生时的鼠标位置
消息的作用
当系统通知窗口工作时,就采用消息的方式派发给窗口。
typedef struct tagMSG {
HWND hwnd;
UINT message;
WPARAM wParam;
LPARAM lParam;
DWORD time;
POINT pt;
} MSG;



