国产午夜成人免费看片无遮挡_日本免费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>

        亚洲精品第1页| 无码av免费一区二区三区试看 | 久久丝袜美腿综合| 欧美日韩视频不卡| 久久蜜桃香蕉精品一区二区三区| 成人精品在线视频观看| 欧美日韩精品综合在线| 91精品麻豆日日躁夜夜躁| 亚洲国产另类av| 国产精品免费久久| 中文字幕不卡在线| 中文字幕av不卡| 欧美激情在线一区二区三区| 日韩欧美色电影| 日韩精品一区二区三区swag | 欧洲精品在线观看| 色欧美片视频在线观看在线视频| 99久久久免费精品国产一区二区| 成人午夜在线免费| 激情欧美一区二区| 国产欧美综合色| 久久亚洲欧美国产精品乐播| 欧美一二三在线| 久久久激情视频| 国产精品免费看片| 亚洲福利视频三区| 久久99国产精品尤物| 风间由美一区二区三区在线观看 | 国产欧美视频一区二区| 日本一区二区三区四区在线视频| 国产精品亲子乱子伦xxxx裸| 中文字幕一区不卡| 午夜伊人狠狠久久| 麻豆中文一区二区| 福利电影一区二区| 欧美日韩二区三区| 亚洲欧洲国产专区| 亚洲成人动漫在线观看| 蜜桃久久久久久| 国产福利精品一区| 日本精品一区二区三区四区的功能| 欧美自拍丝袜亚洲| 久久久一区二区三区捆绑**| 国产精品久线观看视频| 日韩精品1区2区3区| 丁香另类激情小说| 正在播放一区二区| 中文字幕一区二区三区四区不卡 | 国产精品国产三级国产aⅴ入口| 又紧又大又爽精品一区二区| 日韩va欧美va亚洲va久久| 粉嫩在线一区二区三区视频| 欧美撒尿777hd撒尿| 欧美国产精品一区二区| 日韩综合小视频| 91在线精品一区二区| 精品国产亚洲在线| 亚洲综合免费观看高清完整版在线| 免费观看久久久4p| 欧美三级中文字幕在线观看| 中文字幕第一区二区| 蜜臀久久99精品久久久久久9| www.亚洲人| 国产性色一区二区| 麻豆精品视频在线| 欧美日韩精品综合在线| 亚洲精品免费电影| 成人白浆超碰人人人人| 精品欧美乱码久久久久久| 丝袜美腿亚洲色图| 欧洲一区在线电影| 亚洲人亚洲人成电影网站色| 激情五月婷婷综合网| 欧美精品乱码久久久久久| 亚洲精品久久7777| 一本到不卡免费一区二区| 国产精品乱码一区二三区小蝌蚪| 久久国产三级精品| 欧美蜜桃一区二区三区| 亚洲制服丝袜在线| 在线精品视频免费播放| 国产婷婷精品av在线| 欧美亚洲动漫另类| 国产精品久久久久久久午夜片| 亚洲女子a中天字幕| 国产精品影视在线观看| 6080午夜不卡| 亚洲高清久久久| 色8久久人人97超碰香蕉987| 国产精品美女久久久久久久久久久 | 亚洲成人综合视频| 色悠久久久久综合欧美99| 亚洲人成精品久久久久| 成人av午夜电影| 国产精品丝袜在线| 99re视频精品| 一区二区高清在线| 欧美精品一级二级| 久久er精品视频| 久久久久久免费| 成人av在线影院| 亚洲日本丝袜连裤袜办公室| 色综合久久66| 综合电影一区二区三区| 日本黄色一区二区| 偷拍一区二区三区四区| 欧美一区二区在线视频| 人人精品人人爱| 久久精品亚洲麻豆av一区二区| 成人做爰69片免费看网站| 亚洲欧美日韩中文播放| 欧美色图激情小说| 国产一区91精品张津瑜| 亚洲同性gay激情无套| 在线视频综合导航| 天天影视网天天综合色在线播放| 日韩免费一区二区三区在线播放| 国产精品一二三| 一区二区三区在线看| 日韩一区二区在线观看视频播放| 国产精品一二三四| 一区二区成人在线视频| 久久视频一区二区| 欧美无砖专区一中文字| 国产高清在线精品| 五月天激情综合| 国产精品亲子伦对白| 91精品久久久久久蜜臀| 波多野结衣中文字幕一区| 亚洲综合色区另类av| 久久综合视频网| 色播五月激情综合网| 久久国产精品72免费观看| 国产精品电影院| 欧美大片日本大片免费观看| 91网站最新地址| 国内外精品视频| 亚洲国产视频a| 中日韩av电影| 精品国产一区二区三区av性色 | 亚洲欧美日韩久久| 欧美电影免费观看完整版| 在线观看欧美黄色| 国产精品一区免费在线观看| 粉嫩久久99精品久久久久久夜| 亚洲大片在线观看| 国产精品久久久久天堂| 久久先锋影音av鲁色资源| 欧美日韩久久一区| 色哟哟一区二区在线观看| 国产美女在线观看一区| 日韩高清欧美激情| 亚洲老司机在线| 国产精品狼人久久影院观看方式| 欧美日韩一级视频| 色天天综合久久久久综合片| 成人精品国产免费网站| 国产在线播精品第三| 蜜臀久久99精品久久久画质超高清 | 国产不卡视频在线播放| 青青草国产精品97视觉盛宴| 亚洲自拍偷拍麻豆| 一区二区三区产品免费精品久久75| 国产精品久久久久久久第一福利 | 激情欧美一区二区| 毛片av一区二区| 麻豆成人综合网| 日产精品久久久久久久性色| 亚洲一区二区欧美激情| 怡红院av一区二区三区| 亚洲青青青在线视频| 亚洲欧美一区二区在线观看| 国产日韩欧美在线一区| 国产女同互慰高潮91漫画| 国产视频一区二区在线| 久久精品亚洲麻豆av一区二区| 久久一夜天堂av一区二区三区| 精品日产卡一卡二卡麻豆| 久久先锋影音av鲁色资源网| 国产欧美一区二区精品性| 国产精品久久夜| 亚洲精品菠萝久久久久久久| 一区二区在线观看av| 亚洲 欧美综合在线网络| 日韩专区一卡二卡| 国产在线视频一区二区三区| 国产毛片精品国产一区二区三区| 国产99久久久国产精品潘金 | 99久久精品国产麻豆演员表| 99久久777色| 在线一区二区三区四区五区| 精品视频在线免费| 欧美日韩国产综合久久| 久久夜色精品国产噜噜av| 久久女同性恋中文字幕| 欧美日韩国产美| 日本网站在线观看一区二区三区 | 欧美变态凌虐bdsm| a美女胸又www黄视频久久| 丰满放荡岳乱妇91ww|