當前位置:名人名言大全網 - 端午節短信 - 如何在VB6.0中設置Msgbox的背景色,急!

如何在VB6.0中設置Msgbox的背景色,急!

該副本尚未經過測試。妳自己試試。

獲取純色圖片作為背景

[計]選項

明確的

'*************************************************************

*模塊:mMsgBoxEx

*功能:改變對話框的字體為彩色,改變圖片的背景。

*調用:MsgBoxEx("改變背景對話框!"

,vbOKOnly,“提示”,,,

vbCyan)

'*************************************************************

私人的

CWPSTRUCT標牌

lParam組件

長的

wParam組件

長的

消息長度

hWnd

壹樣長

結束類型

私有聲明子復制內存庫“kernel32”別名

“RtlMoveMemory”(目標為任意,源為任意,ByVal長度為

龍)

私有聲明函數SetWindowsHookEx Lib“user 32”別名

“SetWindowsHookExA”(ByVal id hook為Long,ByVal lpfn為Long,ByVal hmod為

Long,ByVal dwThreadId壹樣長)壹樣長

私有聲明函數

調用nexthookex Lib“user 32”(ByVal hHook As Long,ByVal nCode As Long,ByVal

wParam壹樣長,lParam壹樣長)

私有聲明函數

unhook windowshookex Lib " user 32 "(ByVal hHook壹樣長)壹樣長

私人的

聲明函數SetWindowLong Lib“user 32”別名“SetWindowLongA”(ByVal hWnd

壹樣長,ByVal nIndex壹樣長,ByVal dwNewLong壹樣長

私人的

聲明函數CallWindowProc Lib“user 32”別名“CallWindowProcA”(ByVal

lpPrevWndFunc為Long,ByVal hWnd為Long,ByVal Msg為Long,ByVal wParam為

Long,ByVal lParam As Long)

私有聲明函數GetClassName Lib

“user32”別名“get class name a”(ByVal hWnd為Long,ByVal lpClassName為String,

ByVal nMaxCount壹樣長)壹樣長

私有聲明函數SetTextColor

lib“GDI 32”(ByVal hdc壹樣長,ByVal crColor壹樣長)壹樣長

私人的

將函數GetSysColor Lib“user 32”(ByVal nIndex壹樣長)聲明為

長的

私有聲明函數SetBkMode Lib " GDI 32 "(ByVal hdc As Long,

ByVal nBkMode壹樣長)壹樣長

私有聲明函數CreatePatternBrush

Lib "gdi32" (ByVal hBitmap壹樣長)壹樣長

透明處理

公共常數透明

= 1

私人常數WH_CALLWNDPROC = 4

私人常數GWL_WNDPROC =

(-4)

私有常量WM _ CTLCOLORBTN = & ampH135

私有常量WM_DESTROY =

& amp氘

私有常量WM _ SETTEXT = & ampHC

私有常量WM_CREATE =

& ampH1

系統顏色常數

私有常量COLOR_BTNFACE =

15

private Const COLOR _ BTN text = 18

Windows消息

私人的

Const WM _ CTLCOLORSTATIC = & ampH138

私有常量WM_CTLCOLORDLG =

& ampH136

列兵長

私有lPrevWnd As

長的

Private lForecolor壹樣長

公共函數SubMsgBox(ByVal

hWnd為Long,ByVal Msg為Long,ByVal wParam為Long,ByVal lParam為Long)

長的

Dim文本為

選擇案例

味精

對話框顏色和標簽顏色消息

情況

WM_CTLCOLORDLG,

WM_CTLCOLORSTATIC

調試。打印

wParam & amp

":Wparam "

壹組

字體背面透明度

並且改變顏色。

如果

Msg = WM_CTLCOLORSTATIC

然後

打電話

SetBkMode(wParam,

透明)

結束

如果

打電話

SetTextColor(wParam,

lForecolor)

壹組

背景

圖片.

子消息框

= CreatePatternBrush(LoadResPicture(101,

0).手柄)

LoadResPicture(101,

0).處理

是資源文件中ID為101的圖片。

出口

功能

情況

WM _銷毀

去除

MsgBox

子類

打電話

SetWindowLong(hWnd,GWL_WNDPROC,lPrevWnd)

結束

挑選

SubMsgBox = CallWindowProc(lPrevWnd,hWnd,

Msg,wParam,ByVal lParam)

結束功能

私人功能

HookWindow(ByVal nCode壹樣長,ByVal wParam壹樣長,ByVal lParam壹樣長)作為

長的

Dim tCWP組件

CWPSTRUCT

模糊類別為

這是妳需要掛鉤的地方

Messagebox

復制記憶tCWP,ByVal lParam,

Len(tCWP)

如果tCWP.message = WM_CREATE

然後

sClass =

空間(255)

sClass =

Left(sClass,GetClassName(tCWP.hWnd,ByVal sClass,

255))

如果sClass = "#32770 "

然後

亞綱

現有的Messagebox

創造

lPrevWnd

= SetWindowLong(tCWP.hWnd,GWL_WNDPROC,AddressOf

子消息框)

結束

如果

如果…就會結束

HookWindow =

CallNextHookEx(lHook,nCode,wParam,ByVal lParam)

結束功能

公共

函數MsgBoxEx(ByVal提示為字符串,可選ByVal按鈕為

VbMsgBoxStyle,字符串形式的可選ByVal標題,字符串形式的可選ByVal幫助文件

String,可選ByVal Context As Long,可選ByVal ForeColor As

ColorConstants = -1)壹樣長

Dim lReturn As

長的

lHook = SetWindowsHookEx(WH _ CALLWNDPROC

HookWindow的地址,

App。ThreadID)

設置

默認

如果Len(Title) = 0,則Title =

App。標題

lForecolor =

GetSysColor(COLOR_BTNTEXT)

If ForeColor & gt那麽= 0

lForecolor =前景色

顯示修改過的

對話框

lReturn = MsgBox(提示,按鈕,標題,

幫助文件,上下文)

打電話

UnhookWindowsHookEx(lHook)

MsgBoxEx = lReturn

結束

功能

這是壹個公共模塊。但是圖片是固定在資源文件裏的,沒有想到別的辦法。

如果有人想到其他的解決方法,請告訴我,我們可以互相學習。^_^

其中包括:

LoadResPicture(101,

0).處理

是資源文件中ID為101的圖片。

您也可以在表單的圖片框中將其更改為圖片。

比如:form 1 . picture 1 . picture . handle。