免費(fèi)預(yù)覽已結(jié)束,剩余1頁(yè)可下載查看
下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
在PB中使用Windows消息(一)Wm_syscommand參數(shù)使用消息,就是指Windows發(fā)出的一個(gè)通知,告訴應(yīng)用程序某個(gè)事情發(fā)生了。例如,單擊鼠標(biāo)、改變窗口尺寸、按下鍵盤上的一個(gè)鍵都會(huì)使Windows發(fā)送一個(gè)消息給應(yīng)用程序。消息本身是作為一個(gè)記錄傳遞給應(yīng)用程序的,這個(gè)記錄中包含了消息的類型以及其他信息。例如,對(duì)于單擊鼠標(biāo)所產(chǎn)生的消息來(lái)說(shuō),這個(gè)記錄中包含了單擊鼠標(biāo)時(shí)的坐標(biāo)。這個(gè)記錄類型叫做TMsg。它在Windows單元中是這樣聲明的: hwnd: HWND; / /窗口句柄message: UINT; / /消息常量標(biāo)識(shí)符wParam: WPARAM ; / 32位消息的特定附加信息lParam: LPARAM ; / 32位消息的特定附加信息time: DWORD; / /消息創(chuàng)建時(shí)的時(shí)間pt: TPoint; / /消息創(chuàng)建時(shí)的鼠標(biāo)位置hwnd 32位的窗口句柄。窗口可以是任何類型的屏幕對(duì)象,因?yàn)閃in32能夠維護(hù)大多數(shù)可視對(duì)象的句柄(窗口、對(duì)話框、按鈕、編輯框等)。message 用于區(qū)別其他消息的常量值,這些常量可以是Windows單元中預(yù)定義的常量,也可以是自定義的常量。wParam 通常是一個(gè)與消息有關(guān)的常量值,也可能是窗口或控件的句柄。lParam 通常是一個(gè)指向內(nèi)存中數(shù)據(jù)的指針。由于W P a r a m、l P a r a m和P o i n t e r都是3 2位的,因此,它們之間可以相互轉(zhuǎn)換。對(duì)于我們使用來(lái)說(shuō),在眾多的消息當(dāng)中,WM_SYSCOMMAND,使用率是最高的,對(duì)於WM_SYSCOMMAND,功能表ID指示系統(tǒng)功能表中的哪一項(xiàng)被選中,所參數(shù)對(duì)應(yīng)值如下:MF_BYCOMMAND = &H0&MF_BYPOSITION = &H400&SC_ARRANGE = &HF110SC_CLOSE = &HF060SC_HOTKEY = &HF150SC_HSCROLL = &HF080SC_KEYMENU = &HF100SC_MAXIMIZE = &HF030SC_MINIMIZE = &HF020SC_MOVE = &HF012 或 F010SC_NEXTWINDOW = &HF040SC_PREVWINDOW = &HF050SC_RESTORE = &HF120SC_SIZE = &HF000SC_VSCROLL = &HF070SC_TASKLIST = &HF130SC_SCREENSAVE = &HF140下面,介紹一下SC_COLSE、SC_MAXIMIZE、SC_MINIMIZE、SC_MOVE、SC_RESTORE、SC_SIZE、SC_HOTKEY這幾個(gè)常用參數(shù)在PB中的應(yīng)用:1、SC_CLOSE:61536 執(zhí)行關(guān)閉功能。常用點(diǎn):屏蔽掉關(guān)閉功能,使窗口系統(tǒng)的“X”變成灰色,并且不可用。實(shí)現(xiàn)方法:FUNCTION ulong GetSystemMenu(ulong hwnd,ulong bRevert) LIBRARY user32.dll FUNCTION ulong DeleteMenu(ulong hMenu,ulong nPosition,ulong wFlags) LIBRARY user32.dll FUNCTION ulong GetMenuItemCount(ulong hMenu) LIBRARY user32.dll 窗體Open中/ 按命令Long MF_BYCOMMAND = 0Long ll_hwndMenu ll_hwndMenu = GetSystemMenu(handle(this), 0) /得到系統(tǒng)菜單句柄DeleteMenu(ll_hwndMenu, SC_CLOSE, MF_BYCOMMAND) /屏蔽掉關(guān)閉功能/也可使用按位置屏蔽,即單擊窗口左上腳彈出系統(tǒng)菜單上的位置long MF_BYPOSITION =1024 Long ll_hwndMenu Long value Integer ill_hwndMenu = GetSystemMenu(handle(this), 0) i = GetMenuItemCount(ll_hwndMenu) DeleteMenu (ll_hwndMenu, c - 1, MF_BYPOSITION)有時(shí)候,屏蔽掉關(guān)閉功能一段時(shí)間后,還需要把此功能找回來(lái),那么可以這樣實(shí)現(xiàn):Function Ulong AppendMenu(Ulong hMenu ,Ulong wFlags ,Ulong wIDNewItem ,Ref String lpNewItem ) Library User32 Alias For AppendMenuA Function Ulong GetMenuString(Ulong hMenu ,Ulong wIDItem , Ref String lpString,Ulong nMaxCount,Ulong wFlag ) Library User32 Alias For GetMenuStringA按鈕Cb_back click事件中:Long ll_hwndMenuLong WM_NCLBUTTONDOWN = 161Long HTCAPTION = 2 String ls_closeLl_hwndMenu = GetSystemMenu(handle(Parent), 0) ls_str = 我要關(guān)閉AppendMenu(hwndMenu, 0, 61536, ls_close) /添加關(guān)閉功能/* 此處需注意,上步操作雖然成功的添加了關(guān)閉功能,但加回去之後X仍是暗灰色,要等到我們做了某些固定的動(dòng)作之後如單擊下?tīng)顟B(tài)欄,它才會(huì)再度變Enable的顏色,所以,模擬一個(gè)單擊狀態(tài)欄的操作,使得X出現(xiàn)Enable的顏色。 Ps:此時(shí),單擊窗口左上腳彈出系統(tǒng)菜單,你會(huì)發(fā)現(xiàn),原來(lái)的“關(guān)閉”字樣變成了“我要關(guān)閉”*/Send(handle(Parent), WM_NCLBUTTONDOWN, HTCAPTION,0)引申:SC_MAXIMIZE、SC_MINIMIZE、SC_MOVE、SC_RESTORE、SC_SIZE這個(gè)功能參數(shù)也可同樣適用。如:下面的語(yǔ)句能實(shí)現(xiàn)屏蔽掉拖拽窗口移動(dòng)功能DeleteMenu(ll_hwndMenu, SC_MOVE, MF_BYCOMMAND)下面的語(yǔ)句屏蔽掉size窗口大小的功能,此時(shí)拉動(dòng)窗口邊框不能改變大小,但仍支持Max 和 MinDeleteMenu(ll_hwndMenu, SC_SIZE, MF_BYCOMMAND)2、SC_MOVE 61456、61458(分為客戶區(qū)和非客戶區(qū),非客戶區(qū)= 客戶區(qū) + HTCAPTION HTCAPTION = 2)窗口移動(dòng)常用點(diǎn):屏蔽窗口拖動(dòng)和拖動(dòng)非狀態(tài)欄移動(dòng)窗口實(shí)現(xiàn)方法:屏蔽窗口拖動(dòng) / 可使用上面禁止關(guān)閉功能的辦法禁止拖動(dòng),也可使用下面的辦法:窗口other事件中:/* 注意,要把客戶區(qū)和非客戶區(qū)的兩種移動(dòng)方法全部屏蔽才能徹底屏蔽,如果單屏蔽掉非客戶區(qū) 61458,那在窗口系統(tǒng)菜單中仍可移動(dòng)窗口 */If wparam = 61456 or wparam = 61458 Then Message.Processed = TrueMessage.ReturnValue=0End If引申:也可以使用同樣的辦法來(lái)屏蔽掉帶有titlebar的dw的拖動(dòng)拖動(dòng)非狀態(tài)欄移動(dòng)窗口比如拖動(dòng)一圖片拖動(dòng)所在窗口,圖片控件上自定義事件,ue_drag,ID:pbm_lbuttondownLong WM_SYSCOMMAND = 274 Long SC_MOVE = 61458 / or = 61456Send ( Handle( parent ), WM_SYSCOMMAND, SC_MOVE, 0 )引申:通過(guò)更換sc_move可實(shí)現(xiàn)其他系統(tǒng)功能相關(guān)的操作。如下面語(yǔ)句實(shí)現(xiàn)指定數(shù)據(jù)窗口的最大化:Send(Handle(dw_1), WM_SYSCOMMAND, SC_MAXIMIZE, 0)下面語(yǔ)句實(shí)現(xiàn)指定數(shù)據(jù)窗口的最小化:Send(Handle(dw_1), WM_SYSCOMMAND, SC_MINIMIZE, 0)下面語(yǔ)句恢復(fù)指定數(shù)據(jù)窗口的默認(rèn)大小 Send(Handle(dw_1), WM_SYSCOMMAND, SC_RESTORE, 0)3、SC_HOTKEY 61776 系統(tǒng)熱鍵常用點(diǎn):為系統(tǒng)注冊(cè)些熱鍵值,方便操作下例中為窗口注冊(cè)熱鍵 Ctrl + Alt + X,實(shí)現(xiàn)窗口在最小化時(shí),還原窗口大小實(shí)現(xiàn)方法:function long SendMessageA(long lhWnd,uint uiMsg,long lwMsg,long lwParam) library user32.dllPublic:Constant Long WM_SETHOTKEY = 50 Constant Long HK_MYHOTKEY = 1624 /熱鍵參數(shù)值 Ctrl + Alt + XConstant Long SC_HOTKEY = 61776Constant Long WM_SYSCOMMAND = 274 Constant Long SC_RESTORE = 61728/ Open事件中l(wèi)ong ll_rtnll_rtn = SendMessageA(Handle(this), WM_SETHOTKEY, HK_MYHOTKEY, 0)If ll_rtn 1 Thenmessagebox(注冊(cè)失敗,注冊(cè)熱鍵失敗,無(wú)法使用熱鍵服務(wù))End If/ Other事件中IF wparam = SC-HOTKEY THEN Send(Handle(This), WM_SYSCOMMAND, SC_RESTORE, 0)END IF備注:想注冊(cè)熱鍵鍵值的獲得辦法:高8位字節(jié)與低8位字節(jié)組成16位字節(jié),然后將它換算成十進(jìn)制數(shù),即得到所需的HK-MYHOTK
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 門診輸液室護(hù)士工作總結(jié)
- 幼教行業(yè)助理工作總結(jié)
- 電影行業(yè)技巧提升總結(jié)
- 國(guó)家課程:《機(jī)械制造裝備設(shè)計(jì)》第一章
- 2025-2030全球管式爐行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025-2030全球工業(yè)應(yīng)用移動(dòng)機(jī)器人行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025年全球及中國(guó)電動(dòng)低升降托盤車行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025年全球及中國(guó)塑料3D打印長(zhǎng)絲行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025-2030全球工業(yè)膠囊填充機(jī)行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025年全球及中國(guó)微米級(jí)氧化鋯行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2024年北京東城社區(qū)工作者招聘筆試真題
- 《敏捷項(xiàng)目管理》課件
- 統(tǒng)編版(2024新版)七年級(jí)上學(xué)期道德與法治期末綜合測(cè)試卷(含答案)
- 黑龍江省哈爾濱市2024屆中考數(shù)學(xué)試卷(含答案)
- 前程無(wú)憂測(cè)評(píng)題庫(kù)及答案
- 高三日語(yǔ)一輪復(fù)習(xí)助詞「と」的用法課件
- 物業(yè)管理服務(wù)房屋及公用設(shè)施維修養(yǎng)護(hù)方案
- 五年級(jí)上冊(cè)小數(shù)遞等式計(jì)算200道及答案
- 世界老年人跌倒的預(yù)防和管理指南解讀及跌倒應(yīng)急處理-
- 帶拼音生字本模板(可A4打印)
- 超高大截面框架柱成型質(zhì)量控制
評(píng)論
0/150
提交評(píng)論