Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Преобразование CDialog в CWinApp.

8.2K
22 марта 2006 года
TheMaster
32 / / 23.12.2005
Задача стоит в следующем: сваять MFC - программу, которая выводит на экран диалоговое окошко в качестве главного окошка приложения. Причём хочется сделать это без применения AppWizard. Возникает проблема в следующем сверхсложном участке кода:
 
Код:
BOOL PortApp::InitInstance()
{
    PortDlg TheDlg();                   // Создаю единственный экземпляр диалогового окошка
    m_pMainWnd = &TheDlg;               // Указываю его как главное окно приложения
    TheDlg.DoModal();                   // Запускаю окошко на выполнение.
}

Во второй строчке функции компилятор говорит, что он не знает, как из CDialog сделать CWinApp (ну, или что-то в этом роде). Для полноты картины приведу-ка я ещё текст конструктора класса моего диалогового окошка:
 
Код:
PortDlg::PortDlg(CWnd* pParent)
: CDialog(IDD_DLG, pParent)
{
}

Проще всего, конечно, сваять-таки программу с применением этого AppWizard'a и посмотреть, как там сделано. А сделано там с применением какого-то блока AFX_DATA, с которым я пока разбираться не хочу. Наверно, проблема всё же в конструкторе моего диалогового окошка. В общем, буду благодарен всем, кто ответит.
534
22 марта 2006 года
HarryAxe
448 / / 19.01.2006
Цитата:
Originally posted by TheMaster
Задача стоит в следующем: сваять MFC - программу, которая выводит на экран диалоговое окошко в качестве главного окошка приложения. Причём хочется сделать это без применения AppWizard. Возникает проблема в следующем сверхсложном участке кода:
 
Код:
BOOL PortApp::InitInstance()
{
    PortDlg TheDlg();                   // Создаю единственный экземпляр диалогового окошка
    m_pMainWnd = &TheDlg;               // Указываю его как главное окно приложения
    TheDlg.DoModal();                   // Запускаю окошко на выполнение.
}

Во второй строчке функции компилятор говорит, что он не знает, как из CDialog сделать CWinApp (ну, или что-то в этом роде). Для полноты картины приведу-ка я ещё текст конструктора класса моего диалогового окошка:
 
Код:
PortDlg::PortDlg(CWnd* pParent)
: CDialog(IDD_DLG, pParent)
{
}

Проще всего, конечно, сваять-таки программу с применением этого AppWizard'a и посмотреть, как там сделано. А сделано там с применением какого-то блока AFX_DATA, с которым я пока разбираться не хочу. Наверно, проблема всё же в конструкторе моего диалогового окошка. В общем, буду благодарен всем, кто ответит.

Убури скобки после TheDlg в строчке PortDlg TheDlg();

8.2K
23 марта 2006 года
TheMaster
32 / / 23.12.2005
Пишет буквально следующее:
 
Код:
Main.cpp(11) : error C2243: 'type cast' : conversion from 'class PortDlg *' to 'class CWnd *' exists, but is inaccessible


Странно! Что бы это значило?
534
24 марта 2006 года
HarryAxe
448 / / 19.01.2006
Цитата:
Originally posted by TheMaster
Пишет буквально следующее:
 
Код:
Main.cpp(11) : error C2243: 'type cast' : conversion from 'class PortDlg *' to 'class CWnd *' exists, but is inaccessible


Странно! Что бы это значило?


 
Код:
m_pMainWnd = (CWnd *) &TheDlg;
8.2K
30 марта 2006 года
TheMaster
32 / / 23.12.2005
Спасибо за подсказку
 
Код:
m_pMainWnd = (CWnd *) &TheDlg;

Скобки пришлось поставить:
 
Код:
PortDlg TheDlg();

А то выдаёт предупреждение, что, мол, преобразование недоступно.

Однако придирается, сволочь, дальше! Говорит, что следующая строчка неправильная.
 
Код:
TheDlg->DoModal();

Типа, всё, что слева от ->DoModal(), должно указывать на class/struct/union. Насколько я понимаю сишку, строчка:
 
Код:
PortDlg TheDlg();

говорит, что TheDlg - это класс! Пробовал стрелку точкой заменить - бесполезно: не помогает. Ругается точно так же.

Может, я что-то недопонимаю?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог