Форум программистов, компьютерный форум CyberForum.ru

Как использовать экземпляры классов МFC? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ MFC : CBitmap "своими руками" (из файла/генерация on-the-fly...) http://www.cyberforum.ru/cpp-beginners/thread461935.html
Вот в чем вопрос... Необходимол в окошке отрисовать картинку из файла. Как сделать самодельный класс, загружающий изображение из файла в свой 'внутренний' формат - более-менее понятно. Как отрисовать CBitmap в окошке - про это в книжках для начинающих пишут (я еще на прошлой неделе прочитал :) Вопрос : КАК изготовить CBitmap самому, т.е. с заданными размерами и 'самодельным' изображением?
C++ Еще одно размышление о string из STL Если строки в STL по стандарту могут совместно использовать дин и тот же участок памяти (а это именно следуя из стандарта), тогда следующие операции со строками законны и даже должны приветствоваться: string GetMyFavouriteString() { string tmp_string; tmp_string = 'My favourite phrase'; return tmp_string; }так ли это? Поправте меня если я что не так понял. Зарание благодарю. http://www.cyberforum.ru/cpp-beginners/thread461898.html
Как UUIDGEN.EXE генерит GUID C++
Мне говорили, что она инфу с конкретной машины стягивает, а какую?
Вставка нового элемента в ListCtrl C++
Проблема с вставкой нового элемента в ListCtrl LVITEM newItem; newItem.mask=LVIF_TEXT|LVIF_STATE; newItem.iItem=0; newItem.iSubItem=1; newItem.state=0; newItem.stateMask=0; newItem.pszText='sdvsvd'; newItem.cchTextMax=0;
C++ Портабельная библиотека для C++ http://www.cyberforum.ru/cpp-beginners/thread461851.html
Поделитесь опытом использования портабельных С++ библиотек (linux, sun, win32) ? Необходимо чтобы были : потоки, процессы, события, мютексы, семафоры
C++ Подскажите функцию для получения HWND текущего окна, или по названию окна (для экспорта в VFP6) пусто подробнее

Показать сообщение отдельно
Brother
Сообщений: n/a
30.10.2007, 12:09     Как использовать экземпляры классов МFC?
[пришло по электронной почте от Valdis]

Получил ответ, но!

Если использовать указатель на мой thtTree, то другие классы его могут увидеть лишь используя экземпляр
класса CMainFrame, где theTree объявлен.
Ну, сделаю я:

C++
1
2
CMainFrame* mFrame;
mFrame = new CMainFrame;
или
C++
1
CMainFrame mFrame;
затем использую mFrame->theTree..... или mFrame.theTree,

но этот mFrame - новый экземпляр, а не тот самый, который ответственен за работу окон в моей программе!
Как быть?
Ответь, please!

[отвечаю ]
Первое, отфонарное... Объяви theTree в классе как static. Это будет означать, что ты хочешь иметь единственный экземпляр theTree для всех экземпляров mFrame.
Но - лучший ли это вариант?
Дело в том, что ты пытаешься смешать вместе данные программы ('бизнес-логику') с отображением данных на экран. А это не очень-то хорошо. Задай себе вопрос : являентся ли theTree *частью* окна или theTree лишь *отображается* пользователю в этом окне.
Если второе, то надо делать как-то так:
C++
1
2
3
4
5
6
7
8
mFrame{
  mFrame(..., Tree *pTree)
  ...
  CTree *pTheTree;
}
 
Tree MyTree;
mFrame MainFrame(..., &MyTree);
(это так, образно говоря, конечно...)

Другими словами, те данные, с которыми необходимо работать много кому, нездорово делать членом какого-то одного класса, специально к тому не предназначенного, и затем ломать голову, как к нему подступиться.
(Конечно, это не безусловное правило, но в целом его неплохо придерживаться)
Очень рекомендую на тему проектирования книгу Гради Буча 'Объектно-ориентированный анализ и проектирование' - сам читал с удовольствием. Можно сказать, классика ООП.
 
Текущее время: 10:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru