国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

在VB中實現(xiàn)移動沒有標題欄的窗口

2019-11-18 17:40:49
字體:
供稿:網(wǎng)友
方法一


  這種方法是在窗體的MouseDown、MouseUp和MouseMove等事件的處理過程中添加代碼,實現(xiàn)在鼠標左鍵按下后移動時,改變窗體的Left和Top屬性,實現(xiàn)移動無標題欄的窗體。

  進入VB,把窗體Form1的BorderStyle屬性設置為0-None(無標題欄),再窗體上添加一個ButtonCommand組件,用來關閉程序。代碼如下:

  PRivateTypePOINT

   XAsSingle

   YAsSingle

  EndType

  DimFormPaspOINT

  '記錄窗體原始位置

  DimMousePAsPOINT

  '記錄鼠標按下時的位置

  DimMouseLButtonDownAsBoolean

  '記錄鼠標左鍵是否按下

  PrivateSubCommand1_Click()

   End'退出程序

  EndSub

  PrivateSubForm_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)

   FormP.X=Form1.Left

  '記下窗體原始坐標位置

   FormP.Y=Form1.Top

   MouseP.X=X

  '記下鼠標按下時的位置

   MouseP.Y=Y

   IfButton=1Then

   MouseLButtonDown=True

  '鼠標左鍵按下

   EndIf

  EndSub

  PrivateSubForm_MouseMove(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)

   IfMouseLButtonDownThen

   Form1.Left=FormP.X (X-MouseP.X)'移動窗體

   Form1.Top=FormP.Y (Y-MouseP.Y)

   EndIf

  EndSub

  PrivateSubForm_MouseUp(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)

   MouseLButtonDown=False

  '鼠標左鍵彈起

  EndSub

  上述方法不是很完善,制作出的窗體被拖動時,窗體會隨鼠標的移動而移動。而在默認的Windows設置中拖動窗體時,被拖動的窗體不會隨窗體的移動而移動,隨窗體移動的僅是一個與窗體形狀、大小一樣的虛框,只有釋放鼠標后,窗體才會移動到釋放鼠標時虛框的所在處。要實現(xiàn)這種效果,請看第二種方法。

  方法二

  這種方法通過消息的發(fā)送實現(xiàn)移動無標題窗體。當鼠標按下、移動或釋放時,將鼠標在窗體上按下的消息(消息值為HTCAPTION)發(fā)出,就可以拖動窗體了。代碼如下:

  PrivateDeclareFunctionReleaseCaptureLib"user32"()AsLong

  PrivateDeclareFunctionSendMessageLib"user32"Alias"SendMessageA"(ByValhwndAsLong,

  ByValwMsgAsLong,ByValwParamAsLong,lParamAsAny)AsLong

  PrivateConstWM_NCLBUTTONDOWN=&&HA1

  PrivateConstHTCAPTION=2

  '以上API函數(shù)和常數(shù)的聲明可在VB自帶的“API瀏覽器”中找到

  PrivateSubForm_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)

   '在窗體的MouseDown事件中添加以下代碼

   IfButton=1Then

   CallReleaseCapture

   CallSendMessage(hwnd,WM_NCLBUTTONDOWN,HTCAPTION,0)

   EndIf

  EndSub

  PrivateSubCommand1_Click()

  End  '退出程序

  EndSub

  這種方法實現(xiàn)起來比第一種方法更容易,只有幾行代碼,并且沒有那么多的變量,窗體被拖動時與普通窗體一樣,只有一個虛框隨鼠標的移動而移動,當釋放鼠標時窗體才移動到相應的位置。用到了兩個API函數(shù)。

  以上程序在VB6.0和Windows98SE下調(diào)試通過。->


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 苗栗市| 大悟县| 成武县| 娱乐| 涪陵区| 桂平市| 龙江县| 肇州县| 弥渡县| 宜都市| 兴城市| 肇东市| 济南市| 库尔勒市| 炎陵县| 湛江市| 马尔康县| 元氏县| 宜兰县| 布尔津县| 长乐市| 隆尧县| 太白县| 烟台市| 鄂尔多斯市| 织金县| 确山县| 上蔡县| 定日县| 诏安县| 曲靖市| 宜城市| 句容市| 黄梅县| 分宜县| 钟祥市| 柳河县| 乌鲁木齐县| 日照市| 台湾省| 庄河市|