http://tikitak.narod.ru ---- Главная страница сайта
Шаг 33 - Диалоговое окно приложения без волшебника
Создание проекта
В данном проекте мы создадим окно программы как диалоговое окно, но без применения AppWizard, для понимания сути происходящего.
Создавайте проект Win32 с поддержкой MFC, как в примерах ранее и два файла CPP и RC. В файле ресурсов создайте простой диалог с двумя кнопками (можно оставить одну Ok).
Создаем код
#include "afxwin.h"
#include "resource.h"
class CTestDlg : public CDialog
{
public:
CTestDlg(CWnd* pParent=NULL);
protected:
};
CTestDlg::CTestDlg(CWnd* pParent)
: CDialog(IDD_DIALOG1, pParent)
{
}
class CTestApp : public CWinApp
{
public:
virtual BOOL InitInstance();
};
BOOL CTestApp::InitInstance()
{
CTestDlg dlg;
m_pMainWnd = &dlg;
dlg.DoModal();
return FALSE;
}
CTestApp theApp;
Описание
Итак мы создали класс приложения CTestApp, в котором оставили только медод InitInstance, который отвечает за создания окна. А в этом методе вызаваем создание диалогового окна присваивая указателю окна приложения указатель на диалоговое окно m_pMainWnd = &dlg;
Смотрите сверху. Включили описание классов MFC и описание идентификаторов ресурсов, где наше диалоговое окно resource.h.
Создали класс диалогового окна просто определив конструктор, который вызывает папу для своего построения.
CTestDlg::CTestDlg(CWnd* pParent)
: CDialog(IDD_DIALOG1, pParent)
В этот конструктор передали идентификатор диалогового окна из ресурсов IDD_DIALOG1
После чего в функции InitInstance создали обьект диалогвого окна. И вызвали его для выполения. Но вот результат возврата функции FALSE, чем обманули MFC сказав, что инициализация не удалась.
Шпаргалка
Создай класс диалогвого окна.
class CTestDlg : public CDialog
{
public:
CTestDlg(CWnd* pParent=NULL);
protected:
};
Создай обьект и запусти диалогвое окно на выполнение.
BOOL CTestApp::InitInstance()
{
CTestDlg dlg;
m_pMainWnd = &dlg;
dlg.DoModal();
........
}
Заверши инициализацию неудачей
BOOL CTestApp::InitInstance()
{
...........
return FALSE;
}
Предыдущий Шаг | Следующий Шаг | Оглавление By Artem.
Используются технологии uCoz
|