Буду благодарен за помощь в решении следующей проблемы:
При работе с меню, а точнее при замене пунктов меню на Bitmap и последующим изменением в Windows языка и региональных стандартов с русского на английский у меня все измененные пункты меню не корректно отображают наименования пунктов меню. Привожу исходный код, может кто подскажет, что не так?
pSubMenu — указатель на подменю в котором изменяю подпункты.
pmenupunct — указатель на структуру содержащую следующую информацию:
dcMem4Source.SelectObject(&font);
size=pdc->GetTextExtent(sCaption);
if (size.cy<bitmapInfo.bmHeight) size.cy=bitmapInfo.bmHeight;
if (pbitmap->CreateCompatibleBitmap(pdc,size.cx+=bitmapInfo.bmWidth,size.cy))
{
COLORREF colorTransparent,colorBack;
dcMem4Source.SelectObject(bitmap);
if ((colorTransparent=dcMem4Source.GetPixel(0,0))!=
(colorBack=::GetSysColor(COLOR_MENU)))
for (int i=bitmapInfo.bmWidth;i--;)
for (int j=bitmapInfo.bmHeight;j--;)
if (dcMem4Source.GetPixel(i,j)==colorTransparent)
dcMem4Source.SetPixelV(i,j,colorBack);
dcMem.SelectObject(pbitmap);
dcMem.FillSolidRect(0,0,size.cx,size.cy,colorBack);
dcMem.BitBlt(0,0,bitmapInfo.bmWidth,bitmapInfo.bmHeight,&dcMem4Source,0,0,SRCCOPY);
dcMem4Source.DeleteDC();
dcMem.SetBkColor(colorBack);
dcMem.SetTextColor(::GetSysColor(COLOR_MENUTEXT));
dcMem.SelectObject(&font);
dcMem.TextOut(bitmapInfo.bmWidth,0,sCaption);
pSubMenu->ModifyMenu(pmenupunct->nId,MF_BYCOMMAND,pmenupunct->nId,pbitmap);
dcMem.DeleteDC();
}
}
AfxGetApp()->m_pMainWnd->ReleaseDC(pdc);
}
}
else delete pbitmap;
}
}