天天看點

win32應用程式_使用visual studio 2019 建立簡單的Windows視窗「Win32」

今天Bili發現網上好多MFC代碼都不能用,給大家分享一個簡單的MFC視窗語言:
win32應用程式_使用visual studio 2019 建立簡單的Windows視窗「Win32」

學的不僅僅是技術,更是夢想

win32應用程式_使用visual studio 2019 建立簡單的Windows視窗「Win32」

學的不僅僅是技術,更是夢想

win32應用程式_使用visual studio 2019 建立簡單的Windows視窗「Win32」

學的不僅僅是技術,更是夢想

win32應用程式_使用visual studio 2019 建立簡單的Windows視窗「Win32」

學的不僅僅是技術,更是夢想

複制代碼ing:#include//底層實作視窗的頭檔案//6.處理視窗過程//CALLBACK 代表_stdcall 參數的傳遞順序:從右到左依次入棧,并且函數傳回前清空堆棧LRESULTCALLBACK WindowProc(HWND hand,//消息所屬視窗句柄UINT uMsg, //具體消息名稱 WM_XXXX消息名WPARAM wParam, //鍵盤附加消息LPARAM lParam) { //滑鼠附加消息switch (uMsg){case WM_CLOSE://所有以XXXXWindow為結尾的方法,都不會進入到消息隊列中,而是直接執行DestroyWindow(hand);//發送另一個消息WM_DESTROYbreak;case WM_DESTROY:PostQuitMessage(0);break;case WM_LBUTTONDOWN://滑鼠左鍵按下{int xPos = LOWORD(lParam);int yPos = HIWORD(lParam);char buf[1024];wsprintf(buf, TEXT("x = %d,y = %d"),xPos,yPos);MessageBox(hand, buf, TEXT("按下滑鼠左鍵"), MB_OK);break;}case WM_KEYDOWN://鍵盤{MessageBox(hand, TEXT("鍵盤"), TEXT("按下鍵盤"), MB_OK);break;}case WM_PAINT://畫圖{PAINTSTRUCT ps;//畫圖結構體HDC hdc = BeginPaint(hand, &ps);TextOut(hdc, 100, 100,TEXT("hello"), strlen("hello"));EndPaint(hand, &ps);break;}default:break;}//傳回值用預設處理方式return DefWindowProc(hand, uMsg, wParam, lParam);}/*程式入口函數_In_ HINSTANCE hInstance,//應用程式執行個體句柄_In_opt_ HINSTANCE hPrevInstance,//上一個應用程式句柄,在WIN32環境下一般為NULL,不起作用了_In_ LPSTR lpCmdLine,//char * argv[]_In_ int nShowCmd//顯示指令 最大化、最小化、正常WINAPI 代表_stdcall 參數的傳遞順序:從右到左依次入棧,并且函數傳回前清空堆棧*/int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) {/*1.設計視窗2.注冊視窗3.建立視窗4.顯示和更新5.通過循環取消息6.處理消息(視窗過程)*///1.設計視窗WNDCLASS wc;wc.cbClsExtra = 0;//類的額外的記憶體wc.cbWndExtra = 0;//視窗額外的記憶體wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); //設定背景wc.hCursor = LoadCursor(NULL, IDC_HAND);//設定光标,如果第一個參數為null,代表使用系統提供的光标wc.hIcon = LoadIcon(NULL, IDI_ERROR);//圖示,如果第一個參數為null,代表使用系統提供的圖示wc.hInstance = hInstance; //應用程式的執行個體句柄,傳入winmain的形參即可wc.lpfnWndProc = WindowProc;//回調函數 視窗過程wc.lpszClassName = TEXT("WIN");//指定視窗名稱wc.lpszMenuName = NULL;//菜單名稱wc.style = 0;//顯示風格,0代表預設//2.注冊視窗RegisterClass(&wc);//3.建立視窗/*lpszClassName,//類名lpWindowName,//标題名dwStyle,//風格 WC_OVERLAPPEDWINDOWx, //坐标 CW_USERDEFAULTy, //坐标nWidth,//寬nHeight,//高hWndParent, //父視窗 nullhMenu,//菜單 nullhInstance, //執行個體句柄lpParam//附加值 滑鼠附加值*/HWND hwnd = CreateWindow(wc.lpszClassName, TEXT("WINDOWS"), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL);//4.顯示和更新ShowWindow(hwnd, SW_SHOWNORMAL);UpdateWindow(hwnd);/*HWND hwnd;//主視窗句柄UINT message;//具體消息名稱WPARAM wParam;//附加消息 鍵盤消息LPARAM lParam;//附加消息 滑鼠消息DWORD time;//消息産生時間POINT pt;*///附加消息 滑鼠消息 x,y//5.通過循環取消息MSG msg;/*_Out_ LPMSG lpMsg,//消息_In_opt_ HWND hWnd,//捕獲視窗 填null表示捕獲所有視窗_In_ UINT wMsgFilterMin,//最大和最小的過濾消息 一般填0_In_ UINT wMsgFilterMax);*/while (GetMessage(&msg, NULL, 0, 0)){/*if (GetMessage(&msg, NULL, 0, 0) == FALSE) {break;}*///翻譯消息TranslateMessage(&msg);//不是false//分發消息DispatchMessage(&msg);}return 0;}