Teď jste offline a čekáte, až se znova připojí internet.

Klíč TAB, klávesy se šipkami a klávesové zkratky nefungují očekávaným způsobem při ovládací prvek ActiveX je nadřazené okno nemodální dialogové okno nebo okno propertysheet

Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.

Projděte si také anglickou verzi článku:187988
Tento článek byl archivován. Je nabízen v takovém stavu, v jakém je, a nebude již nadále aktualizován.
Příznaky
Pokud ovládací prvek ActiveX je nadřazené okno nemodální dialogové okno nebo okno propertysheet, klíč TAB, klávesy se šipkami a klávesové zkratky nefungují podle očekávání. Klávesy TAB není vstupní fokus přesunout z jednoho ovládacího prvku do jiného. Stisknutím kláves se šipkami nebo klávesové zkratky v propertysheet nebo nemodální dialogové okno žádný účinek.
Příčina
Problém je ovládací prvek ActiveX nemá vlastní čerpadlo zpráv. Čerpadlo zpráv je vlastněna aplikace kontejneru. Proto všechny zprávy úhoz převzaty aplikace kontejneru a není odesílán nemodální dialogové okno pole nebo propertysheet.

Problém s modální dialogové okno pole/propertysheet nedochází, protože zpráva čerpadlo vlastněných dialogové okno Správce pole a činnostem zpracování všech zpráv stisknutí klávesy.
Řešení
Nainstalovat Windows WH_GETMESSAGE zavěšení pro pole/propertysheet odvozené třídy nemodální dialogové okno Povolit ji zachytit úhozy a zpracovat akcelerátory.
Prohlášení
Toto chování je záměrné.
Další informace
Následující ukázka způsob instalace systému Windows zavěšení zpráva nemodální třídy odvozené CPropertySheet:

Ukázkový kód

   // 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();   }				

Postup reprodukce problému

  1. Vyberte ControlWizard ActiveX MFC ActiveX vytvoření ovládacího prvku. Přijmout výchozí nastavení.
  2. Při poklepání uvnitř ovládacího prvku, zobrazit nemodální dialogové okno pole nebo propertysheet.
VÝSLEDKY: stisknutím klávesy TAB nebo klávesové zkratky při zobrazené nemodální dialogové okno propertysheet nebo pole nemá žádný vliv.
Odkazy
(c) Microsoft Corporation 1998, všechny rezervované práv. Příspěvky podle Yeong Kah Tam, společnost

OCX kbcodesam karty zavěšení dll mfcdll

Upozornění: Tento článek je přeložený automaticky

Vlastnosti

ID článku: 187988 - Poslední kontrola: 12/05/2015 08:49:23 - Revize: 6.1

Microsoft Foundation Class Library 4.2

  • kbnosurvey kbarchive kbmt kbcode kbctrlcreate kbdlg kbprb KB187988 KbMtcs
Váš názor