cricri_ | J'ai un souci avec cette procédure, ça fonctionnait sous 98SE à priori, et maintenant que je suis sous XP ça ne fonctionne plus correctement dans le sens où j'ai une erreur 87 la première fois que je passe dedans, par la suite tout se passe bien.
L'erreur 87 indique "invalide paramètre" lorsque je cherche à récupérer le handle du sous-menu.
Code :
- /* ------------------------------------------------------------------------- */
- HMENU IPluginManager::GetPluginMenu( bool bContext)
- /* ------------------------------------------------------------------------- */
- {
- HMENU hMenu = GetPlugMenu( bContext);
- // Modify menu on the fly, memorisation of this handle for
- // modification by the synchro procedure for standard menu.
- DoModifyMenu( hMenu);
-
- if ( !bContext)
- m_hMenuStd = hMenu;
- return( hMenu);
- }
- /* ------------------------------------------------------------------------- */
- void IPluginManager::DoModifyMenu( HMENU hMenu)
- /* ------------------------------------------------------------------------- */
- {
- static MENUITEMINFO sMenuItemInfo;
- HMENU hSubMenu = NULL;
- DWORD dwErr = 0;
- if ( hMenu == NULL || m_nRankOrder == 0)
- return;
- sMenuItemInfo.cbSize = sizeof( MENUITEMINFO);
- sMenuItemInfo.fMask = MIIM_SUBMENU;
- // get sub-menu
- if (!GetMenuItemInfo( hMenu, 0, TRUE, &sMenuItemInfo))
- dwErr = GetLastError();
- hSubMenu = sMenuItemInfo.hSubMenu;
- // set ID and text according to rank order
- sprintf( m_szRankMenu, "&Décodage On/Off\t%s%d",
- m_szBaseVirtKey, m_nRankOrder);
- sMenuItemInfo.dwTypeData = m_szRankMenu;
- sMenuItemInfo.wID = m_nID_PLUGIN_BASE + m_nRankOrder;
-
- if ( m_eOS == 95) {
- sMenuItemInfo.fMask = MIIM_TYPE | MIIM_ID; // | MIIM_STRING;
- sMenuItemInfo.fType = MFT_STRING;
- } else {
- sMenuItemInfo.fMask = MIIM_ID | MIIM_STRING;
- }
- SetMenuItemInfo( hSubMenu, 0, TRUE, &sMenuItemInfo);
- // set status
- SetStatusMenu( sMenuItemInfo.hSubMenu, sMenuItemInfo.wID,
- IsRunning() ? MFS_CHECKED : MFS_UNCHECKED);
- }
|
A priori le handle du menu principal est valide.
Si qqun a une idée ...
Merci.
|