C# MessageBox修改

來源:互聯網
上載者:User

參考以下兩篇文章 ,完成了在中文系統上顯示英文的對話方塊。非常高興,這個問題困擾了我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");
   }
 }

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.