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

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

操作VB中的無邊框窗體

2019-11-18 17:33:57
字體:
供稿:網(wǎng)友
在VB中,BorderStyle屬性為0的窗體沒有邊框,并且也沒有與邊框相關(guān)的元素。這種窗體具有簡潔、占用空間少等優(yōu)點,用它可以設(shè)計出某些富有個性的窗體。但是,由于它沒有標(biāo)題欄,窗體不能移動,同時也不能改變大小,在某些情況下會給使用者造成一定的麻煩。本文介紹在VB中如何用API函數(shù)操作無邊框窗體。

移動窗體

新建一標(biāo)準(zhǔn)工程,設(shè)置Form1的BorderStyle屬性為0。此時運行程序后,無法移動窗體。為能移動窗體,在Form1的代碼窗口聲明下列函數(shù)和常數(shù):

OptionExplicit

PrivateDeclareFunctionGetCursorPosLib“user32”(lpPointaspOINTAPI)AsLong

'鼠標(biāo)位置變量

PrivateTypePOINTAPI

xAsLong

yAsLong

EndType

'窗體位置變量

PrivateTypeRECT

LeftAsLong

TopAsLong

RightAsLong

BottomAsLong

EndType

'所要執(zhí)行的動作變量,是移動還是改變大小及從哪個方向改變大小

DimActionAsString

在Timer1控件的Timer事件過程中添加以下代碼:

PrivateSubTimer1_Timer()

DimMyRectAsRECT

DimMyPointAsPOINTAPI

'MyRect返回當(dāng)前窗口位置

CallGetWindowRect(Me.hwnd,MyRect)

'MyPoint返回當(dāng)前鼠標(biāo)位置

CallGetCursorPos(MyPoint)

SelectCaseTrue

'鼠標(biāo)位于窗體左上方

CaseMyPoint.x<MyRect.Left+5AndMyPoint.y<MyRect.Top+5

Screen.MousePointer=vbSizeNWSE

Action=“LeftUp”

'鼠標(biāo)位于窗體右下方

CaseMyPoint.x>MyRect.Right-5AndMyPoint.y>MyRect.Bottom-5

Screen.MousePointer=vbSizeNWSE

Action=“RightDown”

'鼠標(biāo)位于窗體右上方

CaseMyPoint.x>MyRect.Right-5AndMyPoint.y<MyRect.Top+5

'45度雙向鼠標(biāo)指針

Screen.MousePointer=vbSizeNESW

Action=“RightUp”

'鼠標(biāo)位于窗體左下方

CaseMyPoint.x<MyRect.Left+5AndMyPoint.y>MyRect.Bottom-5

Screen.MousePointer=vbSizeNESW

Action=“LeftDown”

'鼠標(biāo)位于窗體左邊

CaseMyPoint.x<MyRect.Left+5

'水平雙向鼠標(biāo)指針

Screen.MousePointer=vbSizeWE

Action=“Left”

'鼠標(biāo)位于窗體右邊

CaseMyPoint.x>MyRect.Right-5

Screen.MousePointer=vbSizeWE

Action=“Right”

'鼠標(biāo)位于窗體上方

CaseMyPoint.y<MyRect.Top+5

'垂直雙向鼠標(biāo)指針

Screen.MousePointer=vbSizeNS

Action=“Up”

'鼠標(biāo)位于窗體下方

CaseMyPoint.y>MyRect.Bottom-5

Screen.MousePointer=vbSizeNS

Action=“Down”

'鼠標(biāo)位于窗體其他位置

CaseElse

'默認(rèn)鼠標(biāo)指針

Screen.MousePointer=0

Action=“Move”

EndSelect

EndSub

當(dāng)利用SendMessage函數(shù)由系統(tǒng)向窗口發(fā)送改變大小的信息時,只要將上面移動窗體的語句“SendMessageMe.hwnd,WM_SYSCOMMAND,SC_MOVE,0”中的第3個參數(shù)改為相應(yīng)的常數(shù)即可。

VB中&HF001~&HF008分別是從左、右、上、左上、右上、下、左下、右下8個方向改變窗體大小的常數(shù)。結(jié)合移動窗體的代碼,將上述Form_MouseDown事件的代碼綜合如下(也可以把這8個常數(shù)聲明為自定義常數(shù)):

PrivateSubForm_MouseDown(ButtonAsInteger,ShiftAsInteger,xAsSingle,yAsSingle)

'按下鼠標(biāo)左鍵

IfButton=vbLeftButtonThen

'為當(dāng)前的應(yīng)用程序釋放鼠標(biāo)捕獲

ReleaseCapture

SelectCaseAction

Case“Left”

SendMessageMe.hwnd,WM_SYSCOMMAND,&HF001,0

Case“Right”

SendMessageMe.hwnd,WM_SYSCOMMAND,&HF002,0

Case“Up”

SendMessageMe.hwnd,WM_SYSCOMMAND,&HF003,0

Case“LeftUp”

SendMessageMe.hwnd,WM_SYSCOMMAND,&HF004,0

Case“RightUp”

SendMessageMe.hwnd,WM_SYSCOMMAND,&HF005,0

Case“Down”

SendMessageMe.hwnd,WM_SYSCOMMAND,&HF006,0

Case“LeftDown”

SendMessageMe.hwnd,WM_SYSCOMMAND,&HF007,0

Case“RightDown”

SendMessageMe.hwnd,WM_SYSCOMMAND,&HF008,0

Case“Move”

SendMessageMe.hwnd,WM_SYSCOMMAND,SC_MOVE,0

EndSelect

EndIf

EndSub

->


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 贡嘎县| 仁怀市| 黑山县| 衡南县| 沂源县| 松阳县| 改则县| 定南县| 扎囊县| 志丹县| 叶城县| 莎车县| 桃江县| 莱芜市| 淮南市| 盖州市| 华蓥市| 利津县| 贵德县| 石门县| 平南县| 旌德县| 济南市| 鱼台县| 荥阳市| 鸡西市| 内丘县| 博湖县| 兴城市| 麻城市| 旬邑县| 婺源县| 阿鲁科尔沁旗| 永清县| 乌兰察布市| 莱芜市| 运城市| 綦江县| 萨迦县| 进贤县| 南乐县|