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
",pszText);
    HANDLE hStd = GetStdHandle(STD_OUTPUT_HANDLE);
    WriteConsole(hStd,pszText,wcslen(pszText),NULL,NULL);

        

原文地址:https://www.cnblogs.com/Kernel001/p/7744819.html