@@ -41,12 +41,7 @@ LPVOID CDlgSameColor::GetHelpIdTable( void )
4141 return (LPVOID )p_helpids;
4242}
4343
44- CDlgSameColor::CDlgSameColor () :
45- m_wpColorStaticProc(NULL ),
46- m_wpColorListProc(NULL ),
47- m_wID(0 ),
48- m_pTypes(NULL ),
49- m_cr(0 )
44+ CDlgSameColor::CDlgSameColor ()
5045{
5146 return ;
5247}
@@ -119,10 +114,8 @@ BOOL CDlgSameColor::OnInitDialog( HWND hwndDlg, WPARAM wParam, LPARAM lParam )
119114 HWND hwndList = GetItemHwnd ( IDC_LIST_COLORS );
120115
121116 // 指定色スタティック、色選択リストをサブクラス化
122- ::SetWindowLongPtr ( hwndStatic, GWLP_USERDATA , (LONG_PTR )this );
123- m_wpColorStaticProc = (WNDPROC )::SetWindowLongPtr ( hwndStatic, GWLP_WNDPROC , (LONG_PTR )ColorStatic_SubclassProc );
124- ::SetWindowLongPtr ( hwndList, GWLP_USERDATA , (LONG_PTR )this );
125- m_wpColorListProc = (WNDPROC )::SetWindowLongPtr ( hwndList, GWLP_WNDPROC , (LONG_PTR )ColorList_SubclassProc );
117+ ::SetWindowSubclass (hwndStatic, &ColorStatic_SubclassProc, 0 , (DWORD_PTR )this);
118+ ::SetWindowSubclass (hwndList, &ColorList_SubclassProc, 0 , 0 );
126119
127120 WCHAR szText[30 ];
128121 int nItem;
@@ -364,13 +357,12 @@ BOOL CDlgSameColor::OnSelChangeListColors( HWND hwndCtl )
364357/* ! サブクラス化された指定色スタティックのウィンドウプロシージャ
365358 @date 2006.04.26 ryoji 新規作成
366359*/
367- LRESULT CALLBACK CDlgSameColor::ColorStatic_SubclassProc ( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam )
360+ LRESULT CALLBACK CDlgSameColor::ColorStatic_SubclassProc ( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam, UINT_PTR uIdSubclass, DWORD_PTR dwRefData )
368361{
369362 HDC hDC;
370363 RECT rc;
371364
372- CDlgSameColor* pCDlgSameColor;
373- pCDlgSameColor = (CDlgSameColor*)::GetWindowLongPtr ( hwnd, GWLP_USERDATA );
365+ auto pCDlgSameColor = (CDlgSameColor *)dwRefData;
374366
375367 switch ( uMsg ){
376368 case WM_PAINT :
@@ -408,31 +400,27 @@ LRESULT CALLBACK CDlgSameColor::ColorStatic_SubclassProc( HWND hwnd, UINT uMsg,
408400
409401 case WM_DESTROY :
410402 // サブクラス化解除
411- ::SetWindowLongPtr ( hwnd, GWLP_WNDPROC , (LONG_PTR )pCDlgSameColor->m_wpColorStaticProc );
412- pCDlgSameColor->m_wpColorStaticProc = NULL ;
403+ ::RemoveWindowSubclass (hwnd, &ColorStatic_SubclassProc, uIdSubclass);
413404 return (LRESULT )0 ;
414405
415406 default :
416407 break ;
417408 }
418409
419- return CallWindowProc ( pCDlgSameColor-> m_wpColorStaticProc , hwnd, uMsg, wParam, lParam );
410+ return :: DefSubclassProc ( hwnd, uMsg, wParam, lParam);
420411}
421412
422413/* ! サブクラス化された色選択リストのウィンドウプロシージャ
423414 @date 2006.04.26 ryoji 新規作成
424415*/
425- LRESULT CALLBACK CDlgSameColor::ColorList_SubclassProc ( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam )
416+ LRESULT CALLBACK CDlgSameColor::ColorList_SubclassProc ( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam, UINT_PTR uIdSubclass, [[maybe_unused]] DWORD_PTR dwRefData )
426417{
427418 POINT po;
428419 RECT rcItem;
429420 RECT rc;
430421 int nItemNum;
431422 int i;
432423
433- CDlgSameColor* pCDlgSameColor;
434- pCDlgSameColor = (CDlgSameColor*)::GetWindowLongPtr ( hwnd, GWLP_USERDATA );
435-
436424 switch ( uMsg ){
437425 case WM_LBUTTONUP :
438426 // マウスボタン下にある項目の選択/選択解除をトグルする
@@ -471,13 +459,12 @@ LRESULT CALLBACK CDlgSameColor::ColorList_SubclassProc( HWND hwnd, UINT uMsg, WP
471459
472460 case WM_DESTROY :
473461 // サブクラス化解除
474- ::SetWindowLongPtr ( hwnd, GWLP_WNDPROC , (LONG_PTR )pCDlgSameColor->m_wpColorListProc );
475- pCDlgSameColor->m_wpColorListProc = NULL ;
462+ ::RemoveWindowSubclass (hwnd, &ColorList_SubclassProc, uIdSubclass);
476463 return (LRESULT )0 ;
477464
478465 default :
479466 break ;
480467 }
481468
482- return ::CallWindowProc ( pCDlgSameColor-> m_wpColorListProc , hwnd, uMsg, wParam, lParam );
469+ return ::DefSubclassProc ( hwnd, uMsg, wParam, lParam);
483470}
0 commit comments