MFC_1——采用windows API函數來生成一個窗口顯示helloword


//采用windows API函數來生成一個窗口顯示helloword:
#include <windows.h>   
//過程函數的聲明 
LRESULT CALLBACK myWndProc(HWND hWindow, UINT msg, WPARAM wParam, LPARAM lParam);  
 
//進入WinMain函數
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)     
{     
    const static TCHAR appName[] = TEXT("Hello world");
 
    //1.【初始化WNDCLASSEX,先初始化一個窗口類】
    WNDCLASSEX myWin;     
    myWin.cbSize = sizeof(myWin);     
    myWin.style = CS_HREDRAW | CS_VREDRAW;     
    myWin.lpfnWndProc = myWndProc;     
    myWin.cbClsExtra = 0;     
    myWin.cbWndExtra = 0;     
    myWin.hInstance = hInstance;     
    myWin.hIcon = 0;     
    myWin.hIconSm  = 0;     
    myWin.hCursor = 0;     
    myWin.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);     
    myWin.lpszMenuName = 0;     
    myWin.lpszClassName = appName;     
    //2.【Register ,調用RegisterClassEx函數注冊窗口類】    
    if (!RegisterClassEx(&myWin)) return 0; 
	//3.【具體的創建我們所要創建的那個窗口】
    const HWND hWindow = CreateWindow(     
        appName,     
        appName,     
        WS_OVERLAPPEDWINDOW,     
        CW_USEDEFAULT,     
        CW_USEDEFAULT,     
        CW_USEDEFAULT,     
        CW_USEDEFAULT,     
        0,     
        0,     
        hInstance,     
        0); 
    //調用ShowWindow和UpdateWindow函數顯示並更新窗口
    /*進入消息循環。關於消息循環再簡單說下,Windows應用程序是消息驅動的,
    系統或用戶讓應用程序進行某項操作或完成某個任務時會發送消息,
    進入程序的消息隊列,然后消息循環會將消息隊列中的消息取出,
    交予相應的窗口過程處理,此程序的窗口過程函數就是myWndProc函數,
    窗口過程函數處理完消息就完成了某項操作或任務。
    本例是要顯示“HELLO WORLD”字符串,UpdateWindow函數會發送WM_PAINT消息,
    但是此消息不經過消息隊列而是直接送到窗口過程處理,
    在窗口過程函數中最終繪制了“HELLO WORLD”字符串。*/
	//4.顯示窗口
    ShowWindow(hWindow,iCmdShow);    
    //5.更新窗口(本來一般這個函數是用來刷新窗口的,而在這里,用來接收消息,等對消息的操作)
	UpdateWindow(hWindow);//更新窗口
    {     
        MSG msg;     
        while(GetMessage(&msg,0,0,0))     
        {     
            TranslateMessage(&msg);     
            DispatchMessage(&msg);     
        }     
        return (int)msg.wParam;     
    }  
}     
 
//過程函數的定義
LRESULT CALLBACK myWndProc(HWND hWindow, UINT msg, WPARAM wParam, LPARAM lParam)     
{     
    if (msg==WM_PAINT)     
    {     
        PAINTSTRUCT ps;     
        const HDC hDC = BeginPaint(hWindow,&ps);     
        RECT rect;     
        GetClientRect(hWindow,&rect);     
        DrawText(hDC,TEXT("HELLO WORLD"),-1,&rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER);     
        EndPaint(hWindow,&ps);     
        return 0;     
    }     
    else if (msg==WM_DESTROY)     
    {     
        PostQuitMessage(0);     
        return 0;     
    }     
    return DefWindowProc(hWindow,msg,wParam,lParam);     
} 

  


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com