Sekme tuşu, ok tuşlarını ve kısayol tuşları üst pencere engelleyici olmayan iletişim kutusu veya bir <a0>propertysheet</a0> penceresinin bir ActiveX denetimi, beklendiği gibi çalışmıyor

ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.

Makalenin İngilizcesi aşağıdaki gibidir:187988
Bu makale arşivlenmiştir. "Olduğu gibi" sunulmaktadır ve bundan sonra güncelleştirilmeyecektir.
Belirtiler
Bir ActiveX denetimi üst pencere engelleyici olmayan iletişim kutusu veya propertysheet penceresi, SEKME tuşu, ok tuşlarını ve kısayol tuşları beklendiği gibi çalışmıyor. Sekme tuşu giriş odaklı bir denetimden diğerine hareket etmez. Pencere kısayol tuşları engelleyici olmayan iletişim kutusu veya propertysheet ve ok tuşlarına basarak hiçbir etkisi olmaz.
Neden
ActiveX denetimi, ileti pump sahip olmayan bir sorun değildir. Kapsayıcı uygulama tarafından ileti pump sahibi. Bu nedenle, tuş vuruşu iletileri kapsayıcısı uygulama tarafından gerçekleştirilen ve engelleyici olmayan iletişim kutusu veya propertysheet penceresine gönderilir.

Iletinin pump iletişim kutusu yöneticiniz tarafından aittir ve, gereken tüm tuş vuruşu iletileri işleme dikkate sorun bir kalıcı iletişim kutusu/propertysheet pencere oluşmaz.
Çözüm
Engelleyici olmayan iletişim kutusu/propertysheet türetilmiş sınıfı, tuş vuruşlarını yakalamak ve bu hızlandırıcılar izin vermek için bir Windows WH_GETMESSAGE kanca yükleyin.
Durum
Bu davranış tasarım yüzündendir.
Daha fazla bilgi
Aşağıdaki örnek, Windows yüklemek için yol gösterir ileti kanca modsuz CPropertySheet türetilmiş sınıf için:

Örnek kod

   // Handle to the Windows Message hook. It can be a global variable or a   // member variable in your CPropertySheet-derived class.   HHOOK hHook = NULL;   // Hook procedure for WH_GETMESSAGE hook type.   LRESULT CALLBACK GetMessageProc(int nCode, WPARAM wParam, LPARAM lParam)   {      // Switch the module state for the correct handle to be used.      AFX_MANAGE_STATE(AfxGetStaticModuleState( ));      // If this is a keystrokes message, translate it in controls'      // PreTranslateMessage().      LPMSG lpMsg = (LPMSG) lParam;      if( (nCode >= 0) &&         PM_REMOVE == wParam &&         (lpMsg->message >= WM_KEYFIRST && lpMsg->message <= WM_KEYLAST) &&         AfxGetApp()->PreTranslateMessage((LPMSG)lParam) )         {         // The value returned from this hookproc is ignored, and it cannot         // be used to tell Windows the message has been handled. To avoid         // further processing, convert the message to WM_NULL before         // returning.         lpMsg->message = WM_NULL;         lpMsg->lParam = 0L;         lpMsg->wParam = 0;         }      // Passes the hook information to the next hook procedure in      // the current hook chain.      return ::CallNextHookEx(hHook, nCode, wParam, lParam);   }   // Declare and define the following two functions:   BOOL CModelessPropertySheet::OnInitDialog()   {      CPropertySheet::OnInitDialog();      // Install the WH_GETMESSAGE hook function.      hHook = ::SetWindowsHookEx(         WH_GETMESSAGE,         GetMessageProc,         AfxGetInstanceHandle(),         GetCurrentThreadId());      ASSERT (hHook);      return TRUE;   // Return TRUE unless you set the focus to a control.                     // EXCEPTION: OCX Property Pages should return FALSE.   }   void CModelessPropertySheet::OnClose()   {      // Uninstall the WH_GETMESSAGE hook function.      VERIFY (::UnhookWindowsHookEx (hHook));      CPropertySheet::OnClose();   }				

Sorunu Yeniden Oluşturma Adımları

  1. Bir ActiveX oluşturmak için MFC ActiveX ControlWizard seçin denetim. Tüm varsayılan ayarları kabul edin.
  2. Denetimin içini çift engelleyici olmayan iletişim kutusu veya propertysheet penceresini görüntüler.
Sonuç: engelleyici olmayan iletişim kutusu veya propertysheet penceresinde gösterilen, SEKME tuşuna veya kısayol tuşlarına basmak hiçbir etkisi olmaz.
Referanslar
(c) Microsoft Corporation 1998, tüm hakları saklıdır. Katkıyı Yeong Kah Tam, Microsoft Corporation.

ocx kbcodesam sekmeler Kancaları dll mfcdll

Uyarı: Bu makalenin çevirisi otomatik olarak yapılmıştır

Özellikler

Makale No: 187988 - Son İnceleme: 12/05/2015 08:49:28 - Düzeltme: 6.1

Microsoft Foundation Class Library 4.2

  • kbnosurvey kbarchive kbmt kbcode kbctrlcreate kbdlg kbprb KB187988 KbMttr
Geri bildirim