Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не отображаются кнопки на панели инструментов 
:(
    Опции темы
Muffy
Дата 8.5.2013, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 8.5.2013

Репутация: нет
Всего: нет



Здравствуйте! На новом проекте решил изучить MFC, соответственно только начинаю в ней копаться и сразу же возникли проблемы при создании панели инструментов. Кое-как я разобрался как ее отобразить в приложении, но беда в том, что кнопки никак не хотят отрисовываться (вместо них просто серые квадраты), более того они даже не активны, нажать по ним нельзя. Собственно сама панел должна выглядеть так:
user posted image

На деле же получается так:
user posted image

Код который приводит к такому результату следующий:
Код

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
    if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
        return -1;

    // create a view to occupy the client area of the frame
    if (!m_wndView.Create(NULL, NULL, AFX_WS_DEFAULT_VIEW, CRect(0, 0, 0, 0),
        this, AFX_IDW_PANE_FIRST, NULL)){
        TRACE0("Failed to create view window\n");
        return -1;
    }

    if (!m_wndStatusBar.Create(this)){
        TRACE0("Failed to create status bar\n");
        return -1;      // fail to create
    }
    
    m_toolbar.CreateEx(this, TBSTYLE_FLAT, 
        WS_CHILD | WS_VISIBLE | CBRS_TOP| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
    m_toolbar.LoadToolBar(IDR_TOOLBAR1);//IDR тулбар ресурса

    //InitToolBar();

    m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT));

    //это позволит тулбар перетаскивать
    /*m_toolbar.EnableDocking(CBRS_ALIGN_ANY);
    EnableDocking(CBRS_ALIGN_ANY);
    DockControlBar(&m_toolbar);*/

    return 0;
}


Помня как все это делается на winapi, добавил функцию InitToolBar().
Дефайны:
Код

//#define ID_TOOLBAR 201
#define IDC_TB_EDITX 202
#define    IDC_TB_EDITY 203
//#define NUM_BUTTONS 17
#define EDIT_WIDTH 60
#define EDIT_HEIGHT 25
#define SEPARATOR_WIDTH 10


сама функция InitToolBar():
Код

void CMainFrame::InitToolBar()
{
    const int NUM_BUTTONS = 25;
    UINT buttonID[NUM_BUTTONS] = {ID_FILE, ID_SEP, ID_UNDO, ID_REDO, ID_SEP, ID_GRID, ID_SCHEMATIC, 
        ID_SEP, ID_SELECT, ID_MOVE, ID_ROTATE, ID_SCALE, ID_SEP, ID_SEP, ID_SEP, ID_SEP, ID_SEP, 
        ID_PLAY, ID_PAN, ID_SET, ID_EXT, ID_NormZoom, ID_SEP, ID_LAYERS, ID_MERGE};

    UINT buttonStyle[NUM_BUTTONS] = {TBSTYLE_BUTTON, TBSTYLE_SEP, TBSTYLE_BUTTON, TBSTYLE_BUTTON,
    TBSTYLE_SEP, TBSTYLE_CHECK, TBSTYLE_CHECK, TBSTYLE_SEP, 
    TBSTYLE_CHECKGROUP, TBSTYLE_CHECKGROUP, TBSTYLE_CHECKGROUP, TBSTYLE_CHECKGROUP, TBSTYLE_SEP,
    TBSTYLE_SEP, TBSTYLE_SEP, TBSTYLE_SEP, TBSTYLE_SEP, TBSTYLE_BUTTON, 
    TBSTYLE_CHECKGROUP, TBSTYLE_CHECKGROUP, TBSTYLE_BUTTON, TBSTYLE_BUTTON, TBSTYLE_SEP,
    TBSTYLE_BUTTON, TBSTYLE_BUTTON};

    TBBUTTON tbb[NUM_BUTTONS];
    memset(tbb, 0, sizeof(tbb));

    for(int i = 0; i < NUM_BUTTONS; ++i){
        if(i == 13 || i == 14){
            tbb[i].iBitmap = EDIT_WIDTH;
        }
        else if(buttonID[i] == ID_SEP){
                tbb[i].iBitmap = SEPARATOR_WIDTH;
            }
        else{
            tbb[i].iBitmap = i;
        }

        tbb[i].idCommand = buttonID[i];
        tbb[i].fsState = TBSTATE_ENABLED;
        tbb[i].fsStyle = buttonStyle[i];
    }

    m_toolbar.SetButtons((UINT *)buttonID, NUM_BUTTONS);
    for(int i = 0; i < NUM_BUTTONS; i++){
        m_toolbar.SetButtonStyle(i, buttonStyle[i]);
    }

    m_toolbar.EnableWindow(1);
}


Результат такой:
user posted image

т.е. никакого толку. Приложение Single document без архитектуры документ/представление, с такими настройками интерфейса:
user posted image 
Помогите разобраться, все делаю как в туториалах, не пойму в чем проблема.
PM MAIL   Вверх
YDean
Дата 9.5.2013, 09:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 7.9.2009

Репутация: нет
Всего: 1



PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0745 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.