コンテキストヘルプに関して

[戻る]
まなみ 2010/04/27(火) 15:20:21
いつもお世話になります。
WindowsXP,VC9にてCFormView+モードレスダイアログの組み合わせで
アプリを作成しています。
ダイアログのプロパティにてコンテキストヘルプにチェックを入れ
タイトルバーに?ボタンを表示させています。
この?ボタンをクリックすれば、マウスカーソルが変化し、
ヘルプモード(?)に変わりますが、CFormView側は通常カーソル
のままとなってしまいます。
CFormView側のヘルプモードに変更することはできないでしょうか?

いつも質問ばかりで申し訳ありませんが、宜しくお願い致します。

subaru 2010/04/27(火) 17:56:46
ウインドウに対して
SendMessage(WM_SYSCOMMAND, SC_CONTEXTHELP);
とかしてやるとヘルプモード(?)になってくれるようです。

#そのようなユーザーインターフェースが使いやすいか疑問ではありますが・・・

まなみ 2010/04/27(火) 18:09:04
回答ありがとうございます。

> ウインドウに対して
> SendMessage(WM_SYSCOMMAND, SC_CONTEXTHELP);
> とかしてやるとヘルプモード(?)になってくれるようです。
WM_SYSCOMMANDのイベントを捕まえて
AfxGetMainWnd()->SendMessage(WM_SYSCOMMAND, SC_CONTEXTHELP);
行ったところ、CFormViewは?になりましが、ダイアログ側はなりませんでした。
PostMessageに変更したところ、逆になりました。
やり方が間違っているのでしょうかね。

subaru 2010/04/28(水) 11:21:29
1つのウインドウでしか有効にならないような仕様なのかもしれませんね。
各ウインドウでカーソルだけIDC_HELPに変更してそのように見せかけるとかはダメ?(^_^;

まなみ 2010/04/28(水) 14:58:14
回答ありがとうざいます。

既に試みたんですが、OnSetCursorにも飛んでこないんです。
?ボタンを押した後は、押したウィンドウのみしかイベントが
発生していない感じです。

?ボタンが押されたときに、SC_CONTEXTHELPを処理するのではなく
疑似的に処理するしかないのかなと思っています。

でも、そーすると全てのボタンなどに今はヘルプ中だから・・・
ヘルプ中でないから通常処理と言う風に記述しないといけない
からかなり大変そうです。

古いスレッドには追加発言できません。