@@ -4914,6 +4914,30 @@ HWND xg_ahSyncedDialogs[I_SYNCED_MAX] = { 0 };
49144914#include " XgDictList.cpp"
49154915#include " XG_HiddenDialog.cpp"
49164916
4917+ // プロパティシートページ用ダイアログプロシージャーのラッパー。
4918+ // プロパティシートページでは WM_INITDIALOG の lParam は PROPSHEETPAGEW* であるため、
4919+ // ダイアログオブジェクトのポインターを PROPSHEETPAGEW::lParam から正しく取得する。
4920+ static INT_PTR CALLBACK XgSettingsPageProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
4921+ {
4922+ if (uMsg == WM_INITDIALOG )
4923+ lParam = reinterpret_cast <PROPSHEETPAGEW *>(lParam)->lParam ;
4924+ return XG_SettingsDialog::DialogProc (hwnd, uMsg, wParam, lParam);
4925+ }
4926+
4927+ static INT_PTR CALLBACK XgRulePresetPageProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
4928+ {
4929+ if (uMsg == WM_INITDIALOG )
4930+ lParam = reinterpret_cast <PROPSHEETPAGEW *>(lParam)->lParam ;
4931+ return XG_RulePresetDialog::DialogProc (hwnd, uMsg, wParam, lParam);
4932+ }
4933+
4934+ static INT_PTR CALLBACK XgHiddenPageProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
4935+ {
4936+ if (uMsg == WM_INITDIALOG )
4937+ lParam = reinterpret_cast <PROPSHEETPAGEW *>(lParam)->lParam ;
4938+ return XG_HiddenDialog::DialogProc (hwnd, uMsg, wParam, lParam);
4939+ }
4940+
49174941// 全般設定。
49184942void XgGeneralSettings (HWND hwnd, DWORD nStartPage = I_SYNCED_FILE_SETTINGS )
49194943{
@@ -4943,7 +4967,7 @@ void XgGeneralSettings(HWND hwnd, DWORD nStartPage = I_SYNCED_FILE_SETTINGS)
49434967 // 「見た目の設定」。
49444968 XG_SettingsDialog dialog1;
49454969 psp.pszTemplate = MAKEINTRESOURCEW (IDD_CONFIG );
4946- psp.pfnDlgProc = XG_SettingsDialog::DialogProc ;
4970+ psp.pfnDlgProc = XgSettingsPageProc ;
49474971 psp.dwFlags = PSP_DEFAULT ;
49484972 psp.hInstance = xg_hInstance;
49494973 psp.lParam = (LPARAM )&dialog1;
@@ -4952,7 +4976,7 @@ void XgGeneralSettings(HWND hwnd, DWORD nStartPage = I_SYNCED_FILE_SETTINGS)
49524976 // 「ルール」設定。
49534977 XG_RulePresetDialog dialog2;
49544978 psp.pszTemplate = MAKEINTRESOURCEW (IDD_RULEPRESET );
4955- psp.pfnDlgProc = XG_RulePresetDialog::DialogProc ;
4979+ psp.pfnDlgProc = XgRulePresetPageProc ;
49564980 psp.dwFlags = PSP_DEFAULT ;
49574981 psp.hInstance = xg_hInstance;
49584982 psp.lParam = (LPARAM )&dialog2;
@@ -4977,7 +5001,7 @@ void XgGeneralSettings(HWND hwnd, DWORD nStartPage = I_SYNCED_FILE_SETTINGS)
49775001 // 「上級者向け」設定。
49785002 XG_HiddenDialog dialog3;
49795003 psp.pszTemplate = MAKEINTRESOURCEW (IDD_HIDDEN );
4980- psp.pfnDlgProc = XG_HiddenDialog::DialogProc ;
5004+ psp.pfnDlgProc = XgHiddenPageProc ;
49815005 psp.dwFlags = PSP_DEFAULT ;
49825006 psp.hInstance = xg_hInstance;
49835007 psp.lParam = (LPARAM )&dialog3;
0 commit comments