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

作者&投稿:产祥 (若有异议请与网页底部的电邮联系)
VB中如何调用系统字体对话框呢?~

在窗体上放一个commondialog控件

Private Sub Command1_Click ()
'将 Cancel 设置成 True。
CommonDialog1.CancelError = True
On Error GoTo ErrHandler
'设置 Flags 属性。
CommonDialog1.Flags = cdlCFBoth Or cdlCFEffects
'显示“字体”对话框。
CommonDialog1.ShowFont
'根据用户的选择来设置
'文本属性。
Text1.Font.Name = CommonDialog1.FontName
Text1.Font.Size = CommonDialog1.FontSize
Text1.Font.Bold = CommonDialog1.FontBold
Text1.Font.Italic = CommonDialog1.FontItalic
Text1.Font.Underline = CommonDialog1.FontUnderline
Text1.FontStrikethru = CommonDialog1.FontStrikethru
Text1.ForeColor = CommonDialog1.Color
Exit Sub
ErrHandler:
'用户按了“取消”按钮。
Exit Sub
End Sub

可以试试用common dialog控件。

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

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

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

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

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

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

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

自己设计个窗体吧


qq对话框中颜色的设置怎么改?
1、电脑登录QQ,打开一个好友对话框,然后点击更多设置图标。2、点击更多设置后,点击字体选择。3、选择字体选择后,点击选择气泡。4、进入气泡页面,可以根据情况选择气泡类型。5、点击气泡设置好之后,发送信息就可以看到对话框颜色变了。

...DoModal()一个我自己定义的对话框B后,如何把焦点设置在对话框B...
有两种方法:第一:在对话框B上,设计时将EDIT的Tab Order顺序设为第一个,这样默认的焦点就是EDIT 。第二:在对话框的初始化函数OnInitDialog()中使用成员函数SetFocus()GetDlgItem(IDC_EDIT1)->SetFocus();注意:要将OnInitDialog()的return TRUE;改为return FALSE;

在windows中,关于窗口和对话框,下列说法正确的是___.
正确的是(D) 窗口可以改变大小,而对话框不能。该答案是通过windows的帮助和支持找到的,具体的方法和步骤如下。1、点击windows系统的开始按钮,点击帮助与支持按钮,2、在给出的页面的搜索栏中输入窗口,点击查询按钮,点击匹配结果使用窗口按钮,3、页面给出的答案是:最小化、最大化和关闭按钮。这些...

excel表格日期下拉框怎么设置
3、弹出【数据有效性】的对话框,在允许的下拉菜单下,选择【序列】。 4、在来源的输入框当中,选择A列年份下的所有数据,单击确定。 5、对B列的月份和C列的日期进行同样的操作,可以看到年标题的右下角显示一个倒三角,单击即可出现下拉菜单,选择指定日期。 6、选择完毕后,多余的数据即可进行隐藏操作,选中数据后,单...

Ctrl+快捷键使用方法
Ctrl+B应用或取消加粗格式设置 Ctrl+C 复制选定的单元格 Ctrl+D 使用[向下填充]命令将选定范围内最顶层单元格的内容和格式复制到下面的单元格中Ctrl+F显示[查找]对话框 Ctrl+G显示[定位]对话框 Ctrl+H显示[查找和替换]对话框 Ctrl+S 使用其当前文件名、位置和格式保存活动文件 Ctrl+U应用或取消下划线 Ctrl+V...

MFC 有两个对话框A、B,A中有按钮C,要实现功能:单击C,弹出B并关闭A
这一句话要移动位置:CB pNewB;放在class Cexample的外面,设置程全局变量……而 if(!pNewB){ \/\/ 当B没有打开时 pNewB = new CB();\/\/ 这里要将IDD_DIALOG_B改为B对话框的ID号 pNewB->Create(IDD_DIALOG_B);\/\/ 这里根据情况修改SW_RESTORE,比如改成可以显示后就最大化之类的 pNewB...

MFC 有两个对话框A、B,A中有按钮C,要实现功能:单击C,弹出B并关闭A
这一句话要移动位置:CB* pNewB;放在class Cexample的外面,设置程全局变量……而 if(!pNewB) { \/\/ 当B没有打开时 pNewB = new CB();\/\/ 这里要将IDD_DIALOG_B改为B对话框的ID号 pNewB->Create(IDD_DIALOG_B);\/\/ 这里根据情况修改SW_RESTORE,比如改成可以显示后就最大化之类的 p...

JS 如何实现从A网页的链接弹出B网页,在B中修改数据点击保存后自动关闭...
下面几个属性是用在HTA中的,在一般的网页中一般不使用。10. dialogHide:{ yes | no | 1 | 0 | on | off }:在打印或者打印预览时对话框是否隐藏。默认为no。11. edge:{ sunken | raised }:指明对话框的边框样式。默认为raised。12. unadorned:{ yes | no | 1 | 0 | on ...

Word的页面设置对话框中,不能进行的设置是( )。
Word的页面设置中不能进行的设置的是段落间距,设置段落间距的方法:1、如下图,要求对文档中段落和段落之间的距离进行调整。2、点击选中需要编辑的段落,点击鼠标右键,在弹出的菜单选项中点击选择【段落】选项。3、如下图,通过上一步骤,系统弹出【段落】对话框。4、在弹出的【段落】对话框中,点击...

如图在AUTOCAD2007中,执行命令B块,弹出快对话框确定后,为何出现如图动 ...
类似于尺寸对话框啊,你可以选择添加动态,也可以不添加,添加了就是动态块了,不想添加就关上它,或者不管他就好

纳雍县17668722051: vb中如何改变对话框的字体 -
张彩盐酸: '方法是有,不过不建议这么做.你确定你还要这么做?确定?好吧.那就接着往下看. '只有想不到,没有做不到,看我无敌API......呵呵 '这段代码大部分是别人写的,我只是修改并封装成函数. '功能可扩展:颜色,背景图案,按钮颜色,按钮图案......

纳雍县17668722051: VB 点击按钮 设置文本框字体 -
张彩盐酸: 有一个通用对话框.方法如下:1、执行“工程”菜单的“部件”命令,打开“部件”对话框.2、在部件对话框,选择“控件”选项卡,在列表中找到“Microsoft Common Dialog Control 6.0”3、单击确定.通用对话框就会被加到工具箱中....

纳雍县17668722051: vb程序运行时怎么通过单击改变文本框的字体 -
张彩盐酸: Private Sub Text1_Click()Text1.FontName = "黑体" End Sub

纳雍县17668722051: vb中如何改变文本框中字体的类型 -
张彩盐酸: 先添加一个叫Microsoft Common Dialog Control 6.0的控件,然后代码如下:CommonDialog1.CancelError = True On Error GoTo errHandler CommonDialog1.Flags = cdlCFBoth + cdlCFPrinterFonts CommonDialog1.ShowFont Text1.FontBold ...

纳雍县17668722051: VB 6.0中,怎样改变菜单上的字体大小 -
张彩盐酸: 通过属性栏修改字体大小.在VB中按 F2 进入对象浏览器,在类一栏找到 “RichTextBox”选中会显示其成员 .或者直接选中窗体上的“ RichTextBox ”控件按 F1 (前提是已安装 MSDN ).选择— 属性 一栏打开查看然后修改.

纳雍县17668722051: 在vb中,怎样将文本框的字体在规定范围内随意放大、缩小1~3倍、还有还原为原来的大小? -
张彩盐酸: 可以设置一个全局变量a:Dim a As Integer,把窗体运行时的字体赋给a:Private Sub Form_Load() a =(对象名).FontSize End Sub 然后就可以在放大缩小之后令fontsize=a使得字号变成原始字号了.

纳雍县17668722051: vb中对象窗口的字体大小如何设置 -
张彩盐酸: 属性窗口里 Font

纳雍县17668722051: VB中怎样使代码窗口的字体变大? -
张彩盐酸: “工具”----“选项”-----“编辑器格式”,里面有字体大小设置

纳雍县17668722051: 如何更改VB中代码窗口的背景颜色,字体颜色等 -
张彩盐酸: 工具菜单/选项,在弹出的对话框中选“编辑器格式”标签,更改前景色和背景色即可.

纳雍县17668722051: VB如何改变form窗口字体大小 -
张彩盐酸: 1、鼠标点一下设计区里的窗体2、在右侧属性栏里找到 Font 属性,按需要修改之3、也可以在窗体里用代码实现,比如:Private Sub Form_Load() Me.Font.Name = "Verdana" Me.Font.Size = 12 Me.Font.Bold = True End Sub 具体选择的实现方式取决你自己的需要

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网