помогите пожалуйста
у меня не получается передать pointer на диалог в другой класс
то есть я хочу , к примеру поменять меню у диалога из другого класса.
вот что я делаю: создаю в диалоге
CDbDlg * dlg = new CDbDlg(this); // то есть поинтер на текущий диалог
и передаю (dlg) в класс.
но когда я пытаюсь сделать что то подобное из класса : dlg->m_wndMenu.GetSubMenu(0)->EnableMenuItem(ID_OPTIONS_EXIT,
MF_BYCOMMAND | MF_ENABLED );
я получаю сообщения о ошибке
PS
я нечаянно открыл такую же тему в другом разделе — сорри за повтор
Здравствуйте, Endymion, Вы писали:
E>помогите пожалуйста E>у меня не получается передать pointer на диалог в другой класс E>то есть я хочу , к примеру поменять меню у диалога из другого класса.
E>вот что я делаю: создаю в диалоге E>CDbDlg * dlg = new CDbDlg(this); // то есть поинтер на текущий диалог E>и передаю (dlg) в класс. E>но когда я пытаюсь сделать что то подобное из класса : dlg->>m_wndMenu.GetSubMenu(0)->EnableMenuItem(ID_OPTIONS_EXIT, E>MF_BYCOMMAND | MF_ENABLED );
E>я получаю сообщения о ошибке
E>PS E>я нечаянно открыл такую же тему в другом разделе — сорри за повтор
Сам диалог создавать пробовал ? Ты создал только экземпляр объекта:
CDbDlg * dlg = new CDbDlg(this); // то есть поинтер на текущий диалогdlg->Create(IDC_YOUR_DLG_TEMPLATE,this);// Это обязательно !!!!!!!!!!!!!!
Здравствуйте, B_A_D, Вы писали:
B_A>Здравствуйте, Endymion, Вы писали:
E>>помогите пожалуйста E>>у меня не получается передать pointer на диалог в другой класс E>>то есть я хочу , к примеру поменять меню у диалога из другого класса.
E>>вот что я делаю: создаю в диалоге E>>CDbDlg * dlg = new CDbDlg(this); // то есть поинтер на текущий диалог E>>и передаю (dlg) в класс. E>>но когда я пытаюсь сделать что то подобное из класса : dlg->>>m_wndMenu.GetSubMenu(0)->EnableMenuItem(ID_OPTIONS_EXIT, E>>MF_BYCOMMAND | MF_ENABLED );
E>>я получаю сообщения о ошибке
E>>PS E>>я нечаянно открыл такую же тему в другом разделе — сорри за повтор
B_A>Сам диалог создавать пробовал ? Ты создал только экземпляр объекта:
B_A>
B_A> CDbDlg * dlg = new CDbDlg(this); // то есть поинтер на текущий диалог
B_A> dlg->Create(IDC_YOUR_DLG_TEMPLATE,this);// Это обязательно !!!!!!!!!!!!!!
B_A>
эта функция создаст ещё один такой же диалог , но я хочу совсем не это.
Я хочу что бы когда одно моё диалоговое окно уже открыто, передать поинтер на него в класс (не этого диалога ) и что бы этот класс мог бы изменить меню диалога и управлять им
B_A>> CDbDlg * dlg = new CDbDlg(this); // то есть поинтер на текущий диалог
B_A>> dlg->Create(IDC_YOUR_DLG_TEMPLATE,this);// Это обязательно !!!!!!!!!!!!!!
B_A>>
E>эта функция создаст ещё один такой же диалог , но я хочу совсем не это. E>Я хочу что бы когда одно моё диалоговое окно уже открыто, передать поинтер на него в класс (не этого диалога ) и что бы этот класс мог бы изменить меню диалога и управлять им
Тогда желательно привести бы исходники этого класса диалога(по крайней мере то, что относится к его созданию).
B_A>Тогда желательно привести бы исходники этого класса диалога(по крайней мере то, что относится к его созданию).
ты хочешь посмотреть как я создал этот диалог ? я просто открыл приложение MFC и создал приложение с одиночным диалогом. потом я добавил туда диалоги, но главное приложение я сам не создаю, и если честно я не знаю как оно создаётся, потому что никаких команд create я не вижу
кстати я сейчас попробовал сделать в самом диалоге
CDbDlg * dlg = new CDbDlg(this);
dlg -> m_wndMenu. GetSubMenu(0) ->EnableMenuItem(ID_OPTIONS_EXIT,
MF_BYCOMMAND | MF_ENABLED );
и получил всё тоже сообщение о ошибке
как же обращаться к диалоговому окну ? и как открыть именно тот диалог, которой я хочу открыть ?
Здравствуйте, Endymion, Вы писали:
B_A>>Тогда желательно привести бы исходники этого класса диалога(по крайней мере то, что относится к его созданию).
E>ты хочешь посмотреть как я создал этот диалог ? я просто открыл приложение MFC и создал приложение с одиночным диалогом. потом я добавил туда диалоги, но главное приложение я сам не создаю, и если честно я не знаю как оно создаётся, потому что никаких команд create я не вижу E>кстати я сейчас попробовал сделать в самом диалоге E>CDbDlg * dlg = new CDbDlg(this); E>dlg -> m_wndMenu. GetSubMenu(0) ->EnableMenuItem(ID_OPTIONS_EXIT, E> MF_BYCOMMAND | MF_ENABLED ); E>и получил всё тоже сообщение о ошибке
E>как же обращаться к диалоговому окну ? и как открыть именно тот диалог, которой я хочу открыть ?
Значит ты создал Dialog-based application
в методе InitInstance класса CWinApp твоего приложения должен быть такой код создания
главного окна твоего приложения:
CDbDlg dlg;
m_pMainWnd = &dlg;
int nResponse = dlg.DoModal();//здесь создается диалог !!!!!!!!!!!!!
if (nResponse == IDOK)
{
// TODO: Place code here to handle when the dialog is
// dismissed with OK
}
else if (nResponse == IDCANCEL)
{
// TODO: Place code here to handle when the dialog is
// dismissed with Cancel
}
то есть тебе не надо его уже создавать , он уже существует, поэтому находясь в этом диалоге
можно сослаться на самого себя черех this.