目次

Win Help コマンドの処置

 

  Windows8 以降で Win Help の [ ヘルプ ] コマンドをクリックすると、勝手に Microsoft Edge が立ち上がり大変面倒です。

  Win Help を搭載したアプリケーションならば Windows のバージョンをチェックしてコマンドを無効にする関数を用意した方が良いでしょう。

  F1キーによる Win Help の立ち上げ機能は対処方法が分かりません。String Table でメッセージを変えておきます。

 

以下参考コード

 

  AFX_IDS_IDLEMESSAGE ヘルプを表示するには F1 を押してください。Windows8 以降では F1 を押さないでください。  

 

void CHhelpApp::OnUpdateHelpFinder(CCmdUI* pCmdUI)

{

      //Win Help

      if ( m_WinHelp)

      {

            pCmdUI->Enable( TRUE);

      }

      else

      {

            pCmdUI->Enable( FALSE);

      }

}

 

ヘルプコンテキストも無効化します。

 

//Win Help Context//MAINFRAMEメニューの場合は nFrame::OnUpdateContextHelp(CCmdUI* pCmdUI)

void CHhelpApp::OnUpdateContextHelp(CCmdUI* pCmdUI)

{

      if ( m_WinHelp)

      {

            pCmdUI->Enable( TRUE);

      }

      else

      {

            pCmdUI->Enable( FALSE);

      }

}

 

void CHhelpApp::CheckWinVer()

{

      //Windows Version をチェックしWinHelp目次の表示モードm_WinHelpをセットする

      OSVERSIONINFOEX verex;

      verex.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);

      GetVersionEx((OSVERSIONINFO*)&verex);

      int MajorVersion = verex.dwMajorVersion;

      int MinorVersion = verex.dwMinorVersion;

      //int ProductType = verex.dwProductType;   //MSDEV6ではverexにないメンバ

      m_WinHelp = TRUE;

      if ( MajorVersion == 3 && MinorVersion == 1);                //NT 3.1

      else if ( MajorVersion == 3 && MinorVersion == 5);           //NT

      else if ( MajorVersion == 3 && MinorVersion == 51);          //NT 3.51

      //else if ( MajorVersion == 4 && MinorVersion == 0 && ProductType == 1);             //NT 4.0

      //else if ( MajorVersion == 4 && MinorVersion == 0 && ProductType == 0);             //95

      else if ( MajorVersion == 4 && MinorVersion == 0);           //NT 4.0 //95

      else if ( MajorVersion == 4 && MinorVersion == 10);          //98 //98SE

      else if ( MajorVersion == 4 && MinorVersion == 90);          //me

      else if ( MajorVersion == 5 && MinorVersion == 0);           //2000

      else if ( MajorVersion == 5 && MinorVersion == 1);           //XP

      else if ( MajorVersion == 5 && MinorVersion == 2);           //2003R2

      else if ( MajorVersion == 6 && MinorVersion == 0);           //Vista

      //else if ( MajorVersion == 6 && MinorVersion == 1 && ProductType == 1);             //7

      //else if ( MajorVersion == 6 && MinorVersion == 1 && ProductType == 3);             //2008R2

      else if ( MajorVersion == 6 && MinorVersion == 1);           //7 //2008R2

      //WinHelpは8.1までサポートしているが

      //マニフェストを指定しない場合ではWindows 10ではWindows8相当の答えが返ってくる

      //else if ( MajorVersion == 6 && MinorVersion == 2);         //8 //2012

      //else if ( MajorVersion == 6 && MinorVersion == 3);         //8.1 //2012R2

      //else if ( MajorVersion == 10 && MinorVersion == 0);        //10

      else

      {

            m_WinHelp = FALSE;

      }

}