Меню сайта
Категории раздела
HTML [44] |
Visual C++ и MFC [21] |
c++ [78] |
php [19] |
Javascript [15] |
C# [51] |
загрузки [0] |
XNA
[10]
создание игр с помощью xna
|
Наш опрос
Друзья сайта
Статистика
Онлайн всего: 1
Гостей: 1
Пользователей: 0
Реклама
Главная » Статьи » Visual C++ и MFC |
Краткий обзор кода, который автоматически генерируется для диалогового приложения
Краткий обзор кода, который автоматически генерируется для диалогового приложенияИтак, как вы можете заметить, щелкнув по вкладке FileView (слева), Class Wizard создал для вас 7 файлов:
Файл First.h // First.h : main header file for the FIRST application // #if !defined(AFX_FIRST_H__DA4A2945_6FFD_11D5_BB2A_90C85119D547__INCLUDED_) #define AFX_FIRST_H__DA4A2945_6FFD_11D5_BB2A_90C85119D547__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #ifndef __AFXWIN_H__ #error include 'stdafx.h' before including this file for PCH #endif #include "resource.h" // main symbols // Основные символические константы ////////////////////////////////////////////////////////////////////// // CFirstApp: // See First.cpp for the implementation of this class // Реализация данного класса смотри First.cpp class CFirstApp : public CWinApp { public: CFirstApp(); // Overrides // ClassWizard generated virtual function overrides // Переопределение виртуальных функций, сгенерированных Class Wizard //{{AFX_VIRTUAL(CFirstApp) public: virtual BOOL InitInstance(); //}}AFX_VIRTUAL // Implementation //{{AFX_MSG(CFirstApp) // NOTE - the ClassWizard will add and remove member functions here. // DO NOT EDIT what you see in these blocks of generated code ! // ВНИМАНИЕ - здесь Class Wizard вставляет и удаляет функции класса // НЕ ИЗМЕНЯЙТЕ этих частей сгенерированного кода ! //}}AFX_MSG DECLARE_MESSAGE_MAP() // Макрос, определяющий очередь сообщений }; ////////////////////////////////////////////////////////////////////// //{{AFX_INSERT_LOCATION}} // Microsoft Visual C++ will insert additional declarations // immediately before the previous line. #endif Файл First.cpp // First.cpp : Defines the class behaviors for the application. // #include "stdafx.h" #include "First.h" #include "FirstDlg.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ////////////////////////////////////////////////////////////////////// // CFirstApp // Начало очереди сообщений BEGIN_MESSAGE_MAP(CFirstApp, CWinApp) //{{AFX_MSG_MAP(CFirstApp) // NOTE - the ClassWizard will add and remove mapping macros here. // DO NOT EDIT what you see in these blocks of generated code! //}}AFX_MSG ON_COMMAND(ID_HELP, CWinApp::OnHelp) END_MESSAGE_MAP() // Конец очереди сообщений ////////////////////////////////////////////////////////////////////// // CFirstApp construction CFirstApp::CFirstApp() { // TODO: add construction code here, // Place all significant initialization in InitInstance // Добавьте код конструктора // Инициализация наиболее важных переменных и функций // должна выполнятся в InitInstance } ////////////////////////////////////////////////////////////////////// // The one and only CFirstApp object // Один и только один экземпляр приложения CFirstApp theApp; ////////////////////////////////////////////////////////////////////// // CFirstApp initialization BOOL CFirstApp::InitInstance() { // Функция отвечает за инициализацию экземпляра приложения // Standard initialization // If you are not using these features and wish to reduce the size // of your final executable, you should remove from the following // the specific initialization routines you do not need. // Стандартная инициализация // Если вы не пользуетесь какими-либо функциями и желаете сократить // размер выполняемого файла, удалите ненужные процедуры инициализации #ifdef _AFXDLL Enable3dControls(); // Call this when using MFC in a shared DLL // Если используются разделяемые библиотеки #else Enable3dControlsStatic(); // Call this when linking to MFC statically // Если используется статическая компоновка #endif CFirstDlg dlg; // Объект диалога m_pMainWnd = &dlg; // Данный объект является главным окном int nResponse = dlg.DoModal(); // Отображение диалога if (nResponse == IDOK) { // TODO: Place code here to handle when the dialog is // dismissed with OK // Если для закрытия окна пользователь нажал OK } else if (nResponse == IDCANCEL) { // TODO: Place code here to handle when the dialog is // dismissed with Cancel // Если для закрытия окна пользователь нажал Cancel } // Since the dialog has been closed, return FALSE so that we exit the // application, rather than start the application's message pump. return FALSE; } Файл FirstDlg.h // FirstDlg.h : header file // #ifndef (AFX_FIRSTDLG_H__DA4A2947_6FFD_11D5_BB2A_90C85119D547__INCLUDED_) #define AFX_FIRSTDLG_H__DA4A2947_6FFD_11D5_BB2A_90C85119D547__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 ////////////////////////////////////////////////////////////////////// // CFirstDlg dialog class CFirstDlg : public CDialog { // Construction public: CFirstDlg(CWnd* pParent = NULL); // standard constructor // Стандартный конструктор // Dialog Data //{{AFX_DATA(CFirstDlg) enum { IDD = IDD_FIRST_DIALOG }; // NOTE: the ClassWizard will add data members here //}}AFX_DATA // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CFirstDlg) protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support // Поддерожка DDX/DDV //}}AFX_VIRTUAL // Implementation protected: HICON m_hIcon; // Generated message map functions //{{AFX_MSG(CFirstDlg) virtual BOOL OnInitDialog(); afx_msg void OnSysCommand(UINT nID, LPARAM lParam); afx_msg void OnPaint(); afx_msg HCURSOR OnQueryDragIcon(); //}}AFX_MSG DECLARE_MESSAGE_MAP() }; Файл FirstDlg.cpp // FirstDlg.cpp : implementation file // #include "stdafx.h" #include "First.h" #include "FirstDlg.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ////////////////////////////////////////////////////////////////////// // CAboutDlg dialog used for App About // Класс диалога About class CAboutDlg : public CDialog { public: CAboutDlg(); // Dialog Data //{{AFX_DATA(CAboutDlg) enum { IDD = IDD_ABOUTBOX }; //}}AFX_DATA // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CAboutDlg) protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support //}}AFX_VIRTUAL // Implementation protected: //{{AFX_MSG(CAboutDlg) //}}AFX_MSG DECLARE_MESSAGE_MAP() }; CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) { //{{AFX_DATA_INIT(CAboutDlg) //}}AFX_DATA_INIT } void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CAboutDlg) //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) //{{AFX_MSG_MAP(CAboutDlg) // No message handlers //}}AFX_MSG_MAP END_MESSAGE_MAP() ////////////////////////////////////////////////////////////////////// // CFirstDlg dialog CFirstDlg::CFirstDlg(CWnd* pParent /*=NULL*/) : CDialog(CFirstDlg::IDD, pParent) { //{{AFX_DATA_INIT(CFirstDlg) // NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT // Note that LoadIcon doesn't require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); // Загрузка пиктограммы приложения } void CFirstDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CFirstDlg) // NOTE: the ClassWizard will add DDX and DDV calls here //}}AFX_DATA_MAP } // Начало очереди сообщений диалогового класса BEGIN_MESSAGE_MAP(CFirstDlg, CDialog) //{{AFX_MSG_MAP(CFirstDlg) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() //}}AFX_MSG_MAP END_MESSAGE_MAP() // Конец очереди сообщений ////////////////////////////////////////////////////////////////////// // CFirstDlg message handlers // Обработчики сообщений диалогового класса BOOL CFirstDlg::OnInitDialog() { // Переопределяемая функция для инициализации // элементов диалогового окна. // Вызывается до появления окна на экране CDialog::OnInitDialog(); // Стандартный обработчик // Add "About..." menu item to system menu. // Добавление пункта About... в системное меню // IDM_ABOUTBOX must be in the system command range. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) { CString strAboutMenu; strAboutMenu.LoadString(IDS_ABOUTBOX); if (!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); } } // Set the icon for this dialog. The framework does this automatically // when the application's main window is not a dialog // Установка пиктограммы приложения SetIcon(m_hIcon, TRUE); // Set big icon SetIcon(m_hIcon, FALSE); // Set small icon // TODO: Add extra initialization here // Здесь пользователь может вставить собственный вариант инициализации // диалогового окна, например, вызвать какую-нибудь функцию, установить // начальные значение каких-то параметров и т. п. return TRUE; // return TRUE unless you set the focus to a control // Если возвращается истина, то фокус уснавливается на первый элемент // управления, если нет - на элемент, указанный пользователем } void CFirstDlg::OnSysCommand(UINT nID, LPARAM lParam) { // Обработчик выбора системного меню if ((nID & 0xFFF0) == IDM_ABOUTBOX) { CAboutDlg dlgAbout; // Создание объекта окна dlgAbout.DoModal(); // Отображение окна } else { // Стандартный обработчик CDialog::OnSysCommand(nID, lParam); } } // If you add a minimize button to your dialog, you will need the code // below to draw the icon. For MFC applications using the document/view // model, this is automatically done for you by the framework. void CFirstDlg::OnPaint() { // Функция отвечает за перерисовку пиктограммы приложения, // если на диалоге присутствует кнопка минимизации if (IsIconic()) { CPaintDC dc(this); // device context for painting SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); // Center icon in client rectangle int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; // Объект прямоугольник // Заполнение прямоугольника координатами клиентской области окна GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; // Draw the icon dc.DrawIcon(x, y, m_hIcon); } else { CDialog::OnPaint(); } } // The system calls this to obtain the cursor to display while the user // drags the minimized window. // Вызывается системой для получения указателя, отображаемого при // перетаскивании свернутого окна HCURSOR CFirstDlg::OnQueryDragIcon() { return (HCURSOR) m_hIcon; } Примечание: Старайтесь, по возможности, прислушиваться к советам Class Wizard'а. | |
Просмотров: 2056 | Рейтинг: 0.0/0 |
Всего комментариев: 0 | |