| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Visual C++/MFC/WTL > Стандартное SDI приложение + DialogBox |
| Автор: v2v 26.3.2007, 20:22 |
| Создаю стандартноe SDI MFC приложение с помощью VS2005 . Можно ли каким то образом вместо документа, который создаётся подсунуть мой дайлог бокс из ресурсов? Если да, то как?) |
| Автор: Greeen 26.3.2007, 21:25 |
| Не совсем понял что значит но чувствую, что тебе поможет CFormView |
| Автор: Earnest 27.3.2007, 07:54 |
| Или, если тебе не нужен документ вообще, может расмотреть приложение на основе диалогового окна? Тебе точно нужно SDI? |
| Автор: v2v 27.3.2007, 14:19 |
| Что - то у меня не получается в приложении на основе диалога создать тулбар CDialogBar. Делаю так же как в sdi: http://forum.vingrad.ru/topic-142989.html# . |
| Автор: Earnest 27.3.2007, 14:59 |
| Ну, вообще говоря, к диалогу можно прилепить панель, но только жестко придоченную, без перемещения и ресайза. Да и то не без геморроя. Это потому, что окончательную доводку панели напильником производит CFrameWnd, коим диалог не является. С другой стороны, если тебя устраивает жестко прибитая панель, никто не мешает создать просто дочерний диалог, с помощью Create. Выглядеть будет точно так же. А обработку его уведомлений в любом случае руками писать нужно, т.к., как уже было сказано, родительский диалог - не CFrameWnd. |
| Автор: v2v 27.3.2007, 18:24 |
| Есть два диалог бокса.. Я из одного пітаюсь получить доступ к контролам второго с помошью функции: GetDlgItem(идентификатор,буфер). Но у меня ошибка "Идентификатор не найден".... Я делаю не правильно... А как правильно? |
| Автор: zkv 27.3.2007, 22:51 |
какой еще буфер? странно, на этапе компиляции не должно быть ошибки в любом случае, если идентификатор реальный. Вообщем предлагаю вам поступить так: 1. В редакторе ресурсов добавляем и рисуем диалог, даем какой-нить осмысленный идентификатор (необязательно, для собственного удобства) 2. В редакторе ресурсов правой мышью по только что отрисованному диалогу -> Add class (на базе CDialog) далее его буду называть CSecDialog 3. Теперь повторяем: Опять в редакторе правой мышью по контролу нового диалога -> Add variable (тип - control) (Пока не кончатся контролы, которым требуется управление) 4. Теперь лезем в первый (главный) диалог, в членах класса создаем указатель типа CSecDialog *m_dlgSec; Хотя можно и не указатель а сразу объект. 5. Теперь думаем в каком месте вызвать второй диалог. Если хотим, чтобы он жил вместе с главным от начала и до конца, то делаем это в методе OnInitDialog(). Выделяем память под указатель, вызываем метод Create(), в качестве ID подсовываем наш осмысленный из пункта 1. В качестве указателя на родителя подсоваваем this. 6. Теперь радуемся как все замечательно управляется. Управление контролом второго диалога примерно такое: m_dlgSec->m_myControl.DoSomething(); Вроде ничего не пропустил, но всякое бывает. Удачи! Да, все действия описаны под 2003 студию. PS не забываем освобождать память, после того как она больше не нужна. |
| Автор: Earnest 28.3.2007, 07:44 |
| v2v, pSecondDialog->GetDlgItem(...) Ты так делаешь? Или просто GetDlgItem? |
| Автор: v2v 30.3.2007, 16:23 |
| ок! спасибо. А как добавить на форму (CformView) диалог бокс с ресурсов?? Такое впринципе возможно? |
| Автор: Earnest 30.3.2007, 18:56 | ||
Что значит
? Сделать дочернюю диалоговую панель? Так просто создай дочерний диалог в нужном месте и парентом =formview. Или создать форм-вью согласно нарисованному диалогу? Так этот ресурс в конструктор передается... |
| Автор: v2v 2.4.2007, 16:12 |
| Как заставить контрол (кнопку) "приклеится" к правому краю окна и двигатся с ним не меняя размера. Это желательно сделать при создании, поскольку таких контролов много и за каждым следить - перерисовывать не подходит... Должно же быть что то похожее CBRS_ALIGN_RIGHT, но не для тулбаров, а для обычных controls. |
| Автор: v2v 2.4.2007, 17:11 |
сложноватый код(как для новичка мфц) ...а можно тогда каким то образом сгрупировать ( они у меня все в одной области окна будут находится) и управлять только этим сгруппированным контролом. Group Box?? а как добавлять к нему элементы, что бы при его смещении все дочерние тоже смещались... |
| Автор: Earnest 2.4.2007, 18:23 |
| Будешь бояться сложного кода, программистом тебе не бывать. Да и нет там ничего сложного. Разберешься. На этой основе можешь сделать свой вариант, как тебе нравится. Будут конкретные вопросы - задавай. А желание получить разжеванную кашку где-то понимаю, но не уважаю. |
| Автор: v2v 2.4.2007, 18:53 |
| ладно ладно .. жвачек мне пожованных не надо)).. вы мне направление дайте куда двигаться, просто не хотелось бы влазить в тот код, так как я не уверен нужно ли оно мне на самом деле..... так что там на счёт Груп Бокса??? |
| Автор: Earnest 2.4.2007, 19:36 |
бесперспективно Добавлено через 1 минуту и 22 секунды В приведенном примере кода показывается как управлять всеми контролами, не вдаваясь в подробности конкретного окна. |
| Автор: v2v 3.4.2007, 21:14 | ||
так он немного не то делает, как мне надо, ну ладно буду подганять для себя) |
| Автор: Earnest 4.4.2007, 08:02 |
| Ну естественно, задача немного другая, но похожая. |
| Автор: dizzy1984 13.4.2007, 21:55 |
| Еще по поводу мэнэджеров расположения можно посмотреть codeguru и codeproject. Я использовал конкретно http://www.codeproject.com/dialog/layoutmgr.asp и мне очень понравилось. |