ウィンドウをCreateする時のIDの指定 – プログラミング – Home

ウィンドウをCreateする時のIDの...
 
通知
すべてクリア

[解決済] ウィンドウをCreateする時のIDの指定


もも
 もも
(@もも)
ゲスト
結合: 24年前
投稿: 36
Topic starter  

VC++6.0 MFC使ってます。

CWnd::Create()の引数に
nID(子ウィンドウの ID を指定します。)
というのがありますが、
このIDは、アプリケーション内で重複してはいけない。
という認識でいます。

サンプル等では、適当(?)に123とかを使用しているのを
よく見かけるのですが、
実際、IDが重複しないようにするために、皆さんはどういう方法を
とっているのでしょうか?
未使用のIDを取得するような関数があるのでしょうか?

よろしくお願いします。


引用未解決
トピックタグ
zeta
 zeta
(@zeta)
ゲスト
結合: 22年前
投稿: 20
 

メインメニュー>表示>シンボルブラウザ で[新規]ボタンで重複しないIDを定義できるので
は?


返信引用
いぷ
 いぷ
(@いぷ)
ゲスト
結合: 23年前
投稿: 6
 

>このIDは、アプリケーション内で重複してはいけない。

同じ親を持つ子ウィンドウ同士で重複しなければ大丈夫です。


返信引用
もも
 もも
(@もも)
ゲスト
結合: 24年前
投稿: 36
Topic starter  

zetaさん、いぷさんありがとうございます。

まず、何故こんな質問をしたかについて補足します。
MDIアプリケーションで、viewAを親とする
wndA(CWndクラスから派生)を生成するとします。

このとき、プログラムは
nID = 123;
wndA.Create(...., nID,... )
となりますが、

viewAが複数作られた場合、ID=123のwndAが複数できてしまうことが
NGなのだと思っていました。

しかし、いぷさんに

>>このIDは、アプリケーション内で重複してはいけない。
>
>同じ親を持つ子ウィンドウ同士で重複しなければ大丈夫です。

と教えていただいたので、NGではないことが分かりました。

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


返信引用
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

>>このIDは、アプリケーション内で重複してはいけない。

>同じ親を持つ子ウィンドウ同士で重複しなければ大丈夫です。

その通りですし、GetDlgItem()でIDからコントロールを探す
つもりが無いなら、重複しても構いません。
リソースエディタでのスタティックテキストの
デフォルトIDは全部ID_STATICですし。


返信引用
もも
 もも
(@もも)
ゲスト
結合: 24年前
投稿: 36
Topic starter  

dairygoodsさん、ありがとうございます。

解決後で申し訳ないんですが、ひとつ確認させてください。

たとえば、同じ親の子としてwndAを複数生成するとします。

UINT nID=100;
for (int i = 0; i<5; I++)
{
wndA.Create(...., nID,... );
}
↑これでOKということでしょうか?

私は、nIDが重複してはいけないと思っていて、
for (int i = 0; i<5; I++)
{
wndA.Create(...., nID+i,... );
}
としていましたが、これは必要ないということでしょうか?


返信引用
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

> for (int i = 0; i<5; I++)
> {
> wndA.Create(...., nID,... );
> }

これでも問題はありません。

IDを使ってウィンドウを区別する場面はGetDlgItem()以外にもありましたね。
WM_COMMAND, WM_NOTIFYメッセージを振り分ける場合です。

OS自体がIDを使って何かすることは無いので、
結局自分で使うときに便利な番号を振っておけばよいわけです。


返信引用
もも
 もも
(@もも)
ゲスト
結合: 24年前
投稿: 36
Topic starter  

dairygoods さん、お世話になります。

>結局自分で使うときに便利な番号を振っておけばよいわけです。

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


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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