注意: BN_DOUBLECLICKED 訊息處理常式不叫用在 MFC 對話方塊

文章翻譯 文章翻譯
文章編號: 247323 - 檢視此文章適用的產品。
本文已封存。本文係以「現狀」提供且不會再更新。
全部展開 | 全部摺疊

在此頁中

徵狀

當您新增一個對話方塊或視窗上的按鈕 BN_DOUBLECLICKED 訊息處理常式,處理常式不會呼叫按兩下該按鈕時,Windows CE 上使用 MFC 的類別。這個處理常式是在 Microsoft Windows 95、 Microsoft Windows 98、 Microsoft Windows NT 4.0 及 Microsoft Windows 2000 上呼叫。

發生的原因

這個問題是因為 Windows CE 作業系統中的錯誤。

解決方案

一個可能的解決方式是加入之按鈕的 BN_CLICKED 處理常式。這個處理常式內的使用類似下列的程式碼來測試是否 「 按鈕已按下在最後一個幾毫秒:
  static BOOL s_bLastClicked = TRUE;
  static DWORD s_dwTickCount = 0;
  if (s_bLastClicked)
  {
    DWORD dwTickCount = GetTickCount();
    if ((dwTickCount - s_dwTickCount) < 500) //Last click less than 500ms?
    {
      s_bLastClicked = FALSE; //Was double-clicked, don't test next time...

      //Assume a double click...
      //Do your double-click code here...
    }
    s_dwTickCount = dwTickCount;
  }
  else
     s_bLastClicked = TRUE;
				
手動加入 CS_DBLCLKS 視窗類別樣式,並加入 BS_NOTIFY 樣式為 [] 按鈕沒有幫助。不過,此手動處理程序不會允許除了 Windows CE 外其他平台上執行時傳送訊息。

狀況說明

Microsoft 已確認這是在本文開頭所列之 Microsoft 產品中的有錯誤。

其他相關資訊

重製行為的步驟

  1. 使用 WCE MFC AppWizard 來建立新的對話方塊架構應用程式。接受所有預設值,然後按一下 [完成]。
  2. OnInitDialog] 方法中加入下列程式碼,傳回陳述式之前:
    SetClassLong(m_hWnd, GCL_STYLE, GetClassLong(m_hWnd, GCL_STYLE) | CS_DBLCLKS);
  3. 加入對話方塊] 按鈕。用右鍵按一下該按鈕,再按一下 [內容]。按一下 [樣式] 索引標籤並選取 [通知] 核取方塊。
  4. 使用 ClassWizard,方法是按一下 [檢視] 功能表,再選取功能表項目 ClassWizard。在 [物件的識別碼] 區段按一下 IDC_BUTTON1。在 [郵件] 區段之下按一下 [BN_DOUBLECLICKED 訊息]。按一下 [加入函式,] 然後按一下 [編輯程式碼
  5. 將一個中斷點放在按鈕 BN_DOUBLECLICKED 訊息處理常式。
  6. 建置應用程式,並執行它何時完成建置。
您應該注意到叫用中斷點並不取得或裝置上執行時在模擬器中執行。如果您不在 Windows CE 上執行的 Win32 應用程式在執行上述步驟,如預期般運作,處理常式。

屬性

文章編號: 247323 - 上次校閱: 2014年2月23日 - 版次: 2.0
這篇文章中的資訊適用於:
  • Microsoft Windows CE Toolkit for Visual C++ 6.0?應用於:
    • Microsoft Foundation Class Library 4.2
關鍵字:?
kbnosurvey kbarchive kbmt kbbug kbbutton KB247323 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:247323
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com