国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 交城县| 平度市| 绥德县| 石阡县| 凉山| 黔江区| 汪清县| 兖州市| 磴口县| 眉山市| 水城县| 延津县| 高碑店市| 永丰县| 班戈县| 玛曲县| 许昌县| 中宁县| 桐城市| 舞钢市| 岚皋县| 南京市| 隆回县| 沧州市| 手机| 定南县| 大渡口区| 晴隆县| 东明县| 上栗县| 措勤县| 简阳市| 吉木乃县| 香河县| 花莲县| 齐河县| 长乐市| 沙雅县| 海城市| 外汇| 西盟|