[英]How can I resize an application menu bar in a MFC application?
我正在使用 MFC,並且成功地創建了自定義繪制的菜單。 除了 mainlevel-items 之外,每個菜單項都被正確測量和繪制。 我唯一無法完成的是重繪應用程序菜單欄。
我附上了兩張圖片:
那么無論字體大小是多少,應用程序菜單欄永遠不會改變它的高度?
如何在此 MFC 應用程序中調整應用程序菜單欄的大小?
到目前為止,我嘗試過的事情是以不同的順序遵循代碼行:
RECT barRect;
barRect.top = 0;
barRect.left = 0;
barRect.bottom = 100;
barRect.right = 1020;
m_pMainWnd->RepositionBars(0, 0, 0, 2, &barRect);
m_pMainWnd->GetTopLevelFrame()->RecalcLayout();
m_pMainWnd->DrawMenuBar();
for (POSITION pos = m_pMainWnd->GetTopLevelFrame()->m_listControlBars.GetHeadPosition(); pos != NULL;)
{
CControlBar* controlBar = reinterpret_cast<CControlBar*>(m_pMainWnd->GetTopLevelFrame()->m_listControlBars.GetNext(pos));
controlBar = nullptr; //Let's see what we can do with this. Is the menuBar a ControlBar? Didnt think so.
}
m_pMainWnd->RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0);
第一部分不是直接問題的答案,但它應該澄清為什么不需要它。
菜單是全局 UI 的一部分。 菜單項的大小也是全局設置的一部分。
如果用戶需要,他可以更改 Windows 設置以獲得更大的菜單。
我認為這不是改變標准行為的好方法。 UI 應該是穩定、持久和一致的。 所有程序都應該具有相同的外觀和感覺。 這包括菜單欄。
現在回答你的問題。
您收到WM_MEASUREITEM
消息。 響應它,您可以更改 onwerdraw 菜單的高度。
請參閱: http : //www.codeguru.com/cpp/controls/menu/article.php/c3719/The-Easiest-Way-to-Code-the-Owner-Drawn-Menu.htm
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.