Проблемка с окном производным от CFrameWnd в сплиттере
От: sapient Россия  
Дата: 07.12.04 08:08
Оценка:
Суть проблемы:
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 в сплиттере
От: rus blood Россия  
Дата: 07.12.04 08:35
Оценка:
Здравствуйте, sapient, Вы писали:

S>Need help!


1. Использовать MMC (шутка, не обращайте внимания).
2. Силовой способ — сделать toolbar с текстами на кнопках и повесить popup-меню на каждую кнопку...

А вообще, как то странно запихивать FrameWnd в сплиттер...
Имею скафандр — готов путешествовать!
Re[2]: Проблемка с окном производным от CFrameWnd в сплиттер
От: sapient Россия  
Дата: 07.12.04 08:49
Оценка:
Здравствуйте, rus blood, Вы писали:

RB>Здравствуйте, sapient, Вы писали:


S>>Need help!


RB>1. Использовать MMC (шутка, не обращайте внимания).


Шутка хорошая

RB>2. Силовой способ — сделать toolbar с текстами на кнопках и повесить popup-меню на каждую кнопку...


RB>А вообще, как то странно запихивать FrameWnd в сплиттер...


FrameWnd там появился исключительно потому что мне нужен был в этом окне тулбар.
И судя по всему действительно придется делать на этом тулбаре кнопки с popup-меню.
Но все-таки почему не появляется менюха?
Re[3]: Проблемка с окном производным от CFrameWnd в сплиттер
От: Андрей Россия  
Дата: 07.12.04 08:52
Оценка:
Здравствуйте, sapient, Вы писали:

skip

S>FrameWnd там появился исключительно потому что мне нужен был в этом окне тулбар.

S>И судя по всему действительно придется делать на этом тулбаре кнопки с popup-меню.
S>Но все-таки почему не появляется менюха?

А ты где-нибудь в виндах видел дочерние окна со своими менюхами?
Re[4]: Проблемка с окном производным от CFrameWnd в сплиттер
От: sapient Россия  
Дата: 07.12.04 09:05
Оценка:
Здравствуйте, Андрей, Вы писали:

А>А ты где-нибудь в виндах видел дочерние окна со своими менюхами?


А чего? Их в природе не бывает?
Re[5]: Проблемка с окном производным от CFrameWnd в сплиттер
От: Андрей Россия  
Дата: 07.12.04 09:17
Оценка:
Здравствуйте, sapient, Вы писали:

S>Здравствуйте, Андрей, Вы писали:


А>>А ты где-нибудь в виндах видел дочерние окна со своими менюхами?


S>А чего? Их в природе не бывает?


имхо — нет
Re[5]: Проблемка с окном производным от CFrameWnd в сплиттер
От: rus blood Россия  
Дата: 07.12.04 09:17
Оценка:
Здравствуйте, sapient, Вы писали:

S>Здравствуйте, Андрей, Вы писали:


А>>А ты где-нибудь в виндах видел дочерние окна со своими менюхами?


S>А чего? Их в природе не бывает?


Для окон со стилем WS_CHILD параметр hMenu в функции CreateWindowEx определяет идентификатор контрола, а не меню. Для "дочерних" окон система сама "не рисует" меню.
Имею скафандр — готов путешествовать!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.