Глава 3
9:14 17.01.2006
(продолжение)
В новом проекте d:\MyC++Projects\MyC++Project05\Project052
будет несколько exe-файлов.Но ведь возможно же сделать
программу которая при своем запуске будет поочередно
вызывать на исполнение все эти exe- файлы и в результате
мы получим то, что нам надо - несколько exe-файлов будут
выполнениы один за другим.И исходники этих программ
будут выглядеть не такими громоздкими.
Уже сейчас сделаны exe-программы которые создают следующие файлы:
d:\\MyC++Projects\\MyC++Project05\\Map_of_Files\\Map_Kross03_rc
d:\\MyC++Projects\\MyC++Project05\\Map_of_Files\\Map_Kross03_vcproj
d:\\MyC++Projects\\MyC++Project05\\Map_of_Files\\Map_Resource_h
d:\\MyC++Projects\\MyC++Project05\\Map_of_Files\\Map_KrossDlg03_h
d:\\MyC++Projects\\MyC++Project05\\Map_of_Files\\Kross03_Dlg_cpp
23:31 17.01.2006
Доделал эти экзешники все теперь проверяю,думаю что сразу не будет
работать.
Каждую из 9 программ запустил по одному разу.Ввел число окон
везде- 2
////////////////////////////////////////////////////
10:57 18.01.2006
При компиляции программы выявились следующие ошибки:
1.В файле Kross03.cpp реагирует как на ошибку в определении
конструктора
CKross03App::CKross03App()
: m_dlgPaiAaa(0)
//: m_dlgPaiAab(0)
{
Когда поставил ремарку у имени второй переменной,то сообщение об
ошибке исчезло.Или надо их через запятую?Проверь этот вариант.
-----------------------------------------------------
Ошибка №2 исправлена!
2.В Файле Kross03Dlg.h в качестве приватноых членов программа
почему-то не поместила два приватных члена(если мы задали два окна)
в объявление класса окна:
CPaiAaa m_dlgPaiAaa;
CPaiAab m_dlgPaiAab;
// Kross03Dlg.h : header file
private:
CPaiAaa m_dlgPaiAaa; Небыло этих двух членов!!
CPaiAab m_dlgPaiAab;
public:
CString m_strBitAaa;
CBitmap m_bmpBitAaa;
CString m_strBitAab;
CBitmap m_bmpBitAab;
CString m_strSlovo;
int n_Number;
CString m_strOrient;
};
Объяснение ошибки:
В результате работы программы Kross19
d:\MyC++Projects\MyC++Project05\Project052\Kross19
В директорию Map_Kross03Dlg_h
d:\\MyC++Projects\\MyC++Project05\\Map_of_Files\\Map_KrossDlg03_h\\block02.h";
d:\\MyC++Projects\\MyC++Project05\\Map_of_Files\\Map_KrossDlg03_h\\block04.h";
d:\\MyC++Projects\\MyC++Project05\\Map_of_Files\\Map_KrossDlg03_h\\block06.h";
должно было скопироваться три файла -block02.h ,block04.h block06.h
а скопировался только последний.
------------------------------------------------
3.В заголовочных файлах PaiAaa.h и PaiAab.h
Часть текста предназначенного для PaiAab.h попала в файл
PaiAaa.h !
Посмотрим файл PaiAaa.h :
Это касается второго блока в этом файле:
//CPaiAaa dialog //CPaiAab
И это же касается 7-го блока в этом файле
CPaiAaa(CWnd* pParent = NULL); //standard constructor CPaiAab(CWnd*
Посмотри и увидишь,что правая часть этих предложений
должна находиться в файле PaiAab.h
Это означает что функция из программы Kross15 которая копирует
файл block02.h, в заголовочный файл первого дочернего окна
работает неправильно и вместо двух слов она копирует в первое
окно три слова.Значит надо переделать программу
Программа Kross21
d:\MyC++Projects\MyC++Project05\Project052\Kross21
Эта программа создает следующие текстовые файлы
для для программы Kross15:
d:\\MyC++Projects\\MyC++Project05\\Map_of_Files\\Map_PaintDlgZZ1_h\\block02.h";
d:\\MyC++Projects\\MyC++Project05\\Map_of_Files\\Map_PaintDlgZZ1_h\\block03.h";
d:\\MyC++Projects\\MyC++Project05\\Map_of_Files\\Map_PaintDlgZZ1_h\\block05.h";
d:\\MyC++Projects\\MyC++Project05\\Map_of_Files\\Map_PaintDlgZZ1_h\\block07.h";
в том фрагменте где она делает этот блок чтобы было так:
// CPaiAaa dialog
то есть сделать три слова а не два
И подобных вольностей у меня было много,потому что торопился
и забыл про эти моменты.
соответственно во втором случае надо сделать чтобы было 7 слов
а не 6.
CPaiAaa(CWnd* pParent = NULL); // standard constructor
Теперь 7 слов!
в остальном по моему этот файл скопировался правильно.
///////////////////////////////////////////////////////////
KrossDlg03.cpp
неправильно блоки - 5,12,
Кажется при написании этого файла я забыл хорошую
функцию:
FunFileName02(FileName03,FileName103);
которая копирует в переменную одну строку из файла
Попробую ка я ее применить
m_dlgPaiAaa.Create(IDD_PAI_Aaa, this);
m_dlgPaiAaa.SetWindowPos(0, 40, 40, 60, 60, SWP_SHOWWINDOW);
В эти двух строках надо применить ее так:
---------------------------------------------------------------
Ошибка в файле
d:\\MyC++Projects\\MyC++Project05\\Map_of_Files\\Map_PaintDlgZZ1_cpp\\block16.h";
Блок 16
if( pWnd->m_strBitAaa.GetLength() >0)
Надо сделать так как написано здесь - три слова,а у меня все сжато
в одно слово.
//////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////
Еще остались ошибки:
1.В файле Kross03.cpp реагирует как на ошибку в определении
конструктора
CKross03App::CKross03App()
: m_dlgPaiAaa(0)
//: m_dlgPaiAab(0) Неправильно!
{
Когда поставил ремарку у имени второй переменной,то сообщение об
ошибке исчезло.Или надо их через запятую?Проверь этот вариант.
: m_dlgPaiAaa(0)
, m_dlgPaiAab(0) Правильно!
{
Только перед первой переменной ставится двоеточие,а потом идут
запятые.
------------------------------------------------------
2.Наверно надо переделать в файле PaiAaa.cpp последние строки
pdcAaa
->StretchBlt(0, 0, (rRect.Width()), (rRect.Height()),
&dcMem, 0, 0, bm.bmWidth, bm.bmHeight, SRCCOPY);
Как то это некрасиво
3.Еще компилятор нашел ошибку:
// CPaintDlgZZ1 message handlers
void CPaiAab::ShowBitAab(CPaintDC* pdcAaa) Вот ошибка!!
{
BITMAP bm;
CDC dcMem;
CRect rRect;
// Get the loaded bitmap
pWnd->m_bmpBitAab.GetBitmap(&bm);
// Create a device context to load the bitmap into
dcMem.CreateCompatibleDC(pdcAab);
// Select the bitmap into the compatible device context
dcMem.SelectObject(pWnd->m_bmpBitAab);
// Get the display area available
GetClientRect(rRect);
rRect.NormalizeRect();
// Copy and resize the bitmap to the dialog window
pdcAab
->StretchBlt(0, 0, (rRect.Width()), (rRect.Height()),
&dcMem, 0, 0, bm.bmWidth, bm.bmHeight, SRCCOPY);
21:57 18.01.2006
Вот и сделал программу в которой можно задать любое
(разумное) количество дочерних окон.И все они появятся
на экране.
Это программа:
Теперь надо сделать чтобы она работала как генератор
кроссвордов.
Назад |
Начало урока |
Вверх |
Вперед
Содержание