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;
}
}