VB入门技巧多例4.docx

上传人:b****3 文档编号:6318993 上传时间:2023-05-09 格式:DOCX 页数:17 大小:22.44KB
下载 相关 举报
VB入门技巧多例4.docx_第1页
第1页 / 共17页
VB入门技巧多例4.docx_第2页
第2页 / 共17页
VB入门技巧多例4.docx_第3页
第3页 / 共17页
VB入门技巧多例4.docx_第4页
第4页 / 共17页
VB入门技巧多例4.docx_第5页
第5页 / 共17页
VB入门技巧多例4.docx_第6页
第6页 / 共17页
VB入门技巧多例4.docx_第7页
第7页 / 共17页
VB入门技巧多例4.docx_第8页
第8页 / 共17页
VB入门技巧多例4.docx_第9页
第9页 / 共17页
VB入门技巧多例4.docx_第10页
第10页 / 共17页
VB入门技巧多例4.docx_第11页
第11页 / 共17页
VB入门技巧多例4.docx_第12页
第12页 / 共17页
VB入门技巧多例4.docx_第13页
第13页 / 共17页
VB入门技巧多例4.docx_第14页
第14页 / 共17页
VB入门技巧多例4.docx_第15页
第15页 / 共17页
VB入门技巧多例4.docx_第16页
第16页 / 共17页
VB入门技巧多例4.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

VB入门技巧多例4.docx

《VB入门技巧多例4.docx》由会员分享,可在线阅读,更多相关《VB入门技巧多例4.docx(17页珍藏版)》请在冰点文库上搜索。

VB入门技巧多例4.docx

VB入门技巧多例4

10.在状态栏显示无边框窗体图标。

1PrivateDeclareFunctionSetWindowLongLib"user32"Alias"SetWindowLongA"(ByValhWnd_AsLong,ByValnIndexAsLong,ByValdwNewLongAsLong)AsLong

2PrivateDeclareFunctionGetWindowLongLib"user32"Alias"GetWindowLongA"(ByValhWnd_AsLong,ByValnIndexAsLong)AsLong

3ConstGWL_STYLE=(-16&)

4ConstWS_SYSMENU=&H80000

5PrivateSubForm_Load()

6'MakeForm'sIconvisibleinthetaskbar

7SetWindowLongMe.hWnd,GWL_STYLE,GetWindowLong(Me.hWnd,GWL_STYLE)OrWS_SYSMENU

8EndSub

11.记录窗体的大小及位置和程序中的一些设置

1PrivateSubForm_Load()

2Me.Width=GetSetting(App.Title,Me.Name,"Width",7200)

3Me.Height=GetSetting(App.Title,Me.Name,"Height",6300)

4Me.Top=GetSetting(App.Title,Me.Name,"Top",100)

5Me.Left=GetSetting(App.Title,Me.Name,"Left",100)

6Check1.Value=GetSetting(App.Title,Me.Name,"check1",0)

7EndSub

8PrivateSubForm_Unload(CancelAsInteger)

9CallSaveSetting(App.Title,Me.Name,"Width",Me.Width)

10CallSaveSetting(App.Title,Me.Name,"Height",Me.Height)

11CallSaveSetting(App.Title,Me.Name,"Top",Me.Top)

12CallSaveSetting(App.Title,Me.Name,"Left",Me.Left)

13CallSaveSetting(App.Title,Me.Name,"check1",Check1.Value)

14EndSub

13.无边框窗体的右键菜单

设计无边框窗体时,如果使用菜单编辑器,就会自动改变成有边框的窗体,此时,可以在另外一个窗体中(一般情况下你的程序应该不止一个窗体的吧,如果真的只有一个,可以利用其他人写的类,添加右键)编辑菜单(VISIBLE属性设为FALSE),然后在本窗体中调用。

调用形式如下:

1PrivateSubForm_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)

2IfButton=2Then

3PopupMenuForm2.mymenu

4EndIf

5EndSub

14.创建圆角无边框窗体

1PrivateDeclareFunctionCreateRoundRectRgnLib"gdi32"(ByValX1AsInteger,ByValY1_AsInteger,ByValX2AsInteger,ByValY2AsInteger,ByValx3AsInteger,ByValy3As_Integer)AsLong

2PrivateDeclareFunctionDeleteObjectLib"gdi32"(ByValhObjectAsLong)AsLong

3PrivateDeclareFunctionSetWindowRgnLib"user32"(ByValhwndAsLong,ByValhrgnAs_Long,ByValbRedrawAsBoolean)AsLong

4PrivateSubForm_Load()

5hround=CreateRoundRectRgn(0,0,ScaleX(Form1.ScaleWidth,vbTwips,vbPixels),_ScaleY(Form1.ScaleHeight,vbTwips,vbPixels),20,20)

6SetWindowRgnMe.hwnd,hround,True

7DeleteObjecthround

8EndSub

15.拖动没有标题栏的窗体

方法一:

1PrivateDeclareFunctionReleaseCaptureLib"user32"()AsLong

2PrivateDeclareFunctionSendMessageLib"user32"Alias"SendMessageA"(ByValhwndAs_Long,ByValwMsgAsLong,ByValwParamAsLong,lParamAsAny)AsLong

3PrivateConstHTCAPTION=2

4PrivateConstWM_NCLBUTTONDOWN=&HA1

5PrivateSubForm_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)

6DimnclAsLong

7DimrelAsLong

8IfButton=1Then

9i=ReleaseCapture()

10ncl=SendMessage(hwnd,WM_NCLBUTTONDOWN,HTCAPTION,0)

11EndIf

12EndSub

方法二:

回调函数

1'module:

2PublicConstGWL_WNDPROC=(-4)

3PublicConstWM_NCHITTEST=&H84

4PublicConstHTCLIENT=1

5PublicConstHTCAPTION=2

6DeclareFunctionCallWindowProcLib"user32"Alias"CallWindowProcA"(ByVal_lpPrevWndFuncAsLong,ByValhWndAsLong,ByValMsgAsLong,ByValwParamAsLong,_ByVallParamAsLong)AsLong

7DeclareFunctionGetWindowLongLib"user32"Alias"GetWindowLongA"(ByValhWndAs_

8Long,ByValnIndexAsLong)AsLong

9DeclareFunctionSetWindowLongLib"user32"Alias"SetWindowLongA"(ByValhWndAs_

10Long,ByValnIndexAsLong,ByValdwNewLongAsLong)AsLong

11PublicprevWndProcAsLong

12FunctionWndProc(ByValhWndAsLong,ByValMsgAsLong,ByValwParamAsLong,ByVal_ParamAsLong)AsLong

13WndProc=CallWindowProc(prevWndProc,hWnd,Msg,wParam,lParam)

14IfMsg=WM_NCHITTESTAndWndProc=HTCLIENTThen

15WndProc=HTCAPTION

16EndIf

17EndFunction

18窗体中:

19PrivateSubForm_Load()

20prevWndProc=GetWindowLong(Me.hWnd,GWL_WNDPROC)

21SetWindowLongMe.hWnd,GWL_WNDPROC,AddressOfWndProc

22EndSub

23PrivateSubForm_Unload(CancelAsInteger)

24SetWindowLongMe.hWnd,GWL_WNDPROC,prevWndProc

25EndSub

16.半透明窗体

1PrivateDeclareFunctionSetLayeredWindowAttributesLib"user32"(ByValhwndAsLong,_ByValcrKeyAsLong,ByValbAlphaAsByte,ByValdwFlagsAsLong)AsLong

2PrivateConstWS_EX_LAYERED=&H80000

3PrivateConstLWA_ALPHA=&H2

4PrivateConstGWL_EXSTYLE=(-20)

5PrivateDeclareFunctionGetWindowLongLib"user32"Alias"GetWindowLongA"(ByVal_

6hwndAsLong,ByValnIndexAsLong)AsLong

7PrivateDeclareFunctionSetWindowLongLib"user32"Alias"SetWindowLongA"(ByVal_

8hwndAsLong,ByValnIndexAsLong,ByValdwNewLongAsLong)AsLong

9PrivateSubForm_Load()

10DimrtnAsLong

11rtn=GetWindowLong(Me.hwnd,GWL_EXSTYLE)'取的窗口原先的样式

12rtn=rtnOrWS_EX_LAYERED'使窗体添加上新的样式WS_EX_LAYERED

13SetWindowLongMe.hwnd,GWL_EXSTYLE,rtn'把新的样式赋给窗体

14SetLayeredWindowAttributesMe.hwnd,0,200,LWA_ALPHA

15EndSub

17.开机启动(函数及常数声明略)

1PrivateSubForm_Load()

2DimhKeyAsLong,SubKeyAsString,ExeAsString

3SubKey="Software\Microsoft\Windows\CurrentVersion\Run"

4Exe="可执行文件的路径"

5RegCreateKeyHKEY_CURRENT_USER,SubKey,hKey

6RegSetvalueExhKey,"autorun",0,REG_SZ,ByValExe,LenB(StrConv(Exe,vbFromUnicode))+1

7RegCloseKeyhKey

8EndSub

18.关闭显示器

1PrivateDeclareFunctionSendMessageLib"user32"Alias"SendMessageA"(ByValhwnd_

2AsLong,ByValwMsgAsLong,ByValwParamAsLong,lParamAsAny)AsLong

3ConstWM_SYSCOMMAND=&H112&

4ConstSC_MONITORPOWER=&HF170&

5PrivateSubCommand1_Click()

6SendMessageMe.hwnd,WM_SYSCOMMAND,SC_MONITORPOWER,ByVal2&'关闭显示器

7EndSub

8PrivateSubCommand2_Click()

9SendMessageMe.hwnd,WM_SYSCOMMAND,SC_MONITORPOWER,ByVal-1&'打开显示器

10EndSub

19.在程序结束时自动关闭由SHELL打开的程序。

1PrivateConstPROCESS_QUERY_INFORMATION=&H400'关闭由SHELL函数打开的文件

2PrivateConstPROCESS_TERMINATE=&H1

3PrivateDeclareFunctionOpenProcessLib"kernel32"(ByValdwDesiredAccessAsLong,_ByValbInheritHandleAsLong,ByValdwProcessIdAsLong)AsLong

4PrivateDeclareFunctionTerminateProcessLib"kernel32"(ByValhProcessAsLong,_

5ByValuExitCodeAsLong)AsLong

6DimProcessIdAsLong

7PrivateSubCommand1_Click()

8ProcessId=Shell("notepad.exe.",vbNormalFocus)

9EndSub

10PrivateSubForm_Unload(CancelAsInteger)

11DimhProcessAsLong

12hProcess=OpenProcess(PROCESS_TERMINATEOrPROCESS_QUERY_INFORMATION,False,_ProcessId)

13CallTerminateProcess(hProcess,3838)

14EndSub

20.关闭、重启计算机

1PublicDeclareFunctionExitWindowsExLib"user32"Alias"ExitWindowsEx"(ByVal_

2uFlagsAsLong,ByValdwReservedAsLong)AsLong

3ExitWindowsEx1,0关机

4ExitWindowsEx0,1重新启动

21.显示关机提示框

1PrivateDeclareFunctionSHRestartSystemMBLib"shell32"Alias"#59"(ByValhOwner_

2AsLong,ByValsExtraPromptAsString,

3

4ByValuFlagsAsLong)AsLong

5ConstEWX_LOGOFF=0

6ConstEWX_SHUTDOWN=1

7ConstEWX_REBOOT=2

8ConstEWX_FORCE=4

9ConstEWX_POWEROFF=8

10PrivateSubCommand1_Click()

11SHRestartSystemMBMe.hWnd,PROMPT,EWX_LOGOFF

12EndSub

22.右键托盘图标后必须电击他才可以消失,怎么办?

CaseWM_RBUTTONUP'鼠标在图标上右击时弹出菜单

SetForegroundWindowMe.hwnd

Me.PopupMenumnuTray

加一句SetForegroundWindowMe.hwnd

23.将progressbar嵌入statusbar中

1PrivateDeclareFunctionSetParentLib"user32"(ByValhWndChildAsLong,ByVal_hWndNewParentAsLong)AsLong

2PrivateSubCommand1_Click()

3WithProgressBar1

4.Max=1000

5DimiAsInteger

6Fori=1To1000

7.Value=i

8Nexti

9EndWith

10EndSub

11PrivateSubForm_Load()

12ProgressBar1.Appearance=ccFlat

13SetParentProgressBar1.hWnd,StatusBar1.hWnd

14ProgressBar1.Left=StatusBar1.Panels

(1).Left

15ProgressBar1.Top=100

16ProgressBar1.Width=StatusBar1.Panels

(1).Width-50

17ProgressBar1.Height=StatusBar1.Height-150

18EndSub'相对位置你可以自己再调一下

24.使你的程序界面具有XP风格产生一个和你的可执行程序同名的后缀为exe.manifest的文件,并和可执行文件放在同一路径中。

代码中加入:

1PrivateDeclareSubInitCommonControlsLib"comctl32.dll"()

2PrivateSubForm_Initialize()

3InitCommonControls

4EndSub

注意:

1工具栏控件一定要用MicrosoftWindowsCommonControls5.0,而不要用MicrosoftWindowsCommonControls6.0。

因为此

InitCommonControlsAPI函数是位于comctl32.dll(MicrosoftWindowsCommonControls5.0控件的动态链接库中)。

2放在FRAME控件中的单远按钮有些“麻烦”!

为了解决此问题,可以将单选按钮放在PICTURE控件中(以PICTURE控件作为容器),再将

PICTURE控件放在FRAME控件中,就可以了。

3必须编译之后才能看到效果

exe.manifest文件中的内容,可用notepad编辑。

1

xmlversion="1.0"encoding="UTF-8"standalone="yes"?

>

2

schemas-microsoft-com:

asm.v1"manifestVersion="1.0">

3

4version="1.0.0.0"

5processorArchitecture="X86"

6name="CompanyName.ProductName.YourApp"

7type="win32"

8/>

9Yourapplicationdescriptionhere.

10

11

12

13type="win32"

14name="Microsoft.Windows.Common-Controls"

15version="6.0.0.0"

16processorArchitecture="X86"

17publicKeyToken="6595b64144ccf1df"

18language="*"

19/>

20

21

22

25.如何打印PictureBox中的所有控件

添加另外一个PictureBox,然后:

1PrivateConstWM_PAINT=&HF

2PrivateConstWM_PRINT=&H317

3PrivateConstPRF_CLIENT=&H4&

4PrivateConstPRF_CHILDREN=&H10&

5PrivateConstPRF_OWNED=&H20&

6PrivateConstPHYSICALOFFSETXAsLong=112

7PrivateConstPHYSICALOFFSETYAsLong=113

8PrivateDeclareFunctionSendMessageLib"user32"Alias"SendMessageA"(ByValhwnd_

9AsLong,ByValwMsgAsLong,ByValwParamAsLong,ByVallParamAsLong)AsLong

10PrivateDeclareFunctionGetDeviceCapsLib"gdi32"(ByValhdcAsLong,ByValnindex_

11AsLong)AsLong

12privateSubForm_Load()

13Picture1.AutoRedraw=True

14Picture2.AutoRedraw=True

15Picture2.Bo

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2