WS_HSCROLLやWS_VSCROLLは対象となるウィンドウにスクロールバーを追加するように指定するスタイルです。
たとえばEditコントロールにスクロールバーを追加させるなどです。(スクロールバーのコントロールが追加されるのではなく描画として)
しかしスクロールバーにスクロールバーが追加されることは想定されていないので、古いスタイルのスクロールバーが追加で表示されているのでしょう。
スクロールバー以外でShowScrollBar(SB_BOTH)をするのならばWindows11スタイルのスクロールバーが表示されるはずです。
CSCrollBarのCreateに指定したら、スクロールバーに対してスクロールバーを追加で描画してしてくださいと指定していることになります。
ただしくは、CScrollBarを作成する時に指定するのはWS_HSCROLLやWS_VSCROLLではなく、SBS_HORZまたはSBS_VERTです。
RECT rectH{ 0,0,200,100 };
RECT rectV{ 0,0,200,100 };
rectH.right -= GetSystemMetrics(SM_CXVSCROLL);
rectV.bottom -= GetSystemMetrics(SM_CYHSCROLL);
CScrollBar* pScrolBarH = new CScrollBar();
if (pScrolBarH->Create(WS_VISIBLE | WS_CHILD | SBS_HORZ | SBS_BOTTOMALIGN , rectH, this, 1))
{
pScrolBarH->SetScrollRange(0, 100, TRUE);
pScrolBarH->SetScrollPos(50, TRUE);
}
CScrollBar* pScrolBarV = new CScrollBar();
if (pScrolBarV->Create(WS_VISIBLE | WS_CHILD | SBS_VERT | SBS_RIGHTALIGN , rectV, this, 2))
{
pScrolBarV->SetScrollRange(0, 100, TRUE);
pScrolBarV->SetScrollPos(50, TRUE);
}
//これは間違い(これをやると新しいスタイルの水平スクロールバーの横に、追加の古いスタイルの垂直スクロールバーが表示されることになる)
//CScrollBar* pScrolBarV = new CScrollBar();
//if (pScrolBarV->Create(WS_VISIBLE | WS_CHILD | WS_VSCROLL, rectV, this, 2))
//{
// pScrolBarV->SetScrollRange(0, 100, TRUE);
// pScrolBarV->SetScrollPos(50, TRUE);
//}