loading请求处理中...
10大优享服务
62项会员特权

vb.net 如何制作图标按钮 ?急急急!!在线等!

提问者:远方实业的店铺 1回答 浏览次数:2803 提问时间: 2021/12/01 09:20
提问者采纳
窗口边框(FormBorderStyle)设None窗口(WindowState)设Maximized想让窗口背景透明窗口背景颜色TransparencyKey设同种颜色按钮用Label(标签)代替背景设Transparent边框设None文字位置般Label控件支持边框效鼠标事件(MouseDown按MouseUp抬起MouseEnter进入MouseLeave离)更换指定图片;添加timer控件使用画 Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick Me.Label1.Refresh() End Sub快捷键用热键RegisterHotKey 函数功能:该函数定义系统范围热键 函数原型:BOOL RegisterHotKey(HWND hWndintidUINT fsModifiersUINT vk); 参数: hWnd:接收热键产WM_HOTKEY消息窗口句柄若该参数NULL传递给调用线程WM_HOTKEY消息必须消息循环进行处理 id:定义热键标识符调用线程其热键能使用同标识符应用功能程序必须定义0X0000-0xBFFF范围值共享态链接库(DLL)必须定义0xC000-0xFFFF范围值伯GlobalAddAtom函数返该范围)避免与其态链接库定义热键冲突DLL必须使用GlobalAddAtom函数获热键标识符 fsModifoers:定义产WM_HOTKEY消息必须与由nVirtKey参数定义键起按键该参数值组合: MOD_ALT:按任Alt键MOD_CONTROL:按任Ctrl键 MOD_SHIFT:按任Shift键 MOD_WIN:按任Windows按键vk:定义热键虚拟键码 返值:若函数调用功返非O值若函数调用失败则返值0若要获更错误信息调用GetLastError函数 备注:某键接系统所热键寻找匹配者旦找匹配热键系统WM_HOTKEY消息传递给登记该热键线程消息队列该消息传送队列部轮消息循环移该函数能热键同其线程创建窗口关联起 若热键定义击键其热键所定义则RegisterHotKey函数调用失败 若hWnd参数标识窗口已用与id参数定义相同标识符登记热键则参数fsModifiersvk新值替代些参数先前定义值 若设置MOD_KEYUP位则发键按或弹起事件窗口发送WM_HOTKEY消息 RegisterHotKey用线程间登记热键 UnregisterHotKey 函数功能:该函数释放调用线程先前登记热键 函数原型:BOOL UnregisterHotKey(HWND hWndint id); 参数: hWnd:与释放热键相关窗口句柄若热键与窗口相关则该参数NULL id:定义释放热键标识符 返值:若函数调用功返值0若函数调用失败返值0若要获更错误信息调用GetLastError函数 1、首先定义所需要用量 图所示窗体代码定义量API函数 代码: Public Const WM_HOTKEY As Integer = &H312 Public Const MOD_ALT As Integer = &H1 Public Const MOD_CONTROL As Integer = &H2 Public Const MOD_SHIFT As Integer = &H4 Public Const GWL_WNDPROC As Integer = (-4) Public Declare Auto Function RegisterHotKey Lib "user32.dll" Alias "RegisterHotKey" (ByVal hwnd As IntPtr, ByVal id As Integer, ByVal fsModifiers As Integer, ByVal vk As Integer) As Boolean Public Declare Auto Function UnRegisterHotKey Lib "user32.dll" Alias "UnregisterHotKey" (ByVal hwnd As IntPtr, ByVal id As Integer) As Boolean 面程注册Ctrl+T组合键组合键假注册功则返true反注册失败则返false我根据返结判断并提醒用户注册情况 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim isResult As Boolean isResult=RegisterHotKey(Handle, 0, MOD_CONTROL, Asc("T")) ’注册Ctrl+T组合键 If isResult = False Then MsgBox("注册热键Ctrl+T失败") End If End Sub [apge] 面程重载WndProc程响应热键并处理热键用隐藏显示程序主界面 Protected Overrides Sub WndProc(ByRef m As Message) If m.Msg = WM_HOTKEY Then System.Diagnostics.Process.Start("C:WINDOWSsystem32freecell.exe")'运行空接龙游戏End If MyBase.WndProc(m) End Sub 关闭窗体候释放占用热键前面注册失败则现释放失败结 Private Sub Form1_Closed(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Closed Dim isResult As Boolean isResult=UnRegisterHotKey(Handle, 0) End Sub 双击打指定程序 Private Sub Label1_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Label1.DoubleClick System.Diagnostics.Process.Start("C:WINDOWSsystem32freecell.exe") End SubSystem.Diagnostics.Process.Start("路径")打指定程序先列些吧

全部回答

问题分类

我 要 回 答 我 要 提 问
问题分类   验证码 换一组