Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Изменение размера окна

1.9K
18 апреля 2006 года
Rad87
123 / / 14.12.2005
Я в своей программе изменил диалог (убрал рамку и скруглил углы). Как мне теперь создать механизм изменения размера формы с помощью мыши.
PS Выставление соответстующего стиля для меня не подходит так как у меня форма не стандартная по форме
1.9K
19 апреля 2006 года
Rad87
123 / / 14.12.2005
А нельзял эту рамку нарисовать самому. Подогнав её под свою форму
324
19 апреля 2006 года
AndreySar
532 / / 01.08.2004
Цитата:
Originally posted by Rad87
А нельзял эту рамку нарисовать самому. Подогнав её под свою форму



А почему бы нет? Есть сообщение WM_NCPAINT

1.9K
19 апреля 2006 года
Rad87
123 / / 14.12.2005
Цитата:
Originally posted by AndreySar
А почему бы нет? Есть сообщение WM_NCPAINT


WM_NCPAINT - заставляет перерисоваться всю не клиентскую область. А как нарисовать эту рамку?

324
20 апреля 2006 года
AndreySar
532 / / 01.08.2004
Цитата:
Originally posted by Rad87
WM_NCPAINT - заставляет перерисоваться всю не клиентскую область. А как нарисовать эту рамку?



Получи DC своего окна GetWindowDC(), затем получи обрамляющий прямоугольник GetWindowRect(). После этого рисуй рамку. Rectangle() или MoveTo()?, LineTo()

1.9K
20 апреля 2006 года
Rad87
123 / / 14.12.2005
Цитата:
Originally posted by AndreySar
Получи DC своего окна GetWindowDC(), затем получи обрамляющий прямоугольник GetWindowRect(). После этого рисуй рамку. Rectangle() или MoveTo()?, LineTo()


Псевдо рамку я уже нарисовал осталось добиться её функциональности.

Я пытаюсь так

void CUserDialog::OnLButtonDown(UINT nFlags, CPoint point)
{
if (point.y<2)
{
CDialog::OnLButtonDown(nFlags, point);
ReleaseCapture();

RECT rec;
this->GetWindowRect(&rec);

if (this->SendMessage(WM_SIZING,WMSZ_TOP, (LPARAM)&rec))MessageBox("good ",0,0);

}
}

Но у меня SendMessage возвращает false и окно не изменяет. Что я делаю не так?

1.9K
25 апреля 2006 года
Rad87
123 / / 14.12.2005
В ходе изысканий а нете по своей проблеме я нашел информацию о сообщении WM_SYSCOMMAND. Я её использую при нажатии на левую кнопку мыши. Форма при захвате изменяет свои размеры, но когда я в параметрах указываю HTTOP(типа как при захвате мышью сверху формы) форма изменяет свои размеры с правой стороны, при указании ,например, HTLEFT с формой ничего не происходит, а вот курсор становится крестиком(как при перемещеии)

Вот мой код:

ReleaseCapture();
RECT rec;
this->GetWindowRect(&rec);
::SendMessage(this->GetSafeHwnd(),WM_SYSCOMMAND, SC_SIZE | HTTOP, 0);

Что я делаю не так?

Помогите пожалуйста!! Очень надо
1.9K
27 апреля 2006 года
Rad87
123 / / 14.12.2005
Ну проблема в общем-то решилась спомощью
::SendMessage(this->GetSafeHwnd(),WM_SYSCOMMAND, SC_SIZE + HTTOP -9 , 0);

PS почему нужно вычитать 9 я так и непонял. Если кто знает объясните.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог