----- Original Message ----- From: Trionon, Kharkov To: kaev@yandex.ru Sent: Saturday, May 06, 2000 2:37 AM Subject: MFCByStep Я предпочитаю везде использовать диалоги и никогда не создавать окон с помощью CreateWindow...
Вот тут я узнал один интересный логический ход при работе с диалоговыми окнами, и думаю с Вами им нужно поделиться. Отчасти к небольшому развитию этой темы меня подвело и это письмо выше. Спасибо за мысль. И так задача в том можно ли как-нибудь еще кроме как через DDX и класс элемента получить доступ к элементу на диалоговом окне. Можно имея идентифкатор элемента.
Все элементы управления являются потомками CWnd и можно очень просто построить этот класс имея идентифкатор элемента. Вот так с помошью GetDlgItem.
CWnd* pWnd = GetDlgItem(IDC_....);
Дальше мы можем использовать функции CWnd
pWnd->GetWindowRect(...);
Несмотря на всю простоту этого примера он кроет огромный потенциал для автоматизации. Все элементы диалогового окна являются потомками от CWnd, в нем находится огромное количество параметров окна, в том числе и местоположение, размер и так далее. Вот. Используя это свойство Вы сможете проводить изменение положения или размера или еще чего-то сразу со всеми элементами диалогового окна вне зависимости от их типа только на основе идентификатора ресурса.
3. Ваш пример по вышеуказанному адресу с сохранением функциональности мог бы занимать значительно меньше - практически это мог бы быть единственный вызов DialogBox() + функция диалога Конечно в этом случае он бы потерял свойство "учебности", но если бы все вместе с "классическим" примером, демонстрирующим СТРУКТУРУ и ИДЕОЛОГИЮ Win32 публиковали бы "короткий", сколько людей было бы наставлено на путь истинный!
Действительно самый короткий пример с использованием MFC вот такой. Делаем проект Win 32 Application. Ставим в настройках USE MFC далее код.
#include "stdafx.h" #include "afxwin.h" int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { AfxMessageBox("Hello Word"); return 0; }
Только надо в stdafx.win отключить #include
...... #define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers //#include <windows.h> // TODO: reference additional headers your program requires here ......