2 視窗與訊息

來源:互聯網
上載者:User

標籤:

案例代碼
#include <Windows.h>LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){    HDC hdc;    PAINTSTRUCT ps;    RECT rect;    switch(message){    case WM_CREATE:        PlaySound(TEXT("hellowin.wav"),NULL,SND_FILENAME|SND_ASYNC);        return 0;    case WM_PAINT:        hdc = BeginPaint(hwnd,&ps);        GetClientRect(hwnd,&rect);     DrawText(hdc,TEXT("Hello,windows98!"),-1,&rect,DT_SINGLELINE|DT_CENTER|DT_VCENTER);        EndPaint(hwnd,&ps);        return 0;    case WM_DESTROY:        PostQuitMessage(0);        return 0;    }     return DefWindowProc(hwnd,message,wParam,lParam);}int WINAPI WinMain(HINSTANCE hinstance,HINSTANCE preHinstance,PSTR cmdLine,int icmdShow){        static TCHAR szAppName[] = TEXT("helloWin");    HWND hwnd;//畫布    MSG msg;//資訊    WNDCLASS wndclass;//表單類別
//對wndclass進行初始化開始 //horizontal redraw //vertical redraw wndclass.style = CS_HREDRAW | CS_VREDRAW; //視窗類別確定了處理視窗訊息的視窗過程,實際是指向該函數的指標 wndclass.lpfnWndProc = WndProc; wndclass.cbClsExtra = 0; wndclass.cbWndExtra = 0; //當前應用程式執行個體控制代碼 wndclass.hInstance = hinstance; //載入表徵圖,獲得表徵圖控制代碼以供程式使用 //針對函數LoadIcon,如果要載入本程式內的表徵圖,需將NULL換位本程式執行個體的控制代碼 //第二個參數用於識別該表徵圖 //IDI ID for an icon wndclass.hIcon = LoadIcon(NULL,IDI_APPLICATION); //載入滑鼠游標,獲得滑鼠控制代碼以供程式使用 wndclass.hCursor = LoadCursor(NULL,IDC_ARROW); //為該視窗的客戶區指定背景色 //handle to a brush //GetStockObject,Windows API函數。該函式檢索預定義的備用筆、刷子、字型或者調色盤的控制代碼。 wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); wndclass.lpszMenuName = NULL; wndclass.lpszClassName = szAppName; //在建立應用程式視窗之前,必須調用函數RegisterClass來註冊視窗類別。 if(!RegisterClass(&wndclass))//為應用視窗註冊一個視窗類別 { MessageBox(NULL,TEXT("The program requires windows NT!"),szAppName,MB_ICONERROR); return 0; } //基於視窗類別建立一個視窗 //handle to the window hwnd = CreateWindow(szAppName,// 視窗類別名稱 TEXT("The Hello program"),// 視窗標題 WS_OVERLAPPEDWINDOW,// 視窗風格 CW_USEDEFAULT,// 初始x座標 CW_USEDEFAULT,// 初始y座標 CW_USEDEFAULT,// 初始x方向尺寸 CW_USEDEFAULT,// 初始y方向尺寸 NULL,// 父視窗控制代碼 NULL,// 視窗菜單控制代碼 hinstance, // 視窗執行個體控制代碼 NULL); // 建立參數 //在CreateWindow完成之後只是在記憶體中儲存了createWindow的一些資訊,如果要在螢幕中顯示視窗 ShowWindow(hwnd,SW_SHOWNORMAL); //指示視窗對自身進行重繪 UpdateWindow(hwnd); //從訊息佇列中擷取資訊,一直檢索 //第二個參數~第四個參數均製為NULL或0表明該程式希望擷取由該程式所建立的所有視窗訊息 while(GetMessage(&msg,NULL,0,0)) { //翻譯一些鍵盤訊息 //將msg結構返給windows以進行某些鍵盤訊息的轉換 TranslateMessage(&msg); //將訊息發送給視窗過程 DispatchMessage(&msg); } //return msg.wParam; return 0;}
提示

(一)如果想要調用PlaySound函數,需要為環境添加winmm.lib的引用,否則會出現如下錯誤:

無法解析的外部符號 [email protected],該符號在函數 "long __stdcall WndProc(struct HWND__ *,unsigned int,unsigned int,long)" ([email protected]@[email protected]@[email protected]) 中被引用。

具體配置步驟如下:

①:找到方案總管,對自己的項目點擊右鍵,選擇屬性

②:找到配置屬性下的連接器下的輸入

 

③:選擇附加依賴項後的小三角

④:添加winmm.lib,點擊確定,應用即可

⑤:點擊運行,即可得到想要的效果

 

(二)我用的是windows XP經典開機音樂代替hellowin.wav,好資源是需要分享滴,在此分享給大家:helloWin

 


 

2 視窗與訊息

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.