日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

纯C++创建Windows窗体(理解WinMain()与WndProc())

發布時間:2023/12/18 c/c++ 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 纯C++创建Windows窗体(理解WinMain()与WndProc()) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


一直比較關注本質的東西。VC封裝了很多,想了解一下比較麻煩。

先從了解WinMain()入口函數與WndProc()消息處理函數開始吧。

大氣象 #include?<windows.h>
#include?
<mmsystem.h>
LRESULT?CALLBACK?WndProc?(HWND,?UINT,?WPARAM,?LPARAM);?
//聲名消息處理函數(處理windows和接收windows消息)
//hInstance:系統為窗口分配的實例號,2和3忘了.4是顯示方式
int?WINAPI?WinMain?(HINSTANCE?hInstance,?HINSTANCE?hPrevInstance,PSTR?szCmdLine,?int?iCmdShow)
{
????
static?TCHAR?szAppName[]?=?TEXT?("HelloWin")?;?//窗體名
????HWND?hwnd;//句柄
????MSG?msg;//消息體
????WNDCLASS?wndclass;//這義一個窗體類實例
????
//設置窗體參數
????wndclass.style?=?CS_HREDRAW?|?CS_VREDRAW?;?//樣式
????wndclass.cbClsExtra???=?0?;
????wndclass.cbWndExtra???
=?0?;
????wndclass.hInstance?
=?hInstance?;//窗體實例名,由windows自動分發
????wndclass.hIcon?=?LoadIcon?(NULL,?IDI_APPLICATION)?;//顯示上面的圖標titlte
????wndclass.hCursor?=?LoadCursor?(NULL,?IDC_ARROW)?;//窗口光標
????wndclass.hbrBackground=?(HBRUSH)?GetStockObject?(WHITE_BRUSH)?;//背景刷
????wndclass.lpszMenuName=NULL;
????wndclass.lpfnWndProc
=WndProc;//設置窗體接收windws消息函數
????wndclass.lpszClassName=?szAppName;//窗體類名
????if?(!RegisterClass?(&wndclass))//注冊窗體類
????{
????????MessageBox?(?NULL,?TEXT?(
"This?program?requires?Windows?NT!"),?szAppName,?MB_ICONERROR)?;
????????
return?0?;
????};
????
//創建一個窗體。已分配內存。返回一個窗體句柄
????hwnd?=?CreateWindow(?szAppName,??????//?window?class?name
????????TEXT?("The?Hello?Program"),???//?window?caption
????????WS_OVERLAPPEDWINDOW,?//?window?style
????????CW_USEDEFAULT,//?initial?x?position
????????CW_USEDEFAULT,//?initial?y?position
????????CW_USEDEFAULT,//?initial?x?size
????????CW_USEDEFAULT,//?initial?y?size
????????NULL,?//?parent?window?handle
????????NULL,?//?window?menu?handle
????????hInstance,?//?program?instance?handle
????????NULL)?;
????ShowWindow?(hwnd,iCmdShow);
//顯示窗口
????UpdateWindow?(hwnd)?;//更新窗體
????while(GetMessage(&msg,NULL,0,0))
????{
????????TranslateMessage?(
&msg);//翻譯消息并發送到windows消息隊列
????????DispatchMessage?(&msg)?;//接收信息
????}
????
return?msg.wParam?;
}

LRESULT?CALLBACK?WndProc?(HWND?hwnd,?UINT?message,?WPARAM?wParam,?LPARAM?lParam)
//消息的處理程序

{

????HDC???????????????????hdc?;

????PAINTSTRUCT?ps?;

????RECT??????????rect?;


????
switch?(message)

????{

????
case?WM_CREATE:
????????
//PlaySound(TEXT("HelloWin.wav"),NULL,SND_FILENAME|SND_ASYNC);

????????
return?0?;


????
case???WM_PAINT:

????????hdc?
=?BeginPaint?(hwnd,?&ps)?;
????????TextOut(hdc,
0,0,"大氣象",strlen("大氣象"));
????????EndPaint?(hwnd,?
&ps)?;

????????
return?0?;


????
case???WM_DESTROY:

????????PostQuitMessage?(
0)?;

????????
return?0?;

????}

????
return?DefWindowProc?(hwnd,?message,?wParam,?lParam)?;

}

?新建Visual C++空項目。在源文件目錄里新建一個cpp文件。

輸入以上代碼,直接運行。如圖:

總結

以上是生活随笔為你收集整理的纯C++创建Windows窗体(理解WinMain()与WndProc())的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。