自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

你是否知道VB.NET借助API方法

開發(fā) 后端
這里介紹VB.NET借助API,因?yàn)橄到y(tǒng)沒有提供這樣的類,這個(gè)例子,同時(shí)給大家提供了一個(gè)API的使用范例。(因?yàn)橄到y(tǒng)類庫包裝了絕大部分API,所以不推薦使用)

#t#本人很喜歡VB.NET借助API,在工作中也很喜歡總結(jié)關(guān)于VB.NET借助API的經(jīng)驗(yàn)教訓(xùn),在特殊窗體的應(yīng)用中,我們有時(shí)需要把窗體右上角標(biāo)題欄上的關(guān)閉按鈕屏幕,當(dāng)用戶點(diǎn)擊其它地方(比如說一個(gè)Button)退出,下面就這個(gè)問題來詳細(xì)說說吧。

我們還是來看一下在VB6中的實(shí)現(xiàn),VB6中實(shí)現(xiàn)(借助API函數(shù))

PrivateDeclareFunction GetSystemMenu Lib "user32" (ByVal hwnd AsLong, ByVal bRevert AsLong) AsLong
PrivateDeclareFunction GetMenuItemCount Lib "user32" (ByVal hMenu AsLong) AsLong
PrivateDeclareFunction DrawMenuBar Lib "user32" (ByVal hwnd AsLong) AsLong
PrivateDeclareFunction RemoveMenu Lib "user32" (ByVal hMenu AsLong, ByVal nPosition AsLong, ByVal wFlags AsLong) AsLong
Const MF_BYPOSITION = &H400&
Const MF_REMOVE = &H1000&
PrivateSub Form_Load()
Dim hSysMenu AsLong, nCnt AsLong
'Get handle to our form's system menu
'(Restore, Maximize, Move, close etc.)
hSysMenu = GetSystemMenu(Me.hwnd, False)
 
If hSysMenu Then
'Get System menu's menu count
nCnt = GetMenuItemCount(hSysMenu)
If nCnt Then
'Menu count is based on 0 (0, 1, 2, 3...)
RemoveMenu hSysMenu, nCnt - 1, MF_BYPOSITION Or MF_REMOVE
RemoveMenu hSysMenu, nCnt - 2, MF_BYPOSITION Or MF_REMOVE 'Remove the seperator
DrawMenuBar(Me.hwnd)
'Force caption bar's refresh. Disabling X button
Me.Caption = "Try to close me!"
EndIf
EndIf
EndSub
 
'如果還要屏蔽Alt+F4,加上
PrivateSub Form_QueryUnload(ByVal Cancel AsInteger, ByVal UnloadMode AsInteger)
Cancel = 1
EndSub

VB.NET借助API,因?yàn)橄到y(tǒng)沒有提供這樣的類,這個(gè)例子,同時(shí)給大家提供了一個(gè)API的使用范例。(因?yàn)橄到y(tǒng)類庫包裝了絕大部分API,所以不推薦使用)

以下是VB.NET的代碼:

  1. 'API聲明  
  2. PrivateDeclareFunction GetSystemMenu Lib "User32" (ByVal hwnd AsInteger, ByVal bRevert AsLong) AsInteger  
  3. PrivateDeclareFunction RemoveMenu Lib "User32" (ByVal hMenu AsInteger, ByVal nPosition AsInteger, ByVal wFlags AsInteger) AsInteger  
  4. PrivateDeclareFunction DrawMenuBar Lib "User32" (ByVal hwnd AsInteger) AsInteger  
  5. PrivateDeclareFunction GetMenuItemCount Lib "User32" (ByVal hMenu AsInteger) AsInteger  
  6. PrivateConst MF_BYPOSITION = &H400&  
  7. PrivateConst MF_DISABLED = &H2&  
  8.    
  9. PrivateSub disableX(ByVal wnd As Form)  
  10. Dim hMenu AsInteger, nCount AsInteger  
  11. '得到系統(tǒng)Menu  
  12. hMenu = GetSystemMenu(wnd.Handle.ToInt32, 0)  
  13. '得到系統(tǒng)Menu的個(gè)數(shù)  
  14. nCount = GetMenuItemCount(hMenu)  
  15. '去除系統(tǒng)Menu  
  16. Call RemoveMenu(hMenu, nCount - 1, MF_BYPOSITION Or MF_DISABLED)  
  17. '重畫MenuBar  
  18. DrawMenuBar(Me.Handle.ToInt32)  
  19. EndSub  
  20.    
  21. PrivateSub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesMyBase.Load  
  22. '使用X不能用  
  23. disableX(Me)  
  24. EndSub  
  25.    
  26. PrivateSub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click  
  27. '關(guān)閉窗口  
  28. Me.Close()  
  29. EndSub  
  30.    
  31. '如果還要屏蔽Alt+F4,加上  
  32. ProtectedOverridesSub WndProc(ByRef m As System.Windows.Forms.Message)  
  33. Dim SC_CLOSE AsInteger = 61536 
  34. Dim WM_SYSCOMMAND AsInteger = 274 
  35. '判斷是系統(tǒng)消息,是不是關(guān)閉窗體,使Alt+F4無效  
  36. If m.Msg = WM_SYSCOMMAND AndAlso m.WParam.ToInt32 = SC_CLOSE Then  
  37. ExitSub  
  38. EndIf  
  39. MyBase.WndProc(m)  
  40. EndSub 
責(zé)任編輯:佚名 來源: CSDN
相關(guān)推薦

2009-11-02 09:43:01

VB.NET構(gòu)造函數(shù)

2009-11-10 16:27:45

VB.NET指針

2009-10-23 11:33:52

VB.NET集成開發(fā)環(huán)

2009-11-02 16:05:51

VB.NET安裝工程

2009-10-26 10:44:27

VB.NET API函

2010-01-18 18:20:49

VB.NET使用API

2009-11-02 10:42:04

VB.NET EXCE

2009-10-29 14:04:48

VB.NET Deri

2009-11-03 09:26:13

VB.NET方法

2009-10-15 17:50:48

VB.NET調(diào)用API

2009-10-30 15:37:23

VB.NET Sub創(chuàng)

2010-01-21 16:37:56

VB.NET變量聲明

2009-11-10 12:42:47

VB.NET Prin

2009-10-13 15:20:02

VB.NET使用Dra

2010-01-22 10:41:33

VB.NET聲明結(jié)構(gòu)

2009-11-03 10:00:20

VB.NET New方

2009-11-03 10:09:48

VB.NET對(duì)象

2009-11-03 13:54:55

VB.NET繼承

2009-10-12 12:54:58

VB.NET聲明API

2009-11-10 16:55:05

VB.NET調(diào)用API
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)