Windows程式執行過程

來源:互聯網
上載者:User

標籤:對象   關閉   app   break   cmd   track   UI   content   callback   

Windows應用程式:

WinMain函數(入口函數):

1。

設計表單類,注冊表單類。WNDCLASS

2。

建立表單,顯示及更新表單。

3。

訊息迴圈。

表單過程函數(回呼函數):WindowProc

PS:Dos程式入口函數為main,Windows程式入口為WinMain,都是由系統直接調用。

windows程式執行過程

#include<windows.h>#include<stdio.h>LRESULT CALLBACK WinSunProc(     //表單過程函數(回呼函數)聲明HWND hwnd,    UINT uMsg,    WPARAM wParam,    LPARAM lParam);int WINAPI WinMain(            //WinMain函數。windows應用程式的入口HINSTANCE hInstance,    HINSTANCE hPrevInstance,    LPSTR lpCmdLine,    int nCmdShow){WNDCLASS wndcls;          //執行個體化一個表單類對象,並設定各個屬性wndcls.cbClsExtra = 0;wndcls.cbWndExtra = 0;wndcls.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);wndcls.hCursor = LoadCursor(NULL,IDC_CROSS);wndcls.hIcon = LoadIcon(NULL,IDI_ERROR);wndcls.hInstance = hInstance;wndcls.lpfnWndProc = WinSunProc;wndcls.lpszClassName = "hepengtao";wndcls.lpszMenuName = NULL;wndcls.style = CS_HREDRAW | CS_VREDRAW;RegisterClass(&wndcls);  //注冊表單類HWND hwnd;hwnd = CreateWindow("hepengtao","表單標題",WS_OVERLAPPEDWINDOW,  //建立表單0,0,600,400,NULL,NULL,hInstance,NULL);ShowWindow(hwnd,SW_SHOWNORMAL);  //顯示表單UpdateWindow(hwnd);             //更新表單MSG msg;while(GetMessage(&msg,NULL,0,0)) //從訊息佇列中取出訊息,當得到 WM_QUIT 訊息時返回0{TranslateMessage(&msg);//按下鍵盤按鍵時。系統得到 WM_KEYDOWN 和 WM_KEYUP 訊息。經過該函數轉變為 WM_CHAR 訊息DispatchMessage(&msg); //將得到的訊息傳遞給回呼函數}return 0;}LRESULT CALLBACK WinSunProc(//定義表單過程函數(回呼函數)HWND hwnd,    UINT uMsg,    WPARAM wParam,    LPARAM lParam){switch(uMsg){case WM_CHAR:  //鍵盤按下字母后,發送 WM_CHAR 訊息char szChar[20];sprintf(szChar,"char is %d",wParam);MessageBox(hwnd,szChar,"彈窗標題",0);break;case WM_LBUTTONDOWN:  //滑鼠左鍵按下後。發送 WM_LBUTTONDOWN 訊息MessageBox(hwnd,"mouse clicked","彈窗標題",0);HDC hdc;hdc = GetDC(hwnd);TextOut(hdc,0,50,"I am hepengtao.",strlen("I am hepengtao."));ReleaseDC(hwnd,hdc);break;case WM_PAINT:   //表單重繪時,發送 WM_PAINT 訊息HDC hDC;PAINTSTRUCT ps;hDC = BeginPaint(hwnd,&ps);TextOut(hDC,0,0,"Hello,world!",strlen("Hello,world!"));EndPaint(hwnd,&ps);break;case WM_CLOSE:  //關閉button按下後,發送 WM_CLOSE 訊息if(IDYES == MessageBox(hwnd,"確定要關閉表單?" ,"彈窗標題",MB_YESNO)){DestroyWindow(hwnd); //銷毀表單,並發送 WM_DESTORY 訊息}break;case WM_DESTROY: //運行DestoryWindow()函數時。發送 WM_DESTORY 訊息PostQuitMessage(0); //程式請求退出,發送 WM_QUIT 訊息break;default:return DefWindowProc(hwnd,uMsg,wParam,lParam); //使用者不關心的訊息,由作業系統預設處理}return 0;}


Windows程式執行過程

相關文章

聯繫我們

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