Windows程式運行過程,windows程式運行

來源:互聯網
上載者:User

Windows程式運行過程,windows程式運行

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:  //關閉按鈕按下後,發送 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運行程式的過程?

並非如此,編譯器大體分為編譯型的和解釋型的兩種。編譯型的如C語言程式,經過編譯連結後形成可執行檔二進位代碼,windows可以直接運行;而解釋型的如java,它是形成一種中間代碼,執行的時候需要靠java運行環境(jre)一邊解釋一邊執行,這也是為何運行java程式電腦上必須有jre的原因。
 
怎獲得windows應用程式執行過程中輸入輸出的資料?

一般可用VC開啟程式文本,自己研讀一下,瞭解了程式的工作原理,自然就知道什麼時候程式輸入輸出的資料。
 

聯繫我們

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