问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

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

发布网友 发布时间:2022-04-30 14:00

我来回答

5个回答

热心网友 时间:2022-06-22 21:41

'方法是有,不过不建议这么做.你确定你还要这么做?确定?好吧.那就接着往下看.
'只有想不到,没有做不到,看我无敌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

热心网友 时间:2022-06-22 21:42

使用时与一般的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-}

热心网友 时间:2022-06-22 21:42

想法不错,不过msgbox不是控件,无法改变字体属性,个人看法!!

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

如果非要改变字体,还有按钮的名称等,还是自己设计一个窗体模拟 msgbox

热心网友 时间:2022-06-22 21:43

是的,inputbox和msgbox的字体、颜色、大小等都不好改。

如果要美化他们,建议自己制作小窗体来代替他们,也不是很难,并且各种设置随心所欲。。

热心网友 时间:2022-06-22 21:44

自己设计个窗体吧
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
巴西龟最长活多久,家养!!! 养胃的药最好的是什么啊 婴儿积食发烧不愿吃药怎么办 板门穴位在哪个部位 手机设置放偷看的方法? 凝结水回收器生产厂家? 个人账户养老金预测公式:现有5万元,缴费20年,能领多少钱? 临沂比较有名的男装品牌 呼伦贝尔市悦动网络科技有限公司怎么样? 呼伦贝尔中汇实业有限公司怎么样? vba弹出对话框大小 Excel VBA 修改字体问题 使用msgbox时如何更改提示框上的字体颜色,大小等属性 正港手表是名牌吗? 在vb中如何设置MSGBOX里字体的大小? 正港手表如何卸表链?? 请教,在Excel VBA MsgBox函数中,对消息框的字号如何修改? vb中如何控制msgbox中字体的大小? 用VBA这个Msgbox输出大小写 正港多功能电子ZG504G-G手表怎么调日期? 小米(正港)手表如何用 川岛芳子是什么时候被捕的,她死了吗 为什么很长一段时间内川岛芳子都被日本谍报机关闲置起来? 川岛芳子怎么死的?拜托各位大神 戴笠对川岛芳子使用酷刑? 怎么分身两个 川岛芳子的真容,93年前的婚纱照为何十分惊艳? 行政案件终止调查的法律依据 治安终止调查的法条 行政案件终止调查后是否需要出结案报告书 &#47;&#47;指定字体大小 wb.exec(&#39;FontSize&#39;,7); 具体怎么用?我要设置的字体为win.msgbox()内的内容 vba msgbox 显示内容长度问题 把参考文献以后的字号全部设置成5号字,如何编程。VBA问题 我需要用VBA实现一段word文字,判断它是否是5号字体,是否是黑体,这个怎么实现呢? vba msg弹窗样式自定义 vba 代码 vba判断WORD字体是否是粗体 建行银行卡黄色16位数是借记卡还是信用卡 建行卡号只有16位数是不是 正常的? WORD一整篇文章,如何自动分段啊 求一个H3C网络实验室设备配置方案? word怎么分段,怎么合并段落,怎么把前一段 本人不太懂得路由请高手解答下 我在路由里输入dis cur后路由显示如下: H3C 3100交换机上配置 802.1X认证怎么来做?是在服务器做认证? H3C 配置ripv2 的详细配置,,还有就是MD5认证是在那个接口设置啊?请高手给个详细点的配置。。。 H3C 交换机配置,那个大神帮忙写一下代码 微信钱包怎么10元充值话费呀? h3c3600交换机三层交换机关于VLAN划分的 配置实例 H3C S5600 公网发布应用 配置实例 装逼群名