Суть проблемы:
1. Есть приложение SDI
2. Разбито сплиттером на две части вертикально
3. При кликах по элементам управления в левой части меняются виды правой части
4. В правой части появляются окна производные от CFrameWnd с запиханным в него CListView. Некоторые из них со своими тулбарами.
И вот мне захотелось одно из таких окошек снабдить помимо тулбара еще менюхой. И не получается.
В хэдере есть вот такое две переменные:
CToolBar m_wndToolBar;
CMenu m_wndMenu;
Пытаюсь делать вот так:
int CReportsFrm::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD
| WS_VISIBLE
| CBRS_TOP
| CBRS_GRIPPER
| CBRS_TOOLTIPS
| CBRS_FLYBY
| CBRS_SIZE_DYNAMIC) ||
!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
{
TRACE0("Failed to create toolbar\n");
return -1; // fail to create
}
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndToolBar);
//Load the new menu.
m_wndMenu.LoadMenu(IDR_REPORTS_MENU);
// Add the new menu
SetMenu(&m_wndMenu);
return 0;
}
Тулбар появляется и менюха никак не хочет.
Need help!
Re: Проблемка с окном производным от CFrameWnd в сплиттере
1. Использовать MMC (шутка, не обращайте внимания).
2. Силовой способ — сделать toolbar с текстами на кнопках и повесить popup-меню на каждую кнопку...
А вообще, как то странно запихивать FrameWnd в сплиттер...
Имею скафандр — готов путешествовать!
Re[2]: Проблемка с окном производным от CFrameWnd в сплиттер
Здравствуйте, rus blood, Вы писали:
RB>Здравствуйте, sapient, Вы писали:
S>>Need help!
RB>1. Использовать MMC (шутка, не обращайте внимания).
Шутка хорошая
RB>2. Силовой способ — сделать toolbar с текстами на кнопках и повесить popup-меню на каждую кнопку...
RB>А вообще, как то странно запихивать FrameWnd в сплиттер...
FrameWnd там появился исключительно потому что мне нужен был в этом окне тулбар.
И судя по всему действительно придется делать на этом тулбаре кнопки с popup-меню.
Но все-таки почему не появляется менюха?
Re[3]: Проблемка с окном производным от CFrameWnd в сплиттер
skip
S>FrameWnd там появился исключительно потому что мне нужен был в этом окне тулбар. S>И судя по всему действительно придется делать на этом тулбаре кнопки с popup-меню. S>Но все-таки почему не появляется менюха?
А ты где-нибудь в виндах видел дочерние окна со своими менюхами?
Re[4]: Проблемка с окном производным от CFrameWnd в сплиттер
Здравствуйте, sapient, Вы писали:
S>Здравствуйте, Андрей, Вы писали:
А>>А ты где-нибудь в виндах видел дочерние окна со своими менюхами?
S>А чего? Их в природе не бывает?
имхо — нет
Re[5]: Проблемка с окном производным от CFrameWnd в сплиттер
Здравствуйте, sapient, Вы писали:
S>Здравствуйте, Андрей, Вы писали:
А>>А ты где-нибудь в виндах видел дочерние окна со своими менюхами?
S>А чего? Их в природе не бывает?
Для окон со стилем WS_CHILD параметр hMenu в функции CreateWindowEx определяет идентификатор контрола, а не меню. Для "дочерних" окон система сама "не рисует" меню.