C# MessageBox修改

<script language='javascript' src='http://www.shiqiaotou.com/donetk/Header.js'></script>

参考以下两篇文章 ,完成了在中文系统上显示英文的对话框。非常高兴,这个问题困扰了我3天之久。现在终于解决了。

主要使用技术,关键词包括:C#中使用钩子函数。

http://www.codeproject.com/cpp/dMsgBox.asp
How to change the MessageBox window
http://www.codeproject.com/cs/miscctrl/MessageBoxChk.asp
A "Don't show this again" checkbox for the .NET MessageBox

构造函数

public MessageBoxInternal()
  {
   //
   // TODO: Add constructor logic here
   //
   m_cbt = new LocalCbtHook();
   m_cbt.WindowCreated += new  LocalCbtHook.CbtEventHandler(WndCreated);
   m_cbt.WindowDestroyed += new LocalCbtHook.CbtEventHandler(WndDestroyed);
   m_cbt.WindowActivated += new LocalCbtHook.CbtEventHandler(WndActivated);    
  }

 private void WndCreated(object sender, CbtEventArgs e)
  {
  
   if (e.IsDialogWindow)
   {
    m_bInit = false;
    m_hwnd = e.Handle;
   }
  }

  private void WndDestroyed(object sender, CbtEventArgs e)
  {
   if (e.Handle == m_hwnd)
   {
    m_bInit = false;
    m_hwnd = IntPtr.Zero;
//    if(BST_CHECKED == (int)SendMessage(m_hwndBtn,BM_GETCHECK,IntPtr.Zero,IntPtr.Zero))
//     m_bCheck = true;
   }
  }

  private void WndActivated(object sender, CbtEventArgs e)
  {
   if (m_hwnd != e.Handle)
    return;

   // Not the first time
   if (m_bInit)
    return;
   else
    m_bInit = true;

   if ( Thread.CurrentThread.CurrentUICulture.LCID == (new System.Globalization.CultureInfo("en-US")).LCID)  
   {
    SetDlgItemText(m_hwnd, IDOK ,"&OK");
    SetDlgItemText(m_hwnd, IDCANCEL ,"&Cancel");
    SetDlgItemText(m_hwnd, IDABORT ,"&Abort");
    SetDlgItemText(m_hwnd, IDRETRY ,"&Retry");
    SetDlgItemText(m_hwnd, IDIGNORE ,"&Ignore");
    SetDlgItemText(m_hwnd, IDYES ,"&Yes");
    SetDlgItemText(m_hwnd, IDNO ,"&No");
   }
 }

<script language='javascript' src='http://www.shiqiaotou.com/donetk/Footer.js'></script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值