@@ -154,6 +154,7 @@ LRESULT CStartButton::OnCreate( UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& b
154154 OnThemeChanged (WM_THEMECHANGED,0 ,0 ,bHandled);
155155 m_bPressed=true ;
156156 SetPressed (false );
157+ ResizeClient (m_Size.cx ,m_Size.cy );
157158 bHandled=FALSE ;
158159 return 0 ;
159160}
@@ -534,12 +535,12 @@ void CStartButton::LoadBitmap( void )
534535 if (!m_Bitmap)
535536 {
536537 int id;
537- int dpi=CItemManager::GetDPI ( false );
538+ int dpi=GetDpi ( GetParent () );
538539 if (dpi<120 )
539540 id=IDB_BUTTON96;
540541 else if (dpi<144 )
541542 id=IDB_BUTTON120;
542- else if (dpi<180 )
543+ else if (dpi<168 )
543544 id=IDB_BUTTON144;
544545 else
545546 id=IDB_BUTTON180;
@@ -604,55 +605,12 @@ void CStartButton::LoadBitmap( void )
604605
605606static std::map<int ,CStartButton> g_StartButtons;
606607
607- HWND CreateStartButton ( int taskbarId, HWND taskBar, HWND rebar, const RECT &rcTask )
608+ HWND CreateStartButton ( int taskbarId, HWND taskBar, HWND rebar )
608609{
609610 bool bRTL=(GetWindowLongPtr (rebar,GWL_EXSTYLE)&WS_EX_LAYOUTRTL)!=0 ;
610611 DWORD styleTopmost=GetWindowLongPtr (taskBar,GWL_EXSTYLE)&WS_EX_TOPMOST;
611612 CStartButton &button=g_StartButtons[taskbarId];
612613 button.Create (taskBar,NULL ,NULL ,WS_POPUP,styleTopmost|WS_EX_TOOLWINDOW|WS_EX_LAYERED,0U ,(void *)(intptr_t )(taskbarId*2 +(bRTL?1 :0 )));
613- SIZE size=button.GetSize ();
614- RECT rcButton;
615- MONITORINFO info;
616- UINT uEdge=GetTaskbarPosition (taskBar,&info,NULL ,NULL );
617- if (uEdge==ABE_LEFT || uEdge==ABE_RIGHT)
618- {
619- if (GetSettingInt (L" StartButtonType" )!=START_BUTTON_CUSTOM || !GetSettingBool (L" StartButtonAlign" ))
620- rcButton.left =(rcTask.left +rcTask.right -size.cx )/2 ;
621- else if (uEdge==ABE_LEFT)
622- rcButton.left =rcTask.left ;
623- else
624- rcButton.left =rcTask.right -size.cx ;
625- rcButton.top =rcTask.top ;
626- }
627- else
628- {
629- if (bRTL)
630- rcButton.left =rcTask.right -size.cx ;
631- else
632- rcButton.left =rcTask.left ;
633- if (GetSettingInt (L" StartButtonType" )!=START_BUTTON_CUSTOM || !GetSettingBool (L" StartButtonAlign" ))
634- rcButton.top =(rcTask.top +rcTask.bottom -size.cy )/2 ;
635- else if (uEdge==ABE_TOP)
636- rcButton.top =rcTask.top ;
637- else
638- rcButton.top =rcTask.bottom -size.cy ;
639- }
640- rcButton.right =rcButton.left +size.cx ;
641- rcButton.bottom =rcButton.top +size.cy ;
642- g_bAllowMoveButton=true ;
643- button.SetWindowPos (HWND_TOP,&rcButton,SWP_SHOWWINDOW|SWP_NOOWNERZORDER|SWP_NOACTIVATE);
644- g_bAllowMoveButton=false ;
645-
646- RECT rc;
647- IntersectRect (&rc,&rcButton,&info.rcMonitor );
648- HRGN rgn=CreateRectRgn (rc.left -rcButton.left ,rc.top -rcButton.top ,rc.right -rcButton.left ,rc.bottom -rcButton.top );
649- if (!SetWindowRgn (button,rgn,FALSE ))
650- {
651- AddTrackedObject (rgn);
652- DeleteObject (rgn);
653- }
654-
655- button.UpdateButton ();
656614 return button.m_hWnd ;
657615}
658616
0 commit comments