Почему CToolBar :: LoadToolBar потерпит неудачу? - PullRequest
1 голос
/ 19 марта 2012

Я пытался добавить панель инструментов в диалоговое окно, и когда я вызываю m_ToolBar.LoadToolBar, это не удается.

Я создал новый ресурс панели инструментов и назвал его IDR_TOOLBAR1, затем добавил в код

if(!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))
{
    EndDialog(IDCANCEL);
}

По какой-то причине m_ToolBar.LoadToolBar (IDR_TOOLBAR1) возвращает false.Я создал ресурс панели инструментов в Visual Studio, поэтому считаю, что мой IDR_TOOLBAR1 настроен правильно.

Что может быть причиной сбоя загрузки?

edit: Я не уверен, что это таксвязанные, но я заметил, что идентификатор для панели инструментов совпадает с идентификатором для другого элемента управления

#define IDC_EDIT_EVENTS                 213
#define IDR_TOOLBAR1                    213

был в автоматически сгенерированном файле ресурсов

edit2: при попытке отладки LoadToolBar я нашелчто он вызывает MAKEINTRESOURCE, который, кажется, возвращает плохие указатели.MAKEINTRESOURCE - это всего лишь несколько примеров, так что я не уверен, в чем здесь проблема.

1 Ответ

0 голосов
/ 24 июля 2012

MAKEINTRESOURCE вернет то, что кажется плохим указателем, но это нормально.Ресурсы могут быть строками или целыми числами, приведенными в виде строк.

Этот код случайно скомпилирован как DLL?Если это так, возможно, вам нужно добавить следующий код в верхнюю часть функции, чтобы MFC мог выяснить, из какой DLL получить его.

AFX_MANAGE_STATE(AfxGetStaticModuleState());
...