Win32_Window(day02)
--- 窗口创建函数 ---
#include <Windows.h> //窗口处理函数 HINSTANCE g_hIns; LRESULT CALLBACK WndProc(HWND hWnd,UINT msgID, WPARAM wParam,LPARAM IParam) { switch (msgID) { case WM_DESTROY: PostQuitMessage(0);//消息窗口关闭按钮点击后,退出程序 break; } return DefWindowProc(hWnd,msgID,wParam,IParam); //给各种消息做默认处理 } //注册窗口 void Register(LPSTR IpClassName,WNDPROC wndProc) { WNDCLASSEX wce = {0}; wce.cbSize = sizeof(wce); wce.cbClsExtra = 0; wce.cbWndExtra = 0; wce.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); wce.hCursor = NULL; wce.hIcon = NULL; wce.hIconSm = NULL; wce.hInstance = g_hIns; wce.lpfnWndProc = wndProc; wce.lpszClassName = IpClassName; wce.lpszMenuName = NULL ; wce.style = CS_HREDRAW|CS_VREDRAW; RegisterClassEx(&wce); } //创建窗口 HWND CreateMain(LPSTR IpClassName,LPSTR IpWndName) { HWND hWnd = CreateWindowEx(0,IpClassName,IpWndName,WS_OVERLAPPEDWINDOW, 100,100,700,500,NULL,NULL,g_hIns,NULL); return hWnd; } //显示窗口 void Display(HWND hWnd) { ShowWindow(hWnd,SW_SHOW); UpdateWindow(hWnd); //重绘窗口 } //消息循环 void Message() { MSG nMsg = {0}; while(GetMessage(&nMsg,NULL,0,0)) { TranslateMessage(&nMsg);//翻译消息 DispatchMessage(&nMsg);//派送消息 } } int CALLBACK WinMain(HINSTANCE hIns,HINSTANCE hPreIns,LPSTR IpCmdline,int nCmdShow) { g_hIns = hIns; //注册窗口类 Register("Main",WndProc); //创建窗口 HWND hWnd = CreateMain("Main","Window"); //显示窗口 Display(hWnd); //消息循环 Message(); return 0; }
——Windows下编码
1.Windows下的编码默认使用的是 UNICODE,两个字节!这样就可以防止乱码的情况的出现!但是UNICODE 这种编码方式很费内存资源
2.编码的发展:
由于计算机是由美国发明的,所以当时只能支持英语,但是说英语的国家很少,再者当时计算机的硬件是十分昂贵!所以先发展的ASC码--> ASCII码 --> UNICODE
ASC码 : 7位 -- 128个字符(bit)
ASCII码:7+1 位 -- 256 个字符(bit)
UNICODE 16位 -- 这就有很多字符了。但是UNICODE编码非常耗费内存资源,随着硬件的发展,UNICODE编码克服了这一难题逐渐取代了传统编码,这是因为这种编码可以支持世界上所有国家的语言,不会造成乱码的现象,所以这是一个国际化编码。
——Windows 下类型
TPSTR --- char*
TPCSTR const char*
wchar_t --- unsigned short 宽字节char -- 占2个字节
......
——Windows 下打印
1.wprintf
2.printf ---标准C打印
3.Console 打印
wchar_t* pszText = L"阿海"; //wprintf(L"%s\n",pszText); HANDLE hStd = GetStdHandle(STD_OUTPUT_HANDLE); WriteConsole(hStd,pszText,wcslen(pszText),NULL,NULL);