vb中如何改变对话框的字体

鄙人在做VB程序时希望改变Msgbox中显示的字体,问如何实现?

'方法是有,不过不建议这么做.你确定你还要这么做?确定?好吧.那就接着往下看.
'只有想不到,没有做不到,看我无敌API......呵呵
'这段代码大部分是别人写的,我只是修改并封装成函数.
'功能可扩展:颜色,背景图案,按钮颜色,按钮图案...(总之,很多很多...)

'函数调用方法:MyMsgBox 显示的信息,按钮,标题,字体名称(默认为宋体),字体大小,斜体,下划线,删除线

'窗体代码
Private Sub Command1_Click()
MyMsgBox "我变,我变,我变变变!!!!", vbYesNo, "- -|||", "黑体"
End Sub

'模块代码
Private Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long
Private Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
Private Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal nCode As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Private Declare Function EnumChildWindows Lib "user32" (ByVal hWndParent As Long, ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
Private Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
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
Private Declare Function CreateFont Lib "gdi32" Alias "CreateFontA" (ByVal H As Long, ByVal W As Long, ByVal E As Long, ByVal O As Long, ByVal W As Long, ByVal I As Long, ByVal u As Long, ByVal S As Long, ByVal C As Long, ByVal OP As Long, ByVal CP As Long, ByVal Q As Long, ByVal PAF As Long, ByVal F As String) As Long

Private Const HCBT_ACTIVATE = 5
Private Const WH_CBT = 5
Private Const DEFAULT_CHARSET = 1
Private Const OUT_TT_ONLY_PRECIS = 7
Private Const CLIP_DEFAULT_PRECIS = 0
Private Const DEFAULT_QUALITY = 0
Private Const FF_DONTCARE = 0
Private Const WM_SETFONT = &H30

Private hHook As Long
Private MsgBoxTitle As String
Private hFont As Long

Private Sub EnableHook()
If hHook = 0 Then
hHook = SetWindowsHookEx(WH_CBT, AddressOf HookProc, 0, App.ThreadID)
End If
End Sub
Private Sub FreeHook()
If hHook <> 0 Then
Call UnhookWindowsHookEx(hHook)
hHook = 0
End If
End Sub

Private Function HookProc(ByVal nCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If nCode < 0 Then
HookProc = CallNextHookEx(hHook, nCode, wParam, lParam)
Exit Function
End If
'当MsgBox Activate之前去更改Button的标题
If nCode = HCBT_ACTIVATE Then
Dim str5 As String
Dim len5 As Long, I As Long
str5 = String(255, 0)
len5 = 256
I = GetWindowText(wParam, str5, len5)
str5 = Left(str5, InStr(1, str5, Chr(0)) - 1)
'如果Active Window上的标题是MsgBox上的标题
'
If str5 = MsgBoxTitle Then
'取得MsgBox上的所有子window
Call EnumChildWindows(wParam, AddressOf ChgButtonTitle, 0)
End If
End If
HookProc = 0 '令待完成的动作继续完成,若为1,则取消原本要完成的动作
End Function

Private Function ChgButtonTitle(ByVal hwnd As Long, ByVal lParam As Long) As Long
Dim clsName As String
If hwnd = 0 Then
ChgButtonTitle = 0
Exit Function
End If
clsName = String(255, 0)
Call GetClassName(hwnd, clsName, 256)
clsName = Left(clsName, InStr(1, clsName, Chr(0)) - 1)
'找到Static型态的子Window,并更改其上的标题
If clsName = "Static" Then
SendMessage hwnd, WM_SETFONT, hFont, True
End If
ChgButtonTitle = 1 '表示继续找下一个子Window
End Function

Public Function MyMsgBox(ByVal Prompt As String, Optional ByVal Buttons As Long, Optional ByVal Title As String = " ", Optional ByVal sFontName As String = "宋体", Optional ByVal FontSize As Long, Optional ByVal FontItalic As Boolean = False, Optional ByVal FontUnderline As Boolean = False, Optional ByVal FontStrikethru As Boolean = False) As Long
hFont = CreateFont(FontSize, 0, 0, 0, 0, FontItalic, FontUnderline, FontStrikethru, DEFAULT_CHARSET, OUT_TT_ONLY_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, FF_DONTCARE, sFontName)
Call EnableHook
MsgBoxTitle = Title
MyMsgBox = MsgBox(Prompt, Buttons, MsgBoxTitle)
Call FreeHook
End Function
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-10-06
使用时与一般的WinAPI相差不多, 以下有一个包装过的函式.

MsgBox(提示文字, 标题, ID_Flat)
第叁个引数的设定与本函数传回值, 请参阅 WinAPI 中对MessageBox 的说明

本函数传入值为 Object Pascal 式的字串, 如果需要传入 PChar 请直接呼叫 Application.MessageBox
以 PChar(LongStr) 即可传入 Application.MessageBox不一定需要 call 本函数, 只是为了前后版本相容而保留本函数

function MsgBox(const sText, sCaption: string; wFlag: word): integer;

{$ifdef Windows}

{$define __ShortString}

{$endif}

{$ifdef Win32}

{$ifopt H-}
第2个回答  2008-10-10
想法不错,不过msgbox不是控件,无法改变字体属性,个人看法!!

或许改变系统默认字体可以才行!!

如果非要改变字体,还有按钮的名称等,还是自己设计一个窗体模拟 msgbox
第3个回答  2008-10-06
是的,inputbox和msgbox的字体、颜色、大小等都不好改。

如果要美化他们,建议自己制作小窗体来代替他们,也不是很难,并且各种设置随心所欲。。
第4个回答  2008-10-10
自己设计个窗体吧

vb代码窗口字体大小如何设置
在电脑主页面中,点击VB软件按钮,进入该应用;在该应用的主页面中,点击屏幕上方的工具按钮;在工具页面中,点击选项按钮;在选项页面中,点击编辑器格式按钮;在编辑器格式页面中,点击标准文本按钮;在标准文本页面中,点击字体按钮;在字体页面中,即可对字体进行修改。

vb代码窗口字体大小如何设置
1、首先,点击菜单栏中的工具按钮。2、然后点击二级菜单的选项。3、此时,便可以看到选项页面。4、接下来点击编辑器格式。5、在接下来就可以在这里设置字体大小。6、最后,点击确定按钮即可保存。7、完成效果图。

VB程序中更改字体字界面型怎么?
在VB程序中更改字体和字号,您可以使用以下代码:对象.FontName = "字体名称" 设置字体名称。将"字体名称"替换为您想要使用的字体,如"宋体"或"微软雅黑"。对象.FontSize = "字体号" 设置字体大小。将"字体号"替换为您需要的字号,例如12或14。例如,如果您想要将一个名为myLabel的标签的字体更改...

VB中如何改变文本框中被选定的字体的大小,而不是改变所有文本
1、执行“工程”菜单的“部件”命令,打开“部件”对话框。2、在部件对话框,选择“控件”选项卡,在列表中找到“microsoft common dialog control 6.0”3、单击确定。通用对话框就会被加到工具箱中。然后,添加通用对话框,将它的action属性设为4,就是这个字体选择对话框了。然后,你可以用下面的代码...

如何调整VB程序设计代码窗口中字体的大小?
在VB程序设计中,若要调整代码窗口中的字体大小,只需遵循以下步骤操作。首先,打开VB编辑器。在主菜单中,寻找并点击“工具”选项。在弹出的子菜单中,选择“选项...”选项。在新的窗口中,找到并点击“编辑器格式”选项。在“编辑器格式”设置页面里,找到并点击“大小”选项。此时,你可以根据个人...

VB 点击按钮 设置文本框字体
1、执行“工程”菜单的“部件”命令,打开“部件”对话框。2、在部件对话框,选择“控件”选项卡,在列表中找到“Microsoft Common Dialog Control 6.0”3、单击确定。通用对话框就会被加到工具箱中。然后,添加通用对话框,将它的Action属性设为4,就是这个字体选择对话框了。然后,你可以用下面的代码...

vb中如何改变文本框中字体的类型
从文本框的属性窗口中的 font项中修改,或用代码,比如:Text1.FontName = "黑体"

VB怎么改变文本框字体
比方说你要修改text1的字体,你需要先添加一个叫做Microsoft Common Dialog Control 6.0的控件(添加控件的方法就不用我介绍了吧),然后只要在你菜单的单击事件中加入如下代码即可:CommonDialog1.CancelError = True On Error GoTo errHandler CommonDialog1.Flags = cdlCFBoth + cdlCFPrinterFonts Comm...

vb中如何改变对话框的字体
'当MsgBox Activate之前去更改Button的标题 If nCode = HCBT_ACTIVATE Then Dim str5 As String Dim len5 As Long, I As Long str5 = String(255, 0)len5 = 256 I = GetWindowText(wParam, str5, len5)str5 = Left(str5, InStr(1, str5, Chr(0)) - 1)'如果Active Window上的标题...

VB程序中改变字体的代码是
1、首先,我们点击菜单栏中的工具按钮。2、然后我们点击二级菜单选项按钮。3、此时将会弹出选项对话框。4、这时候我们切换编辑器格式选项卡。5、然后我们就可以在这里更改字体大小。6、更改完毕后点击确定即可成功设置。

相似回答