一個啥都沒有的Windows視窗 用於學習Windows程式的基本風格

來源:互聯網
上載者:User

(Windows可視化程式設計 Page45、Page46、Page47)

 

//------------------------------------------檔案wnd2.cpp----------------------------------------#include "wnd2.h" //程式中的標頭檔<br />//全域變數<br />char szTitle[]="簡單的Hello程式"; //標題條字串<br />char szWindowClass[]="W32"; //視窗類別名<br />char szMenuName[]="NULL"; //菜單名,本程式沒有菜單<br />//******************************************************************<br />//*主函數WinMain *<br />//*功能:初始化及註冊視窗類別、建立視窗,進入訊息迴圈及終止應用程式 *<br />//*參數:hInstance 當前執行個體 *<br />//* hPrevInstance 前一執行個體 *<br />//* lpCmdLine 命令列 *<br />//* nCmdShow 選擇顯示視窗或表徵圖 *<br />//*傳回值:msg.wParam *<br />//******************************************************************<br />int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)<br />{<br /> MSG msg; //聲明訊息結構對象<br /> InitApplication(hInstance); //註冊視窗<br /> //初始化<br /> if(!InitInstance(hInstance,nCmdShow))<br /> return FALSE;<br /> //訊息迴圈<br /> while(GetMessage(&msg,NULL,0,0)) //PostQuitMessage(0)結束訊息迴圈<br /> {<br /> TranslateMessage(&msg); //檢索訊息<br /> DispatchMessage(&msg); //將訊息間接傳給函數指標<br /> }<br />}<br />//******************************************************************<br />//*函數InitApplication *<br />//*功能:用來註冊視窗類別 *<br />//*參數:hInstance 當前執行個體 *<br />//*傳回值:如果成功,返回一個惟一的整數;如果失敗,返回0 *<br />//******************************************************************<br />ATOM InitApplication(HINSTANCE hInstance)<br />{<br /> WNDCLASS wc; //聲明視窗結構對象<br /> //初始化對象wc的域值<br /> wc.style=CS_HREDRAW | CS_VREDRAW;<br /> wc.lpfnWndProc=(WNDPROC)WndProc; //回呼函數的函數指標<br /> wc.cbClsExtra=0;<br /> wc.cbWndExtra=0;<br /> wc.hInstance=hInstance;<br /> wc.hIcon=LoadIcon(NULL,IDI_APPLICATION);<br /> wc.hCursor=LoadCursor(NULL,IDC_ARROW);<br /> wc.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);<br /> wc.lpszMenuName=szMenuName;<br /> wc.lpszClassName=szWindowClass;<br /> return RegisterClass(&wc); //註冊<br />}<br />//******************************************************************<br />//*函數InitInstance *<br />//*功能:用來建立主視窗 *<br />//*參數:hInstance 當前執行個體 *<br />//* nCmdShow 選擇顯示視窗或表徵圖 *<br />//*傳回值:建立成功返回非零值;否則返回0 *<br />//******************************************************************<br />BOOL InitInstance(HINSTANCE hInstance,int nCmdShow)<br />{<br /> HWND hWnd; //聲明視窗控制代碼<br /> //使用CreateWindow函數建立視窗並返回控制代碼<br /> hWnd=CreateWindow( //填函數參數<br /> szWindowClass, //視窗類別名<br /> szTitle, //標題條內容<br /> WS_OVERLAPPEDWINDOW| //顯示方式<br /> WS_VSCROLL|WS_HSCROLL, //具有水平和垂直捲軸<br /> 400, //X的起點座標<br /> 200, //y的起點座標<br /> 1024, //視窗寬度<br /> 768, //視窗高度<br /> NULL, //父視窗控制代碼<br /> NULL, //視窗菜單控制代碼<br /> hInstance, //執行個體控制代碼<br /> NULL //附加資料<br /> );<br /> if(!hWnd)<br /> return FALSE; //判斷是否建立成功<br /> ShowWindow(hWnd,nCmdShow); //建立成功則顯示視窗<br /> UpdateWindow(hWnd); //送出WM_PAINT訊息<br /> return TRUE; //返回建立成功標誌<br />}</p><p>//------------------------------------------檔案wnd21.cpp----------------------------------------<br />#include "wnd2.h" //程式的標頭檔<br />//******************************************************************<br />//*視窗函數WndProc<br />//*功能:處理主視窗發生的資訊<br />//*參數:hWnd 訊息的視窗控制代碼<br />//* message 訊息<br />//* wParam MSG訊息結構中的域<br />//* lParam MSG訊息結構中的域<br />//*傳回值:0<br />//******************************************************************<br />LRESULT CALLBACK WndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)<br />{<br /> PAINTSTRUCT ps;<br /> HDC hdc;<br /> char szHello[]="Hello"; //輸出字串的內容<br /> switch(message) //篩選資訊<br /> {<br /> case WM_PAINT: //主視窗畫圖訊息<br /> hdc=BeginPaint(hWnd,&ps);<br /> TextOut(hdc,80,150,szHello,strlen(szHello)); //輸出字串<br /> EndPaint(hWnd,&ps);<br /> break;<br /> case WM_DESTROY: //視窗已經撤銷,準備結束程式運行<br /> PostQuitMessage(0); //發送WM_QUIT訊息,結束訊息迴圈<br /> break;<br /> default:<br /> return DefWindowProc(hWnd,message,wParam,lParam);<br /> }<br /> return 0;<br />}</p><p>//------------------------------------------檔案wnd2.h----------------------------------------<br />#include <windows.h> //Windows程式的標頭檔<br />//全域變數<br />extern char szTitle[]; //標題條字串<br />extern char szWindowClass[]; //視窗類別名</p><p>//函數原型聲明<br />ATOM InitApplication(HINSTANCE);<br />BOOL InitInstance(HINSTANCE,int);<br />LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);<br />int APIENTRY WinMain(HINSTANCE,HINSTANCE,LPSTR,int);<br />

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.