分享
 
 
 

VB开发应用程序答疑

王朝厨房·作者佚名  2007-01-04
窄屏简体版  字體: |||超大  

VB以其易于学习、易于开发而深受广大开发人员的喜爱,但是在实际开发时,我们也会遇到很多问题,笔者总结了一些开发中常见的问题,给出了通用的解决方法,希望对VB开发人员有所帮助。

问:在VB应用程序中,如何实现窗体的简易移动?

答:如果你的窗体不需要标题栏,又希望能移动该窗体,像WinAmp一样简易移动,我们可以利用以下代码实现:

Declare Function ReleaseCapture Lib "user32" () As Long

Declare Function SendMessage Lib "user32" Alias "SendMessageA"(_ByVal hwnd As Long, ByVal wMsg As Long,_ByVal wParam As Long, lParam As Any) As Long

Public Const HTCAPTION = 2

Public Const WM_NCLBUTTONDOWN = &&&&HA1

下面是将功能加入窗体的MouseDown事件中的代码,你也可将其加入其它控件的事件中:

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

ReleaseCapture

SendMessage hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&&&&

利用以上代码,我们就可实现窗体的简易移动。

问:如何在桌面上画图标?

答:下面一段程序利用了API函数在屏幕上实现画图标功能(注:p是图标的句柄,可以由ExtractIcon取得)。

deskhwnd = GetNextWindow(hwnd, GW_HWNDLAST)

’取最下面一个窗口

deskdc = GetWindowDC(deskhwnd)

’取窗口的情景设备

For i=0 To Screen.Width/32/15

’将屏幕坐标单位换算成“Pixel”,并计算可画的图标数

For j=0 To Screen.Height/32/15

DrawIcon deskdc, 32i, 32j, p

’在桌面上画图

Next j

Next i

用函数GetNextWindow取得其句柄,用函数GetWindowDC取出它的虚拟设备。需要注意的是,一旦窗口被覆盖,图标就会消失。

问:在VB应用程序中,如何取消窗体右上角的关闭功能?

答:如果你不想别人使用程序时直接用右上角的关闭功能来关闭程序,可用以下代码来实现该功能。

在Form_Unload事件中加入以下代码:

Private Sub Form_Unload(Cancel As Integer)

Cancel=True

End Sub

如果你想在关闭程序时提示是否关闭,可在Form_Unload事件中加入一个判断语句:

Private Sub Form_Unload(Cancel As Integer)

Cancel=True

Case Select msgbox "您真的想关闭吗?" ,VbOkCancel

Case VbOk

Cancel=False

Case Else

Cancel=True

End Select

End Sub

问:如何让VB应用程序中的连接具有超级链接效果?

答:我们以一个网址链接为例,讲解实现的方法。

首先我们新建一表单,在表单中加入一标签,Caption属性为http://ccidnet.com/,MouseIcon值为操作系统下Curors目录里的Hand.ico文件,MousePointer值为99。

在标签的MouseMove事件中加入如下代码:

Label1.ForeColor=&&&&HFF

在表单的MouseMove事件中加入如下代码:

Label1.ForeColor=&&&&HFF0000

在标签的Click事件中加入如下代码:

Dim a As String

a=Shell("Explorer.exe http://ccidnet.com/",3)

问:如何读取外部图标?

答:下面的一段程序就显示了如何读取程序中的图标,其中Picture1是一个图像框,dlgOpen是一个标准对话框,Command1是一个按钮;ExtractIcon函数有三个参数,第一个参数指定调用的应用程序,一般都用App.hInstance;第二个参数指定图标文件,可以是DLL、EXE和ICO;第三个参数的不同就决定了其返回值的不同,如果代入-1,就返回文件中包含的图标数,代入0则返回第一个图标的句柄,其余依此类推。

Private Sub Command1_Click()

Static total As Long,p(50) As Long,i As Integer

dlgOpen.Filter = "图标|.Exe;

.Ico;.Dll"

dlgOpen.ShowOpen

If Dir(dlgOpen.filename)<>"" Then

If ExtractIcon(App.hInstance, dlgOpen.filename, -1) = 0 Then ’如果没有图标

MsgBox "No Icon!"

Else

total = ExtractIcon(App.hInstance, dlgOpen.filename, -1)

’取得总图标数

For i = 0 To total - 1

p(i) = ExtractIcon(App.hInstance, dlgOpen.filename, i) ’读取每个图标

Next i

For i = 0 To total - 1 ’依次显示每个图标

DrawIcon Picture1.hdc, 34  i, 0, p(i)

Next i

End If

End If

End Sub

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有