Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Как установить CDialog в нужную позицию экрана?  (Прочитано 5803 раз)
0 Пользователей и 1 Гость смотрят эту тему.
erslgoeirjh
Новенький

ru
Offline Offline

« : 22-09-2016 07:22 » 

У меня есть диалог myDialog класса CDialog, который является потомком класса CDialog. Вот мой код:

Код:
void  CPage1::OnBnClickedButton2()
{
    CMyDialog  myDialog(this);
    myDialog.MoveWindow(100,100,200,200);
    myDialog.DoModal();
}


В отладчике на строке myDialog.MoveWindow(100,100,200,200); у меня выскакивает сообщение об ошибке:

Цитата
Debug assertion failed!
Program: C:\Windows\system32\mfc110d.dll
File f:\dd\vctools\vc7libs\ships\atlmfc\src\mfc\winocc.cpp
Line: 307

Что это означает? Как исправить эту ошибку?
Как сделать так, чтобы myDialog выводился в модальном режиме на позиции (100,100) ?


Добавлено через 48 секунд:
Я работаю на Visual C++ 2012, использую библиотеку MFC.
« Последнее редактирование: 22-09-2016 07:23 от erslgoeirjh » Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #1 : 22-09-2016 09:47 » new

Что это означает? Как исправить эту ошибку?

А сие откуда?

Код: (C++)
CMyDialog  myDialog(this);
myDialog.MoveWindow(100,100,200,200);

Чтобы было понятно.

1. В первой строчке создаётся ОБЪЕКТ.

2. Объект - не есть автоматически окно, и к нему нельзя применять вот так вот сразу ф-ю окна. В конечном счёте,
myDialog.MoveWindow отправляет сообщение... несуществующему на данный момент окну.

Ну и что стоит в 307 winocc.cpp тоже легко "подсмотреть"


Так откуда?

Цитата
Как сделать так, чтобы myDialog выводился в модальном режиме на позиции (100,100) ?

MoveWindow необходимо вызывать в CMyDialog::OnInitDialog после вызова ф-ции базового класса, предварительно сообщив ему необходимые координаты и размеры.

* ss1.png (7.64 Кб - загружено 1019 раз.)
« Последнее редактирование: 22-09-2016 09:59 от Джон » Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines