windows程式設計 建立一個新的視窗
阿新 • • 發佈:2018-11-21
#include <windows.h> LRESULT CALLBACK myProc(HWND, UINT, WPARAM, LPARAM); int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow){ static TCHAR szClassName[] = TEXT("cabbage"); MSG msg;//訊息結構 HWND hwnd;//視窗控制代碼 WNDCLASS wc;//視窗類別結構 wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);//視窗背景顏色 wc.hCursor = LoadCursor(NULL, IDC_ARROW);//游標 wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);//小圖示 wc.hInstance = hInstance;//例項控制代碼 wc.lpfnWndProc = myProc;//回撥函式 wc.lpszClassName = szClassName;//類名 wc.lpszMenuName = NULL;//選單 wc.style = CS_VREDRAW | CS_HREDRAW; //註冊視窗 為程式視窗註冊視窗類別 if(!RegisterClass(&wc)){ MessageBox(NULL, TEXT("註冊視窗失敗"), szClassName, MB_ICONERROR); return 0; } //建立視窗 根據視窗類別建立一個視窗 hwnd = CreateWindow(szClassName,//視窗類名 TEXT("hello insert"),//視窗標題 WS_OVERLAPPEDWINDOW,//視窗顯示樣式 CW_USEDEFAULT, CW_USEDEFAULT,//視窗在顯示器上顯示離左上角的距離,橫軸為x,縱軸為y CW_USEDEFAULT, CW_USEDEFAULT,//寬口寬度和高度 NULL, NULL, hInstance, NULL);// //顯示視窗 在螢幕上顯示視窗 ShowWindow(hwnd, nCmdShow); //重新整理視窗 只是視窗自我更新 UpdateWindow(hwnd); //訊息迴圈 while(GetMessage(&msg, NULL, 0, 0)){//獲取訊息 從訊息佇列中取得訊息 TranslateMessage(&msg);//翻譯訊息 轉譯某些鍵盤訊息 DispatchMessage(&msg);//分發訊息 將訊息傳送給視窗訊息處理程式 } return 0; } LRESULT CALLBACK myProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam){ PAINTSTRUCT ps;//繪圖結構 HDC hdc;//裝置內容控制代碼 RECT rect;//矩形結構 switch(msg){ case WM_PAINT: hdc = BeginPaint(hwnd, &ps);//開始繪製視窗 GetClientRect(hwnd, &rect); DrawText(hdc, TEXT("你好,愛白菜的小昆蟲!"), -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER); EndPaint(hwnd, &ps);//結束繪製視窗 break; case WM_DESTROY://銷燬視窗訊息 PostQuitMessage(0);//丟擲退出程式訊息 break; } //返回執行內定的訊息處理 return DefWindowProc(hwnd, msg, wParam, lParam); }
執行結果