明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2993|回复: 7

[VBA]VBA窗体上图标

[复制链接]
发表于 2003-10-22 22:07:00 | 显示全部楼层 |阅读模式
很想在VB窗体上搞个图标,但一直找不到方法
到底有没有方法能够实现在VBA/VB窗体左上角文字之前显示一个小图标呢?
发表于 2003-10-23 11:42:00 | 显示全部楼层
用下面的代码可以实现,在VB中直接使用窗体的Hwnd,而不需要GetActiveWindow获取当前活动窗口的句柄。
不过有个问题,在VBA中的标题前面部分被遮住了。


  1. Private Declare Function GetActiveWindow Lib "user32" () As Long
  2. Private Declare Function LoadImage Lib "user32" Alias "LoadImageA" (ByVal hInst As Long, ByVal lpsz As String, ByVal un1 As Long, ByVal n1 As Long, ByVal n2 As Long, ByVal un2 As Long) As Long
  3. Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal Hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
  4. Private Const WM_SETICON = &H80
  5. Private Const IMAGE_ICON = 1
  6. Private Const LR_LOADFROMFILE = &H10

  7. Private Sub UserForm_Activate()
  8.     Dim Hwnd As Long
  9.     Hwnd = GetActiveWindow
  10.     Dim hIcon As Long
  11.     hIcon = LoadImage(0&, "c:\光缆.ico", IMAGE_ICON, 16, 16, LR_LOADFROMFILE)
  12.     If hIcon <> 0 Then
  13.         Call SendMessage(Hwnd, WM_SETICON, 0, ByVal hIcon)
  14.     End If
  15. End Sub
 楼主| 发表于 2003-10-23 13:15:00 | 显示全部楼层
多谢!
发表于 2003-11-13 18:42:00 | 显示全部楼层
是不是一定要是ico的,而且是16X16的?
发表于 2003-11-15 19:27:00 | 显示全部楼层
图标肯定要使用ICO类型的,但大小一般情况下是16*16,如果一定要与标准的风格相异时,也可以自已设定大小。
发表于 2005-6-30 17:43:00 | 显示全部楼层
先在窗体的标题前空6空格,再重新赋予无空格的标题就可以消除被遮现象.
发表于 2005-7-1 01:14:00 | 显示全部楼层

reply

窗体标题被遮住一部分,只要刷新一下窗体就可以了,可以这样


Me.Caption = Me.Caption加到efan2000的代码中
发表于 2013-8-24 11:32:57 | 显示全部楼层
学习一下!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 13:02 , Processed in 0.167025 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表