Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Диалог на форме или похожий контрол. 
:(
    Опции темы
tonchitos
Дата 8.4.2008, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 447
Регистрация: 24.2.2007

Репутация: 1
Всего: 40



У меня на форме должен быть диалог, прикрепленный в правом углу формы.
Это будет диалог со свойствами.
Если диалог в форме - как его выводить всегда на одно место.
Если есть похожий контрол, то какой?


--------------------
– Люди забыли эту истину, – сказал Лис, – но ты не забывай: ты навсегда в ответе за всех, кого приручил.
PM MAIL   Вверх
Earnest
Дата 8.4.2008, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Да просто создай диалоговый ресурс с типом WS_CHILD, создавай его с помощью Create, а чтобы при резайзе формы он оставался на мести (в правом углу) - обрабатывай OnSize формы и перемещай ручками в нужное место.


--------------------
...
PM   Вверх
tonchitos
Дата 8.4.2008, 18:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 447
Регистрация: 24.2.2007

Репутация: 1
Всего: 40



мне надо чтоб он немодальный получался....

такая проблема - как получить размеры клинтской области главного окна.... гетклиентрект возвращает совсем не то....

GetWindowRect тоже не то, тк захватывает рамку...


--------------------
– Люди забыли эту истину, – сказал Лис, – но ты не забывай: ты навсегда в ответе за всех, кого приручил.
PM MAIL   Вверх
Earnest
Дата 8.4.2008, 20:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Цитата(tonchitos @  8.4.2008,  19:21 Найти цитируемый пост)
мне надо чтоб он немодальный получался....

 Create именно немодальный и создает
Цитата(tonchitos @  8.4.2008,  19:21 Найти цитируемый пост)
как получить размеры клинтской области главного окна.... гетклиентрект возвращает совсем не то....

Это у тебя жар... 
GetClientRect возвращает как раз клиентскую область того окна, у которого спрашивают



--------------------
...
PM   Вверх
tonchitos
Дата 9.4.2008, 12:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 447
Регистрация: 24.2.2007

Репутация: 1
Всего: 40



ну а почему тогда когда я запрашиваю клиент рект и вывожу диалог с этими координатами, то мне выводится диалог с верными рамерами, но неверным местоположением (в левом верхнем углу экрана...)


--------------------
– Люди забыли эту истину, – сказал Лис, – но ты не забывай: ты навсегда в ответе за всех, кого приручил.
PM MAIL   Вверх
Andrey44
Дата 9.4.2008, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

Репутация: 12
Всего: 26



GetClientRect - размеры окна , а не координаты.



--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
tonchitos
Дата 9.4.2008, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 447
Регистрация: 24.2.2007

Репутация: 1
Всего: 40



может потому что AfxGetMainWnd()->GetWindowRect(lpRect) выводит координаты отсчитывая координаты от верхней левой точки экрана, а клиент от родительского окна?
в процессе отладки посмотрела, к примеру:
это  AfxGetMainWnd()->GetWindowRect(lpRect) 
 lpRect    {top=175 bottom=890 left=135 right=1095}    CRect

а вот клиент рект
lpRect2    {top=0 bottom=650 left=0 right=952}    CRect

Добавлено через 8 минут и 41 секунду
размеры те да не очень...захватывает внизу строку состояния... и наверху тулбар тоже я так понимаю считается частью клиентской области...
как мне получить темную область, в которою выводятся все документы.


--------------------
– Люди забыли эту истину, – сказал Лис, – но ты не забывай: ты навсегда в ответе за всех, кого приручил.
PM MAIL   Вверх
Rapalex
Дата 9.4.2008, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 732
Регистрация: 20.1.2006
Где: Украина -> Ник олаев

Репутация: 6
Всего: 8



Юзай ClientToScreen.


--------------------
In vitium ducit culpae fuga.
Желание избежать ошибки вовлекает в другую.
(Horatius)
PM ICQ   Вверх
tonchitos
Дата 9.4.2008, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 447
Регистрация: 24.2.2007

Репутация: 1
Всего: 40



Цитата(Rapalex @ 9.4.2008,  13:00)
Юзай ClientToScreen.

этим получать клиетское окно? чего-то вообще ничего не получает этв ф-ия, абракадабру...

Добавлено через 4 минуты и 59 секунд
может есть контрол какой типа просто панели, чтоб его налепить... прям на форму

Добавлено через 10 минут и 22 секунды
блин, я глупочка, на форму это в документе ж будет


--------------------
– Люди забыли эту истину, – сказал Лис, – но ты не забывай: ты навсегда в ответе за всех, кого приручил.
PM MAIL   Вверх
tonchitos
Дата 9.4.2008, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 447
Регистрация: 24.2.2007

Репутация: 1
Всего: 40



мне нужны координаты рабочей области без тулбара и строки состояния, ведь документы ж ее получают...


--------------------
– Люди забыли эту истину, – сказал Лис, – но ты не забывай: ты навсегда в ответе за всех, кого приручил.
PM MAIL   Вверх
Andrey44
Дата 9.4.2008, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

Репутация: 12
Всего: 26



Ну отнимай высоту тулбара и строки состояния


--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
Earnest
Дата 9.4.2008, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Цитата(tonchitos @  9.4.2008,  13:33 Найти цитируемый пост)
ну а почему тогда когда я запрашиваю клиент рект и вывожу диалог с этими координатами

Патаму что у тебя диалог не дочерний, а должен быть таковым, судя по предыдущим постам.
Дочерние окна при создании и перемещении воспринимают координаты относительно клиентской области родительского окна, а попапы - относительно экрана.
Используй флаг WS_CHILD при создании.

Добавлено через 1 минуту и 46 секунд
Цитата(tonchitos @  9.4.2008,  13:36 Найти цитируемый пост)
размеры те да не очень...захватывает внизу строку состояния... и наверху тулбар тоже я так понимаю считается частью клиентской области...
как мне получить темную область, в которою выводятся все документы. 

Спрашивай не у фрейма, а у вью.



--------------------
...
PM   Вверх
tonchitos
Дата 9.4.2008, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 447
Регистрация: 24.2.2007

Репутация: 1
Всего: 40



Earnest, спасибо большое... 
можете ответить на пару дурацких вопросов?:

спрашивать у вью:

я в ф-ии вида

Код

void CreadMDLView::viewProperties()
{
    if (!propDlg)
    {
    CRect lpRect, lpRect2;
    GetClientRect(lpRect);
    lpRect.left = lpRect.right - 200;
    propDlg.Create(IDD_PROPERTIES,this);
        if (propDlg.IsWindowVisible())
            propDlg.ShowWindow(SW_HIDE);
        else
            propDlg.ShowWindow(SW_SHOW);
        propDlg.MoveWindow(lpRect, 1);
    }
}


вызываю
GetClientRect(lpRect);
он мне возвращает клиентскую область документа, а не фрейма... как быть?

и совсем глупый вопрос...но чего-то не найду, простите... какой ф-ией мне установить свойство WS_CHILD?



--------------------
– Люди забыли эту истину, – сказал Лис, – но ты не забывай: ты навсегда в ответе за всех, кого приручил.
PM MAIL   Вверх
Andrey44
Дата 9.4.2008, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

Репутация: 12
Всего: 26



Можно через
 virtual BOOL ModifyStyle(
   DWORD dwRemove,
   DWORD dwAdd,
   UINT nFlags 
);



--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
tonchitos
Дата 9.4.2008, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 447
Регистрация: 24.2.2007

Репутация: 1
Всего: 40



Код

void CreadMDLView::viewProperties()
{
    if (!propDlg)
    {
    CRect lpRect, lpRect2;
    AfxGetMainWnd()->GetClientRect(lpRect);
//    lpRect.top = lpRect.bottom  - lpRect2.bottom;
    lpRect.left = lpRect.right - 200;
    propDlg.Create(IDD_PROPERTIES,this);
    propDlg.ModifyStyle(0,WS_CHILD,0);
        if (propDlg.IsWindowVisible())
            propDlg.ShowWindow(SW_HIDE);
        else
            propDlg.ShowWindow(SW_SHOW);
        propDlg.MoveWindow(lpRect, 1);
    }
}


в общем я установила модифайлстайлом - реакции никакой....

Добавлено через 5 минут и 6 секунд
что не так? вообще идея вычитать строку состояния и тулюар мне не нравится ибо некрасиво это как то


--------------------
– Люди забыли эту истину, – сказал Лис, – но ты не забывай: ты навсегда в ответе за всех, кого приручил.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0561 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.