Глава 3
22:49 05.01.2006
Для более быстрого создания кода в программе
в которой было бы много окон попробую подметить
закономерности в файлах с этим связанных
Например заголовочный файл дочернего диалогового
окна.
Имя файла - PaintDlg4.h
-------------------------------------------------------
#pragma once
// CPaintDlg4 dialog
class CPaintDlg4 : public CDialog {
public:
CPaintDlg4(CWnd* pParent = NULL); // standard constructor
virtual ~CPaintDlg4();
// Dialog Data enum {
protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
DECLARE_MESSAGE_MAP()
public:
afx_msg void OnPaint();
private:
void ShowBitmap4(CPaintDC* pdc4);
Этот файл является стандартным для всех диалоговых дочерних окон
в данной программе.
Только следующие элементы меняются в этом файле:
Изменяемые элементы:
CPaintDlg4 - имя класса.Каждое новое диалоговое дочернее окно
должно иметь свое неповторимое имя класса.То есть
каждое диалоговое окно должно принадлежать к своему классу.
IDD_PAINT_DLG4 - идентификатор.Каждое диалоговое окно должно иметь
свой идентификатор.
ShowBitmap4 - имя функции отображающей окно
pdc4 - аргумент функции
Можно написать такую программу в которой достаточно будет указать
количество дочерних окон.Например - 200.
И программа напишет (создаст) двести файлов и в последнем
файле например будут указаны изменяемые элементы:
CPaintDlg2ZZ
IDD_PAINT_DLG2ZZ
ShowBitmap2ZZ
pdc2ZZ
Здесь вместо нолей используется буква Z
---------------------------------------------------------------------
Точно так же программа может написать cpp-файл для этого окна.
Фалы Kross03.cpp,Kross03.h,stdafx.cpp,stdafx.h -одинаковы
во всех этих программах
В файлах Kross09 и Kross11 сравнил между собой файлы
PaintDlg1.cpp и они оказались абсолютно идентичны
хотя в первом случае выводится окно с картинкой и заголовком
а во втором случае - окно с картинкой и без заголовка,
и во втором случае меньше размер.
В связи с этим вопрос - где отмечено отсутствие заголовка и
размер окна?
Кстати файлы PaintDlg.h в этих двух разных программах тоже
одинаковы.
Файлы Kross03Dlg.h в этих двух программах тоже одинаковы.
Во второй программе только добавлена одна инструкция
дополнительно в конец файла:
HWND hWnd;
Файлы Kross03Dlg.cpp тоже почти полностью идентичны.
Небольшие различия только в функции
void CKross03Dlg::OnBnClickedUpdate()
в частности в вызове функции
m_dlgPaint1.SetWindowPos(0, 100, 160, 60, 60, SWP_SHOWWINDOW);
можно видеть что во второй программе размеры окна уменьшились
а где указано что окно без заголовка или с заголовоком
этого не нашел!
Да !Блуждаю как в лесу в этом коде.
//////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////
Чтобы проделать работу,описанную выше надо воспользоваться материалом
из проекта интеллектуальной программы
d:\\MyC++Projects\\Krossv01\\IntellectProg01\\variant12
Это очень интересный проект!
Все таки эту программу я довел сегдня до безошибочного исполнения.
и откомпилировалась.
Результат своей работы программа помещает в файл
d:\\MyC++Projects\\Krossv01\\IntellectProg01\\NovaProg01
А результатом является код новой программы,которую следует
откомпилировать и выполнить.
Откомпилированная программа NovaProg01 находится в файле:
d:\\MyC++Projects\\Krossv01\\IntellectProg01\\variant12\\Dety
Да, много поту с меня сошло когда я работал над этой программой.
Но работает она правильно.Продолжай эту тему!
///////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////
/////// //////////////////
/////// Размышления на тему картинок и окон //////////////////
////// //////////////////
//////////////////////////////////////////////////////////////
Сравним две программы Kross09 и Kross13
В первой программе по нажатию кнопки появляется окно с картинкой
и с заголовоком
Во второй программе по нажатию кнопки появляется четыре окна
в двух из них картинки, а другие два без картинок
Должно же как то различие в этих двух программах отразиться
и в файлах.Проверим это.
Сверил файлы Kross03.rc в обеих программах и обнаружил
кое что важное:
Эти файлы абсолютно одинаковы за исключением двух разделов
которые описывают колиество дочерних оконо и их состояние.
Вот рубрика Dialog из программы Kross09
/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//
IDD_PAINT_DLG1 DIALOGEX 0, 0, 186, 95
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION
CAPTION "Dialog"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
END
/////////////////////////////////////////////////////////////////////////////
Вот рубрика Dialog из программы Kross13
/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//
IDD_PAINT_DLG1 DIALOGEX 0, 0, 186, 95
STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
END
IDD_PAINT_DLG2 DIALOGEX 0, 0, 186, 95
STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
END
IDD_PAINT_DLG3 DIALOGEX 0, 0, 186, 95
STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
END
IDD_PAINT_DLG4 DIALOGEX 0, 0, 186, 95
STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
END
/////////////////////////////////////////////////////////////////////////////
Назад |
Начало урока |
Вверх |
Вперед
Содержание