MFCサンプル:Collectについて – プログラミング – Home

MFCサンプル:Collectについて
 
通知
すべてクリア

[解決済] MFCサンプル:Collectについて


cc
 cc
(@cc)
ゲスト
結合: 23年前
投稿: 80
Topic starter  

いつもお世話になっています、ccです。

MFCサンプル:Collectを見ています、
幾つかのわかりにくい所があります。
1.Viewの変更メニュー(Example)の使い方
ON_COMMAND_RANGE(ID_STRINGLIST, ID_MAP, OnExample)
普段、インベトハンドラの追加を通じてやってますが、
ここで、そうではない。
手動でやっていますか。

2.自分でメニューを追加したのですが、(”自作View”、 ID_View1)
以下の通りです。
void CMainFrame::OnExample(UINT nCmdID)
{

CRuntimeClass* pNewViewClass;
switch (nCmdID)
{
case ID_STRINGLIST:
pNewViewClass = RUNTIME_CLASS(CStringListView);
break;
case ID_TYPEDLIST:
pNewViewClass = RUNTIME_CLASS(CTypedPtrListView);
break;

//追加したID
case ID_View1:
pNewViewClass = RUNTIME_CLASS(CTypedPtrListView);
break;
default:
ASSERT(0);
return;
}
結局、ID_View1は有効していなかった。(”自作View”の色がグレになった。)

どうやったら、有効になるのでしょうか。
(言い換えるとID_STRINGLISTはどういうふうに有効になったか)

よろしくお願いします。

環境:XP .Net2002 MFC


引用未解決
トピックタグ
仲澤@失業者
(@uncle_kei)
Prominent Member
結合: 5年前
投稿: 828
 

ON_COMMAND_RANGE(ID_STRINGLIST, ID_MAP, OnExample)

は、IDがID_STRINGLIST以上で、かつID_MAP以下ならOnExample()を
実行という意味です。
従って「ID_View1」の値が上記の範囲でないとメニューは有効になりません。


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

ID_STRINGLISTからID_MAPは値が連番になっていますか?


返信引用
cc
 cc
(@cc)
ゲスト
結合: 23年前
投稿: 80
Topic starter  

仲澤@失業者さん、Blueさん
ご回答ありがとう。

>従って「ID_View1」の値が上記の範囲でないとメニューは有効になりません。
なるほど、やってみたらその通りです。
ON_COMMAND_RANGE(ID_STRINGLIST, ID_View1, OnExample)
、”自作View”は有効になりました。

どうもありがとうございました。


返信引用
cc
 cc
(@cc)
ゲスト
結合: 23年前
投稿: 80
Topic starter  

解決チェックが忘れた。


返信引用
maru
 maru
(@maru)
ゲスト
結合: 17年前
投稿: 358
 

質問に対する答えは全てヘルプやMSDNに書いてあるのに
http://msdn.microsoft.com/ja-jp/library/9ab3z9tb(VS.80).aspx
ON_COMMAND_RANGEで検索すれば一発で引っかかるけど。

> 普段、インベトハンドラの追加を通じてやってますが、
> ここで、そうではない。
> 手動でやっていますか。
「メッセージ マップの範囲の自動サポートはないので、ユーザー自身がこのマクロを記
述する必要があります。」

> どうやったら、有効になるのでしょうか。
> (言い換えるとID_STRINGLISTはどういうふうに有効になったか)
「ある範囲のコマンド ID を 1 つのメンバ関数に割り当てるには ON_COMMAND_RANGE を
使用します。1 つのコマンドを 1 つのメンバ関数に割り当てるには ON_COMMAND を使用
します。メッセージ マップのエントリに一致するコマンド ID は 1 つだけです。つま
り、コマンドを複数のハンドラに割り当てることはできません。メッセージ マップ範囲
の詳細については、「範囲内のメッセージのハンドラ」を参照してください。」

> なるほど、やってみたらその通りです。
質問や、やってみる前に検索することを強くお勧めします。


返信引用
cc
 cc
(@cc)
ゲスト
結合: 23年前
投稿: 80
Topic starter  

maruさん
ご指摘ありがとう。

>質問や、やってみる前に検索することを強くお勧めします。
当時、検索のほうがうまくできませんでした。
アトバイス得てから、検索ができました。
ご指摘ありがとう。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました