66
77#include " MainFrm.h"
88#include " ceditcmd.h"
9+ #include < commoncontrols.h>
910
1011#ifdef _DEBUG
1112#define new DEBUG_NEW
@@ -61,7 +62,7 @@ int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
6162 return -1 ;
6263
6364 if (!m_wndToolBar.Create (this ) ||
64- !m_wndToolBar. LoadToolBar (IDR_MAINFRAME ))
65+ !LoadToolBar ())
6566 {
6667 TRACE0 (" Failed to create toolbar\n " );
6768 return -1 ; // fail to create
@@ -107,6 +108,11 @@ LRESULT CMainFrame::OnDpiChanged(WPARAM wParam, LPARAM lParam)
107108{
108109 __super::OnDpiChanged (wParam, lParam);
109110 DpiAware::UpdateAfxDataSysMetrics (GetDpi ());
111+ LoadToolBar ();
112+ const RECT* pRect = reinterpret_cast <RECT *>(lParam);
113+ SetWindowPos (nullptr , pRect->left , pRect->top ,
114+ pRect->right - pRect->left ,
115+ pRect->bottom - pRect->top , SWP_NOZORDER | SWP_NOACTIVATE);
110116 Default ();
111117 return 0 ;
112118}
@@ -119,6 +125,26 @@ BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
119125 return __super::PreCreateWindow (cs);
120126}
121127
128+ BOOL CMainFrame::LoadToolBar ()
129+ {
130+ m_wndToolBar.LoadToolBar (IDR_MAINFRAME);
131+ CToolBarCtrl& toolbarCtrl = m_wndToolBar.GetToolBarCtrl ();
132+ int cx = 16 ;
133+ int cy = 15 ;
134+ m_imgListToolBar.DeleteImageList ();
135+ m_imgListToolBar.Create (IDR_MAINFRAME, cx, 0 , RGB (192 , 192 , 192 ));
136+ CComQIPtr<IImageList2> pImageList2 (reinterpret_cast <IImageList *>(m_imgListToolBar.m_hImageList ));
137+ if (pImageList2)
138+ {
139+ cx = 16 * m_dpi / 96 ;
140+ cy = 15 * m_dpi / 96 ;
141+ HRESULT hr = pImageList2->Resize (cx, cy);
142+ }
143+ toolbarCtrl.SetImageList (&m_imgListToolBar);
144+ toolbarCtrl.SetButtonSize ({ cx + 8 , cy + 8 });
145+ return TRUE ;
146+ }
147+
122148// ///////////////////////////////////////////////////////////////////////////
123149// CMainFrame diagnostics
124150
0 commit comments