初日 最新 目次 MAIL HOME


*-- To Tell The Truth --*
Cruz
MAIL
HOME

My追加

2002年03月01日(金)
混乱

昨日の一瞬で消えるプロパティシートの謎は解けた。

どうも一昨日まで絡んでいたタブコントロールと何か頭の中で混ざり合っていたようだ。

原因はこちら。


メインメニューのダイアログからボタンを押すと現れるプロパティシート
この関数は、ボタンクリック時に呼び出す。


void CreateProp(HWND hWnd)
{
 PROPSHEETPAGE psp;
 PROPSHEETHEADER psh;
 HPROPSHEETPAGE hpsp[3]; // シートは3枚

 psp.dwSize = sizeof(PROPSHEETPAGE);
 psp.dwFlags = PSP_DEFAULT;
 psp.hInstance = hInst1;
 psp.pszIcon = NULL;
 psp.pszTitle = "";
 psp.lParam = 0;
 psp.pfnCallback = NULL;

 // 環境設定
 psp.pszTemplate = MAKEINTRESOURCE(IDD_CONTROL_ENV);
 psp.pfnDlgProc = (DLGPROC)ControlEnvProc;
 hpsp[0] = CreatePropertySheetPage(&psp);

 // データ作成
 psp.pszTemplate = MAKEINTRESOURCE(IDD_DATA_CREATE);
 psp.pfnDlgProc = (DLGPROC)ControlDataProc;
 hpsp[1] = CreatePropertySheetPage(&psp);

 // データ送信
 psp.pszTemplate = MAKEINTRESOURCE(IDD_DATA_SEND);
 psp.pfnDlgProc = (DLGPROC)ControlSendProc;
 hpsp[2] = CreatePropertySheetPage(&psp);

 memset(&psh, 0, sizeof(PROPSHEETHEADER));
 psh.dwSize = sizeof(PROPSHEETHEADER);
 psh.dwFlags = PSH_NOAPPLYNOW;
 psh.hInstance = hInst1;
 psh.hwndParent = hWnd;
 psh.nPages = 3;
 psh.phpage = hpsp;
 psh.pszCaption = "環境設定・データ作成送信";

 PropertySheet(&psh);

 return;
}


何を血迷ったかpsp.pszTemplateのところに、タグ名を挿入していた。
そうしたら一瞬の表示で終わり。

まぁ、もっともな結果なんだけど。

よーく考えてみると、ここにリソース名を入れずにどこで指定できるというのだ?
リソース指定しなきゃ・・・どのダイアログを入れるのかわからないじゃないか。

我ながらおまぬけであった。


これも花粉のせいってことで。



ちなみにタグ名(プロパティシートの各シート名)は、各ダイアログリソースのプロパティで定義したキャプションで出力される。

まぁ、当たり前な話しなのだが。