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開啟程式文本,自己研讀一下,瞭解了程式的工作原理,自然就知道什麼時候程式輸入輸出的資料。