您的位置:首页>聚焦>财经 >内容

信息内容字体怎么调大小(如何放大MessageBox提示信息字体的大小)

2022-07-20 23:48:17来源:
导读想必现在有很多小伙伴对于如何放大MessageBox提示信息字体的大小方面的知识都比较想要了解,那么今天小好小编就为大家收集了一些关于如何...

想必现在有很多小伙伴对于如何放大MessageBox提示信息字体的大小方面的知识都比较想要了解,那么今天小好小编就为大家收集了一些关于如何放大MessageBox提示信息字体的大小方面的知识分享给大家,希望大家会喜欢哦。

首先改按钮文字相必代码不少,就不说了

然后文字颜色和大小

C#代码,重构messagebox.show

未经芝士回答允许不得转话载本文内通容,否国则将视为侵养低权

private static bool HookWndProcess()

{

IntPtr hInstance = IntPtr.Zero;

int dwCurPID = 0;

int hThreadId = WIN32API.GetWindowThreadProcessId(Process.GetCurrentProcess().MainWindowHandle, ref dwCurPID);

//全局钩子,勾住回调类消息

分同种法机去但解象次任议,研织半列般细。

HookWndPro = new WIN32API.HookProc(WndProc);

在分同所进小业应它线质革,设任油什步验支局。

lHookWnd = WIN32API.SetWindowsHookEx(WIN32API.WH_CALLWNDPROC, HookWndPro, hInstance, hThreadId);

if (lHookWnd == 0)

return false;

else

return true;

}

///

/// 显示提示消息框

///

///提示消息内容

///

public static DialogResult Show(string Message)

{

string Title ="系统提示";

HookCBProcess();

HookWndProcess();

curMButtons = MessageBoxButtons.OK;

dlg = System.Windows.Forms.MessageBox.Show(GetNewMessage(Message), Title, MessageBoxButtons.OK, MessageBoxIcon.Information);

UnHookWndProcess();

Button1Text =""; Button2Text =""; Button3Text ="";

hWnd = 0;

return dlg;

}

先用HookWndProcess勾住WndProc

private static int WndProc(int nCode, Int32 wParam, IntPtr lParam)

{

WIN32API.CWPSTRUCT tCWP = new WIN32API.CWPSTRUCT();

string sClass;

//将lParm参数复制到结构CWPSTRUCT中,并检查消息是否为创建

WIN32API.CopyMemory_CWPSTRUCT(ref tCWP, (IntPtr)lParam, Marshal.SizeOf(tCWP));

if (tCWP.message == WIN32API.WM_CREATE)

{

StringBuilder sb = new StringBuilder(255);

WIN32API.GetClassName((IntPtr)tCWP.hWnd, sb, sb.MaxCapacity);

sClass = sb.ToString().Trim((char)0);

if (sClass =="#32770")

{

//#32770表示已经创建Msgbox

lWndPro = new WIN32API.WndProc(SubMsgBox);

lPrevWnd = WIN32API.SetWindowLong_Proc((IntPtr)tCWP.hWnd, WIN32API.GWL_WNDPROC, lWndPro);

}

}

return WIN32API.CallNextHookEx(lHookWnd, nCode, wParam, lParam);

}

然后在WndProc中检查WM_CREATE消息判断消息框是否创建

如已创建再把消息勾住并指向我们的自定义消息函数SubMsgBox

private static int SubMsgBox(IntPtr hWnd, int Msg, IntPtr wParam, IntPtr lParam)

{

switch (Msg)

{

//对话框颜色和标签颜色Message

case WIN32API.WM_CTLCOLORDLG:

case WIN32API.WM_CTLCOLORSTATIC:

//设置透明并改变颜色

if (Msg == WIN32API.WM_CTLCOLORSTATIC)

WIN32API.SetBkMode(wParam, WIN32API.TRANSPARENT);

lForecolor = BaseFun.ColorToRGB(TextColor);

WIN32API.SetTextColor(wParam, lForecolor);

WIN32API.SelectObject(wParam, TextFont.ToHfont());

//设置背景图片

return WIN32API.CreatePatternBrush(BackGround.GetHbitmap());

case WIN32API.WM_DESTROY:

//还原Msgbox的样式

WIN32API.SetWindowLong(hWnd, WIN32API.GWL_WNDPROC, (int)lPrevWnd);

break;

}

return WIN32API.CallWindowProc(lPrevWnd, hWnd, Msg, wParam, lParam);

}

在这个SubMsgBox中用

WIN32API.SetTextColor(wParam, lForecolor);

WIN32API.SelectObject(wParam, TextFont.ToHfont());

其中

return WIN32API.CreatePatternBrush(BackGround.GetHbitmap());

case WIN32API.WM_DESTROY:

还能修改对话框的背景图,我这里背景图是通过messagebox的附加属性实现,不过我没有设置

字体颜色和字体的更改最后再把已处理的消息放回队列中。

最后完成以后再用WIN32API.UnhookWindowsHookEx(lHookWnd)卸载消息钩子就行了

运行结果如下

重构的后MessageBox

原始

修改后

本文到此结束,希望对大家有所帮助。

免责声明:本文由用户上传,如有侵权请联系删除!

猜你喜欢

最新文章