国产午夜成人免费看片无遮挡_日本免费xxxx色视频_免费人成网上在线观看_黄网址在线永久免费观看

當前位置:雨林木風下載站 > 技術開發教程 > 詳細頁面

BCB完成MDI程序背景圖

BCB完成MDI程序背景圖

更新時間:2022-04-30 文章作者:未知 信息來源:網絡 閱讀次數:

金君飛

在開發軟件時,總希望軟件界面越漂亮越好,我們在C++ Builder的SDI程序中比較容易實現漂亮的軟件界面,但在MDI程序中,由于Windows的MDI軟件的開發隱藏了許多技術細節,用SDI程序的方法,就不能實現了。下面筆者將詳細講述如何實現MDI程序背景圖。
在MDI程序中是由兩個窗口構成的,一個MDI主窗口和一個客戶窗口。客戶窗口覆蓋了主窗口的客戶區,并提供大量的MDI支持。在C++ Builder的MDI 的主窗口中提供了一個ClientHandle的客戶窗口句柄,我們就是利用這個句柄來實現位圖的顯示。我們知道,在Windows的窗口中繪置位圖,為使位圖能夠不斷地刷新,必須響應WM_PAINT和WM_ERASEBKGND消息。我們可以利用鉤子函數(鉤子是Windows系統中一種特殊的消息處理機制,可以監視系統或進程中的各種事件消息,截獲發往目標窗口的消息并進行處理)。截住Windows系統發送給MDI客戶窗口的WM_PAINT和WM_ERASEBKGND消息,從而實現客戶窗口的刷新和重繪。我們可以在系統中安裝自定義的消息鉤子,對發往客戶窗口的消息進行過濾,只處理WM_PAINT和WM_ERASEBKGND,以實現我們的目標。

編寫鉤子函數
編寫Windows鉤子函數分為三步:定義鉤子、安裝鉤子和卸載鉤子。
定義鉤子函數
鉤子函數是一種特殊的回調函數,不同事件的鉤子其函數頭是不一樣,本次用到的鉤子函數如下所示:
LRESULT CALLBACK GetMsgProc(int nCode, WPARAM wParam, LPARAM lParam)
參數nCode的值表示本鉤子函數是否必須處理該消息, wParam表明這次傳遞的消息是否已從Windows消息隊列中刪除, lParam參數用來傳送消息。
在鉤子函數中,必須將系統發送的消息繼續回送給系統以使其它程序可以繼續使用該消息,該函數為:
LRESULT CallNextHookEx(HHOOK hhk, int nCode, WPARAM wParam, LPARAM lParam )
參數hhk是安裝鉤子函數時安裝函數返回的句柄,nCode、wParm和lParm參數是系統傳給鉤子函數的值。

安裝鉤子函數
定義完鉤子函數后,必須將該鉤子安裝到Windows系統中才能生效,安裝鉤子的函數為:
HHOOK SetWindowsHookEx(int idHook, HOOKPROC lpfn, HINSTANCE hMod, DWORD dwThreadId)
參數idHook表示待安裝的鉤子函數類型,可以是鍵盤、鼠標或外殼等鉤子,lpfn表示鉤子函數的地址, hMod表示是全局鉤子還是局部鉤子,如果是全局鉤子則鉤子函數必須在DLL文件中,dwThreadId表示鉤子將要起作用的程序ID。

卸載鉤子函數
鉤子函數使用完后必須卸載,這是一個良好
程序員必備的優良品質。卸載鉤子的函數為:
BOOL UnhookWindowsHookEx(HHOOK hhk)
參數hhk表示待卸載的鉤子句柄。

詳細代碼
根據上面所述,下面介紹詳細代碼:
//定義全局變量
HHOOK hMsgHook;
//鉤子句柄
int iClientHeight, iClientWidth;
//待畫的客戶區高和寬
Graphics::TBitmap Face;
// 從文件調用位圖的控件
HBITMAP hFaceBitmap;
//位圖句柄
HWND hClientHandle, hMdiHandle;
//MDI主窗口和MDI客戶窗口句柄
LRESULT CALLBACK GetMsgProc(int nCode, WPARAM wParam, LPARAM lParam ) ;
void __fastcall TMainForm::FormPaint(TObject Sender)
{ iClientHeight = ClientHeight;
iClientWidth = ClientWidth;
} //設置系統時, 在狀態條上顯示
void __fastcall TMainForm::FormShow(TObject Sender)
{ //從文件中調入位圖
Face = new Graphics::TBitmap();
Face->LoadFromFile(“d:\\temp\\face.bmp”);
hFaceBitmap = Face->Handle;
//保存位圖句柄
hClientHandle = ClientHandle;
//保存窗口句柄
hMdiHandle = Handle;
//保存MDI主窗口句柄
//安裝截取程序消息的鉤子函數
hMsgHook = SetWindowsHookEx(WH_GETMESSAGE, (HOOKPROC)GetMsgProc, NULL, GetCurrentThreadId() );
} //鉤子函數,處理系統WM_PAINT和WM_ERASEBKGND消息
LRESULT CALLBACK GetMsgProc(int nCode, WPARAM wParam, LPARAM lParam )
{ LRESULT lReturn=0;
MSG cwMessage;
cwMessage = (MSG)lParam;
if ( cwMessage->hwnd == hClientHandle || cwMessage->hwnd == hMdiHandle)
//是發送給子窗口的消息則處理
{if ( cwMessage->message == WM_PAINT || cwMessage->message == WM_ERASEBKGND )
{ //重畫用戶窗口
DrawBitmap(hClientHandle, hFaceBitmap, iClientHeight, iClientWidth);
}
}
if ( hMsgHook != NULL) //將消息繼續下傳
lReturn = CallNextHookEx(hMsgHook, nCode, wParam, lParam );
return lReturn;
} //卸載鉤子函數
void __fastcall TMainForm::FormClose(TObject Sender, TCloseAction &&Action)
{ if ( hMsgHook != NULL)
UnhookWindowsHookEx( hMsgHook );
if ( Face != NULL )
delete Face;
}
//在指定的窗口中,畫位圖,填充整個用戶窗口
//Ture為繪制成功,false為繪制失敗
BOOL DrawBitmap(HWND Handle, HBITMAP hBitmap, int iClientHeight, int iClientWidth)
{ if ( hBitmap == NULL )
return false;
BITMAP b;
int iBitmapH, iBitmapW;
GetObject( hBitmap, sizeof( BITMAP), &&b);
iBitmapH = b.bmHeight;
iBitmapW = b.bmWidth;
int x, y;
HDC hClientDC, hMemDC;
hClientDC = GetDC(Handle);
if ( hClientDC == NULL )
return false;
hMemDC = CreateCompatibleDC( hClientDC );
if ( hMemDC == NULL )
{ DeleteDC( hClientDC );
return false;
}
SelectObject( hMemDC, hBitmap );
x = 0;
while ( x < iClientWidth )
{ y = 0;
while ( y < iClientHeight )
{ClientCanvas->Draw(x, y, Face);
BitBlt( hClientDC, x, y,iBitmapW, iBitmapH, hMemDC, 0, 0,SRCCOPY );
y = y + iBitmapH; }
x = x + iBitmapW; }
DeleteDC( hMemDC );
DeleteDC( hClientDC );
return true; }

將上述C++ Builder代碼片段加入用戶的MDI軟件中即可實現任意的MDI程序背景圖

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

国产午夜成人免费看片无遮挡_日本免费xxxx色视频_免费人成网上在线观看_黄网址在线永久免费观看

  • <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        亚洲国产成人精品视频| 一区二区三区资源| 国产清纯白嫩初高生在线观看91 | 国产精品一卡二卡在线观看| 欧美高清激情brazzers| 天天色图综合网| 91精品国产色综合久久| 麻豆精品国产91久久久久久| xf在线a精品一区二区视频网站| 国产另类ts人妖一区二区| 欧美激情在线看| 欧美日韩美女一区二区| 国产美女主播视频一区| 一区二区三区中文在线观看| 欧美大片在线观看一区二区| 成人18精品视频| 麻豆精品新av中文字幕| 亚洲天堂av老司机| 日韩欧美一二三区| 色狠狠av一区二区三区| 国产一区激情在线| 亚洲成人高清在线| 国产精品系列在线| 欧美一卡2卡3卡4卡| 99精品国产99久久久久久白柏| 亚洲人成小说网站色在线 | 亚洲精品一区二区三区四区高清| 韩国视频一区二区| 中文字幕亚洲欧美在线不卡| 日韩一卡二卡三卡国产欧美| 99久久er热在这里只有精品66| 亚洲精品成人精品456| 欧美一级片在线| 成人激情午夜影院| 日本伊人色综合网| 亚洲色图都市小说| 精品日韩一区二区三区免费视频| 欧美日韩亚洲另类| 色婷婷久久综合| 国产一区二区调教| 另类小说欧美激情| 亚洲已满18点击进入久久| 国产精品女上位| 日韩欧美综合在线| av不卡一区二区三区| 国产自产高清不卡| 日韩精品福利网| 亚洲妇女屁股眼交7| 久久免费电影网| 欧美精品一区二区三区高清aⅴ| 色8久久人人97超碰香蕉987| 成人小视频在线观看| 国产一区二区导航在线播放| 日本亚洲一区二区| 日韩av电影免费观看高清完整版 | 99这里都是精品| 不卡的av在线| 99久久亚洲一区二区三区青草| 国产一区二区三区免费| 久久福利视频一区二区| 久久国产欧美日韩精品| 久久不见久久见免费视频1| 美女一区二区三区| 蜜桃久久久久久| 国产一区二区看久久| 国内偷窥港台综合视频在线播放| 久久99国产精品久久99| 国产精品一级片| 91日韩一区二区三区| 欧美日韩精品专区| 精品少妇一区二区三区日产乱码| 精品1区2区在线观看| 久久精品视频在线看| 久久久久久久久久久久电影| 国产精品久久免费看| 亚洲在线成人精品| 麻豆国产91在线播放| 国产精品资源网站| jlzzjlzz欧美大全| 欧洲av在线精品| 欧美一级免费观看| 久久久高清一区二区三区| 国产精品国产自产拍高清av| 亚洲综合一二区| 老司机精品视频在线| 丰满少妇久久久久久久| 在线欧美日韩国产| 欧美变态tickling挠脚心| 国产欧美精品一区二区色综合| 亚洲精品乱码久久久久久黑人| 婷婷国产在线综合| 成人性视频网站| 欧美精品精品一区| 日本一区二区动态图| 亚洲国产精品精华液网站| 国产精品一级片在线观看| 在线看国产一区| 久久久久久亚洲综合影院红桃 | 亚洲成人动漫在线免费观看| 国产精品一二三四五| 欧美在线不卡一区| 久久精品亚洲精品国产欧美| 午夜精品一区二区三区免费视频| 国产精品亚洲第一区在线暖暖韩国 | 欧美成人一区二区| 一区二区三区四区高清精品免费观看 | 一色桃子久久精品亚洲| 日本一道高清亚洲日美韩| 91亚洲永久精品| 亚洲精品一线二线三线无人区| 亚洲mv在线观看| 一本久久综合亚洲鲁鲁五月天| 久久久精品免费观看| 奇米一区二区三区av| 91丨九色丨蝌蚪丨老版| 久久久久久99精品| 精品一二线国产| 91精品国产入口| 日本成人中文字幕| 欧美无人高清视频在线观看| 国产精品久久午夜夜伦鲁鲁| 国产制服丝袜一区| 欧美r级在线观看| 日韩专区欧美专区| 欧美日韩国产一级| 性感美女久久精品| 7777精品伊人久久久大香线蕉| 亚洲综合精品久久| 欧洲一区二区av| 亚洲精品老司机| 91极品美女在线| 亚洲综合图片区| 欧美日韩久久不卡| 青青草国产成人99久久| 日韩亚洲欧美在线观看| 精品影视av免费| 精品国产乱码久久久久久老虎| 激情深爱一区二区| 国产日韩欧美激情| 播五月开心婷婷综合| 亚洲精品成人天堂一二三| 欧美三级韩国三级日本一级| 视频一区二区不卡| 久久综合五月天婷婷伊人| 国产成+人+日韩+欧美+亚洲| 国产精品二区一区二区aⅴ污介绍| 99视频在线精品| 亚洲电影一区二区三区| 欧美高清视频一二三区| 精品亚洲国产成人av制服丝袜| 国产夜色精品一区二区av| 成人精品在线视频观看| 亚洲欧美国产高清| 日韩欧美中文字幕制服| 福利视频网站一区二区三区| 亚洲免费资源在线播放| 91精品在线观看入口| 国产精品88av| 亚洲成a人片在线观看中文| 欧美电影免费观看高清完整版| 丰满亚洲少妇av| 天堂在线一区二区| 中文av字幕一区| 欧美一区二区三区啪啪| 成人久久久精品乱码一区二区三区| 一区二区三区在线视频免费| 精品国产乱码久久久久久闺蜜| 99久久国产综合色|国产精品| 日韩不卡手机在线v区| 亚洲欧洲日韩女同| 日韩欧美www| 欧美视频精品在线| 成人午夜在线免费| 久久激五月天综合精品| 亚洲最大成人网4388xx| 欧美激情综合五月色丁香小说| 欧美综合一区二区三区| 国产成人午夜视频| 男人的j进女人的j一区| 亚洲欧美日韩国产手机在线| 日韩欧美国产一二三区| 欧美午夜电影网| 色综合久久天天综合网| 粉嫩av亚洲一区二区图片| 青青草91视频| 亚洲一区二区三区四区在线观看 | 午夜天堂影视香蕉久久| 国产日韩影视精品| 日韩视频在线观看一区二区| 色综合视频一区二区三区高清| 激情成人午夜视频| 欧美aaaaaa午夜精品| 亚洲444eee在线观看| 一区二区三区在线观看国产| 欧美国产日本视频| 久久免费美女视频| 久久综合久久综合亚洲| 欧美电影精品一区二区| 欧美成人r级一区二区三区| 3d成人h动漫网站入口|