Office中国论坛/Access中国论坛

标题: 透明提示框! [打印本页]

作者: 5988143    时间: 2009-3-11 14:47
标题: 透明提示框!
  1. Option Compare Database

  2. Option Explicit
  3. Declare Function CreateWindowEx Lib "user32" Alias "CreateWindowExA" _
  4.                                 (ByVal dwExStyle As Long, _
  5.                                  ByVal lpClassName As String, _
  6.                                  ByVal lpWindowName As String, _
  7.                                  ByVal dwStyle As Long, _
  8.                                  ByVal x As Long, _
  9.                                  ByVal y As Long, _
  10.                                  ByVal nWidth As Long, _
  11.                                  ByVal nHeight As Long, _
  12.                                  ByVal hWndParent As Long, _
  13.                                  ByVal hMenu As Long, _
  14.                                  ByVal hInstance As Long, _
  15.                                  lpParam As Any) As Long

  16. Declare Function LoadIcon Lib "user32" Alias "LoadIconA" _
  17.                                 (ByVal hInstance As Long, _
  18.                                  ByVal lpIconName As String) As Long
  19. Declare Function LoadCursor Lib "user32" Alias "LoadCursorA" _
  20.                                 (ByVal hInstance As Long, _
  21.                                 ByVal lpCursorName As String) As Long
  22. Declare Function GetStockObject Lib "gdi32" (ByVal nIndex As Long) As Long
  23. Declare Function RegisterClassEx Lib "user32" Alias "RegisterClassExA" _
  24.                                 (pcWndClassEx As WNDCLASSEX) As Integer
  25. Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, _
  26.                                           ByVal nCmdShow As Long) As Long
  27. Declare Function UpdateWindow Lib "user32" (ByVal hwnd As Long) As Long
  28. Declare Function SetFocus Lib "user32" (ByVal hwnd As Long) As Long
  29. Declare Function PostMessage Lib "user32" Alias "ostMessageA" _
  30.                                         (ByVal hwnd As Long, _
  31.                                         ByVal wMsg As Long, _
  32.                                         ByVal wParam As Long, _
  33.                                         ByVal lParam As Long) As Long
  34. Declare Function DefWindowProc Lib "user32" Alias "DefWindowProcA" _
  35.                                         (ByVal hwnd As Long, _
  36.                                         ByVal wMsg As Long, _
  37.                                         ByVal wParam As Long, _
  38.                                         ByVal lParam As Long) As Long
  39. Declare Function GetMessage Lib "user32" Alias "GetMessageA" _
  40.                                         (lpMsg As MSG, _
  41.                                         ByVal hwnd As Long, _
  42.                                         ByVal wMsgFilterMin As Long, _
  43.                                         ByVal wMsgFilterMax As Long) As Long
  44. Declare Function TranslateMessage Lib "user32" (lpMsg As MSG) As Long
  45. Declare Function DispatchMessage Lib "user32" Alias "DispatchMessageA" (lpMsg As MSG) As Long
  46. Declare Sub PostQuitMessage Lib "user32" (ByVal nExitCode As Long)
  47. Declare Function BeginPaint Lib "user32" (ByVal hwnd As Long, lpPaint As PAINTSTRUCT) As Long
  48. Declare Function EndPaint Lib "user32" (ByVal hwnd As Long, lpPaint As PAINTSTRUCT) As Long
  49. Declare Function GetClientRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
  50. Declare Function DrawText Lib "user32" Alias "DrawTextA" (ByVal hdc As Long, _
  51.                                                           ByVal lpStr As String, _
  52.                                                           ByVal nCount As Long, _
  53.                                                           lpRect As RECT, _
  54.                                                           ByVal wFormat As Long) As Long
  55. Declare Function SetLayeredWindowAttributes Lib "user32" (ByVal hwnd As Long, _
  56.                                                           ByVal crKey As Long, _
  57.                                                           ByVal bAlpha As Byte, _
  58.                                                           ByVal dwFlags As Long) As Long
  59. Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" _
  60.                                                 (ByVal hwnd As Long, _
  61.                                                 ByVal nIndex As Long) As Long

  62. Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _
  63.                                                 (ByVal hwnd As Long, _
  64.                                                 ByVal nIndex As Long, _
  65.                                                 ByVal dwNewLong As Long) As Long

  66. Type WNDCLASSEX
  67. cbSize As Long
  68. style As Long
  69. lpfnWndProc As Long
  70. cbClsExtra As Long
  71. cbWndExtra As Long
  72. hInstance As Long
  73. hIcon As Long
  74. hCursor As Long
  75. hbrBackground As Long
  76. lpszMenuName As String
  77. lpszClassName As String
  78. hIconSm As Long
  79. End Type


  80. Type POINTAPI
  81. x As Long
  82. y As Long
  83. End Type

  84. Type MSG
  85. hwnd As Long
  86. message As Long
  87. wParam As Long
  88. lParam As Long
  89. time As Long
  90. pt As POINTAPI
  91. End Type

  92. Type RECT
  93. Left As Long
  94. Top As Long
  95. Right As Long
  96. Bottom As Long
  97. End Type

  98. Type PAINTSTRUCT
  99. hdc As Long
  100. fErase As Long
  101. rcPaint As RECT
  102. fRestore As Long
  103. fIncUpdate As Long
  104. rgbReserved(32) As Byte
  105. End Type

  106. Public Const WS_VISIBLE As Long = &H10000000
  107. Public Const WS_VSCROLL As Long = &H200000
  108. Public Const WS_TABSTOP As Long = &H10000
  109. Public Const WS_THICKFRAME As Long = &H40000
  110. Public Const WS_MAXIMIZE As Long = &H1000000
  111. Public Const WS_MAXIMIZEBOX As Long = &H10000
  112. Public Const WS_MINIMIZE As Long = &H20000000
  113. Public Const WS_MINIMIZEBOX As Long = &H20000
  114. Public Const WS_SYSMENU As Long = &H80000
  115. Public Const WS_BORDER As Long = &H800000
  116. Public Const WS_CAPTION As Long = &HC00000
  117. Public Const WS_CHILD As Long = &H40000000
  118. Public Const WS_CHILDWINDOW As Long = (WS_CHILD)
  119. Public Const WS_CLIPCHILDREN As Long = &H2000000
  120. Public Const WS_CLIPSIBLINGS As Long = &H4000000
  121. Public Const WS_DISABLED As Long = &H8000000
  122. Public Const WS_DLGFRAME As Long = &H400000
  123. Public Const WS_EX_ACCEPTFILES As Long = &H10&
  124. Public Const WS_EX_DLGMODALFRAME As Long = &H1&
  125. Public Const WS_EX_NOPARENTNOTIFY As Long = &H4&
  126. Public Const WS_EX_TOPMOST As Long = &H8&
  127. Public Const WS_EX_TRANSPARENT As Long = &H20&
  128. Public Const WS_GROUP As Long = &H20000
  129. Public Const WS_HSCROLL As Long = &H100000
  130. Public Const WS_ICONIC As Long = WS_MINIMIZE
  131. Public Const WS_OVERLAPPED As Long = &H0&
  132. Public Const WS_OVERLAPPEDWINDOW As Long = (WS_OVERLAPPED Or _
  133.                                             WS_CAPTION Or _
  134.                                             WS_SYSMENU Or _
  135.                                             WS_THICKFRAME Or _
  136.                                             WS_MINIMIZEBOX Or _
  137.                                             WS_MAXIMIZEBOX)
  138. Public Const WS_POPUP As Long = &H80000000
  139. Public Const WS_POPUPWINDOW As Long = (WS_POPUP Or WS_BORDER Or WS_SYSMENU)
  140. Public Const WS_SIZEBOX As Long = WS_THICKFRAME
  141. Public Const WS_TILED As Long = WS_OVERLAPPED
  142. Public Const WS_TILEDWINDOW As Long = WS_OVERLAPPEDWINDOW
  143. Public Const CW_USEDEFAULT As Long = &H80000000
  144. Public Const CS_HREDRAW As Long = &H2
  145. Public Const CS_VREDRAW As Long = &H1
  146. Public Const IDI_APPLICATION As Long = 32512&
  147. Public Const IDC_ARROW As Long = 32512&
  148. Public Const WHITE_BRUSH As Integer = 0
  149. Public Const BLACK_BRUSH As Integer = 4
  150. Public Const WM_KEYDOWN As Long = &H100
  151. Public Const WM_CLOSE As Long = &H10
  152. Public Const WM_DESTROY As Long = &H2
  153. Public Const WM_PAINT As Long = &HF
  154. Public Const SW_SHOWNORMAL As Long = 1
  155. Public Const DT_CENTER As Long = &H1
  156. Public Const DT_SINGLELINE As Long = &H20
  157. Public Const DT_VCENTER As Long = &H4
  158. Public Const WS_EX_PALETTEWINDOW As Long = &H188
  159. Public Const LWA_ALPHA = &H2
  160. Public Const GWL_EXSTYLE = (-20)
  161. Public Const WS_EX_LAYERED = &H80000
  162. Dim strMessage As String

  163. '-------------------------------------------------------------------------------


  164. Public Function displayMessage(mess As String) As Long
  165. strMessage = mess
  166. Const CLASSNAME = "我的信息提示~"
  167. Const TITLE = "透明提示框!"
  168. Dim hwnd As Long
  169. Dim wc As WNDCLASSEX
  170. Dim message As MSG

  171. wc.cbSize = Len(wc)
  172. wc.style = CS_HREDRAW Or CS_VREDRAW
  173. wc.lpfnWndProc = GetFuncPtr(AddressOf WindowProc)
  174. wc.cbClsExtra = 0&
  175. wc.cbWndExtra = 0&
  176. wc.hInstance = Application.hWndAccessApp
  177. wc.hIcon = LoadIcon(Application.hWndAccessApp, IDI_APPLICATION)
  178. wc.hCursor = LoadCursor(Application.hWndAccessApp, IDC_ARROW)
  179. wc.hbrBackground = GetStockObject(WHITE_BRUSH)
  180. wc.lpszMenuName = 0&
  181. wc.lpszClassName = CLASSNAME
  182. wc.hIconSm = LoadIcon(Application.hWndAccessApp, IDI_APPLICATION)

  183. RegisterClassEx wc

  184. hwnd = CreateWindowEx(WS_EX_PALETTEWINDOW, _
  185. CLASSNAME, _
  186. TITLE, _
  187. WS_OVERLAPPEDWINDOW, _
  188. 300, _
  189. 100, _
  190. 200, _
  191. 300, _
  192. 0&, _
  193. 0&, _
  194. Application.hWndAccessApp, _
  195. 0&)


  196. ShowWindow hwnd, SW_SHOWNORMAL
  197. UpdateWindow hwnd
  198. SetFocus hwnd


  199. Do While 0 <> GetMessage(message, 0&, 0&, 0&)
  200. TranslateMessage message
  201. DispatchMessage message
  202. Loop

  203. displayMessage = message.wParam
  204. End Function

  205. '--------------------------------------------------------------------------------
  206. Public Function WindowProc(ByVal hwnd As Long, _
  207.                            ByVal message As Long, _
  208.                            ByVal wParam As Long, _
  209.                            ByVal lParam As Long) As Long

  210. Dim ps As PAINTSTRUCT
  211. Dim rc As RECT
  212. Dim hdc As Long

  213. Select Case message

  214. Case WM_PAINT
  215. hdc = BeginPaint(hwnd, ps)
  216. Call GetClientRect(hwnd, rc)

  217. Call DrawText(hdc, strMessage, Len(strMessage), rc, DT_SINGLELINE Or _
  218.                DT_CENTER Or DT_VCENTER)
  219. Call EndPaint(hwnd, ps)

  220. Dim Ret As Long
  221. Ret = GetWindowLong(hwnd, GWL_EXSTYLE)
  222. Ret = Ret Or WS_EX_LAYERED
  223. SetWindowLong hwnd, GWL_EXSTYLE, Ret

  224. SetLayeredWindowAttributes hwnd, 0, 200, LWA_ALPHA

  225. Exit Function

  226. Case WM_KEYDOWN
  227. Call PostMessage(hwnd, WM_CLOSE, 0, 0)
  228. Exit Function

  229. Case WM_DESTROY
  230. PostQuitMessage 0&
  231. Exit Function

  232. Case Else

  233. WindowProc = DefWindowProc(hwnd, message, wParam, lParam)

  234. End Select


  235. End Function

  236. '--------------------------------------------------------------------------------
  237. Function GetFuncPtr(ByVal lngFnPtr As Long) As Long
  238. GetFuncPtr = lngFnPtr
  239. End Function


复制代码

作者: 5988143    时间: 2009-3-11 14:49
使用方法:


作者: andymark    时间: 2009-3-11 17:29
学习学习
作者: Henry D. Sy    时间: 2009-3-11 19:35
谢谢分享
作者: luhao    时间: 2009-3-11 20:10
2# 5988143

学习
作者: ACMAIN_CHM    时间: 2009-3-11 20:41
好!


******************
*  一切皆有可能  *
******************

.
ACMAIN - Access论坛回贴准则(个人).
.

.
QQ群 48866293 / 12035577 / 7440532 / 13666209
http://forum.csdn.net/BList/OtherDatabase .
http://www.accessbbs.cn/bbs/index.php .
http://www.accessoft.com/bbs/index.asp .
http://www.access-programmers.co.uk/forums .
http://www.office-cn.net .
.
http://www.office-cn.net/home/space.php?uid=141646 .
作者: chaojianan    时间: 2009-3-11 20:59
谢谢分享.
学习.
作者: jun_er    时间: 2009-3-11 21:11
学习学习
作者: 快乐王    时间: 2009-3-12 00:04
“Public Const
……”
这段代码怎么都是红字?
作者: 快乐王    时间: 2009-3-12 00:14
谢谢知道了,要放在模块中。
谢谢分享。
作者: ty_1029    时间: 2009-3-12 08:36
牛人~~~先放进去看看效果~~~
作者: tz-chf    时间: 2009-3-12 09:06
贴图看看
作者: t小宝    时间: 2009-3-12 10:15
这个有用!!
作者: fatmingli    时间: 2009-3-12 11:29
学习一下。
作者: kangking    时间: 2009-3-12 14:40
谢谢!
作者: asklove    时间: 2009-3-12 15:33
UPUP
作者: asklove    时间: 2009-3-12 15:41
非常漂亮
要是该窗体能记忆 改变后的大小 和 显示位置 那就更完美了
作者: meteorxp    时间: 2009-3-13 14:47
谢谢
作者: wangyufan    时间: 2009-3-13 15:04
学习一下
作者: xuwenning    时间: 2009-3-13 15:16
谢谢分享
学习学习

作者: koutx    时间: 2009-3-13 15:23
谢谢,收藏后学习。
作者: 轻风    时间: 2009-3-13 16:58
这么长的代码,晕。
作者: tmtming    时间: 2009-3-14 00:00
我也想学。谢谢。
作者: 红尘如烟    时间: 2009-3-14 03:10
学习一下
作者: popo559    时间: 2009-3-14 06:25
学习一下
作者: njy6000    时间: 2009-4-7 22:38
看看高手的作品,看不懂,反正拿来主义。
作者: jiayinlb    时间: 2009-4-11 12:20
学习
作者: syoan    时间: 2009-4-19 10:37
看看
作者: g7235723    时间: 2009-4-19 15:15
学习
作者: sxgaobo    时间: 2009-4-19 16:11
学习学习
作者: 13555609005    时间: 2009-4-20 22:50
学习
作者: df    时间: 2009-4-21 22:32
谢谢分享。
作者: wzh    时间: 2009-4-22 12:23
学习学习
作者: laiguiyou    时间: 2009-4-23 08:17
学习........
作者: yuly_lee    时间: 2009-4-23 20:18
什么东东?下来看看
作者: 朱同学    时间: 2009-4-23 21:04
学习再学习
作者: liaoqiang234    时间: 2009-6-1 19:05
xuexi
作者: 陈大林    时间: 2009-6-5 10:22
ddddd
作者: yanwei82123300    时间: 2009-6-5 15:51
学习学习
作者: mrl    时间: 2009-6-11 20:00
学习学习
作者: 付谦    时间: 2009-6-11 20:08
[学习
作者: goto2008    时间: 2009-6-16 01:35

作者: 石三少    时间: 2009-6-16 11:28
看看
作者: df    时间: 2009-6-16 20:02
谢谢分享
作者: xinle    时间: 2009-10-8 14:41
谢谢分享。
作者: zxklzxm1983    时间: 2009-10-8 14:42
学习
作者: 404702    时间: 2009-10-9 13:37
学习
作者: angpeu_9    时间: 2009-10-9 15:30
学习一下。
作者: fcghw    时间: 2009-11-5 23:29
谢谢分享
作者: lllll1    时间: 2009-11-5 23:33
学习
作者: sagemeyou    时间: 2009-11-7 22:43
kankan
作者: li08hua    时间: 2009-11-13 00:16
谢谢分享!
作者: njy6000    时间: 2009-11-13 14:35
学习,学习,再学习!
作者: chaosheng    时间: 2010-8-1 10:29
学习
作者: wang1950317    时间: 2010-8-2 09:25
学习学习!谢谢分享!
作者: lovehere    时间: 2010-8-4 09:49
这段代码好长好长啊
作者: ZHENGLIAN    时间: 2010-8-15 12:03
学习学习
作者: xiazaidj    时间: 2010-8-17 09:51
看看学习一下
作者: xjb_test    时间: 2010-8-17 13:40
谢谢
作者: gddsb    时间: 2010-8-20 23:53
学习学习
作者: 小桥人家    时间: 2010-8-21 07:46
学习一下
作者: szyewj    时间: 2010-8-22 14:59
学习学习,顶了再顶!
作者: li08hua    时间: 2010-8-22 16:45
学习,不过有些难度!
作者: lkkl66    时间: 2010-9-2 22:15
学习哦!
作者: valentine    时间: 2010-9-21 12:55
没有见过,学习学习
作者: 一克拉小猎    时间: 2010-9-21 15:19
x谢谢

作者: weikitwong    时间: 2010-9-23 23:16
see 有图就好了
作者: sxb2007    时间: 2010-9-24 19:58
谢谢分享
作者: youzhu119    时间: 2010-10-1 21:28
这个貌似不错哇..............
作者: szyewj    时间: 2011-5-11 00:44
学习学习
作者: 鱼儿游游    时间: 2011-11-5 21:32
谢谢分享
作者: daxin1    时间: 2011-11-5 23:22
谢谢分享

作者: efcndi    时间: 2011-11-7 10:46
什么东东
作者: yehf    时间: 2011-11-7 11:07
学习一下
作者: qxqjdy    时间: 2011-11-7 11:26
11111
作者: 风中漫步    时间: 2011-11-7 14:19
学学
作者: 风中漫步    时间: 2011-11-7 14:26
还是这个函数SetLayeredWindowAttributes的作用
作者: godzhong    时间: 2011-12-26 20:25
学习学习
作者: 凌晨三点钟    时间: 2011-12-27 08:34
学习学习,菜鸟报到
作者: xie62    时间: 2011-12-27 08:35
谢谢分享
作者: zhylee    时间: 2011-12-27 08:46
欣赏下
作者: longtengcz    时间: 2011-12-27 08:49
学习学习~
作者: 前程无忧    时间: 2011-12-28 21:25
好啊,要学习学习
作者: h150085001    时间: 2012-1-4 11:58
学习
作者: BILLFEI    时间: 2012-4-10 04:06

学习学习
作者: gxy1000    时间: 2012-8-3 17:52

作者: layaman_999    时间: 2012-8-3 18:21
look thanks
作者: dfang    时间: 2012-8-15 00:29

作者: faith200703    时间: 2012-8-16 06:44
xuexi 一下
作者: liu_sqing    时间: 2012-11-13 14:43

作者: huangli0356    时间: 2012-11-13 16:09
学习学习.

作者: xlyw    时间: 2012-12-29 14:00
活到老,学到老
作者: yinguojing    时间: 2013-4-20 18:07
学习
作者: yachtz    时间: 2013-5-17 09:30
需要学习
作者: jzbinbin5    时间: 2014-8-9 16:58
dddddddddddddd
作者: 站到终点站    时间: 2014-9-16 10:18
很好,很强大,学习了
作者: \~暀倳洳煙    时间: 2014-11-30 17:23
学习学习
作者: fengdaming777    时间: 2014-12-12 01:16
谢谢楼主分享。
作者: yanhantan    时间: 2015-5-3 00:54
学习下下





欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3