CPropertySheet
タブの変更に関する情報は表示されません。
PSN_SETACTIVE
とPSN_KILLACTIVE
が代わりにCPropertyPage
に送信されます。タブが選択/選択解除されているときは、各PropertyPageでこれらのメッセージを処理する必要があります。次のようにあなたがこれを扱うことができるMFCで
:
class CMyPropertyPage: public CPropertyPage
{
BOOL OnSetActive();
BOOL OnKillActive();
...
};
BOOL CMyPropertyPage:OnSetActive()
{
BOOL res = CPropertyPage::OnSetActive();
TRACE("CMyPropertyPage tab selected\n");
return res;
}
BOOL CMyPropertyPage:OnKillActive()
{
BOOL res = CPropertyPage::OnKillActive();
TRACE("CMyPropertyPage tab unselected\n");
return res;
}
も参照してください:
WinAPI property sheet
CPropertyPage::OnSetActive
をCMyView
に通知を送信するには、ターゲットへのハンドルを見つける必要がありますし、メッセージを渡す。
PSN_SETACTIVEは、CPropertySheetでも処理できます。あなたの解決策は正しいです。しかし、ある場合にはそれは機能しません。たとえば、このメソッドを処理している間は、ページを削除するか、プロパティシートにページを追加することはできません。また、現在のフレームも破棄できません。 –
あなたは私の答えが馬鹿に見えるようにあなたの質問を完全に変えました。あなたは 'PSN_SETACTIVE'を望んでいないと書いています**後は** PSN_SETACTIVEを使う答えを出しました。あなたはあなたの質問を編集したことに言及していません。 'PSN_SETACTIVE'がなぜ間違っているのかを説明するドキュメントとともに、他の奇妙な要件を追加しました。 –
あなたのソリューションは私には役立ちますが、私の問題には適していません –