Как правильно обрабатывать изменение размеров cdialogex?

Я не хочу использовать другие классы для этой цели, такие как easysize или sizecbar с codeproject.com. Я использую MFC CDialogEx. Я пытаюсь это:

LRESULT ChildDialog::OnNcHitTest(CPoint point)
{
// TODO: Add your message handler code here and/or call default
//UINT nHitTest = CWnd::OnNcHitTest(uParam, lParam);
//return (nHitTest == HTLEFT) ? HTNONE : nHitTest;

return CDialogEx::OnNcHitTest(point);
}

void ChildDialog::OnSizing(UINT fwSide, LPRECT pRect)
{
//
//TRACE("%d\n", fwSide);

if (fwSide == WMSZ_RIGHT)
{

SetClassLong(m_hWnd,
GCL_HCURSOR,
(LONG)LoadCursor(NULL, IDC_ARROW));

//ASSERT(FALSE);
//AfxMessageBox(_T("right"));
}
// TODO: Add your message handler code here

CDialogEx::OnSizing(fwSide, pRect);}

Когда я нажимаю справа от диалогового окна, отображается сообщение справа.

Как вы можете видеть в кувшине, я пытаюсь сделать так. Поменяйте курсор, нарисуйте черные точки. изменить размер диалога только на одну сторону сверху и хотите отключить все уголки и налево, направо и вниз. А также, когда я изменяю размер диалогового окна с верхней стороны, также хочу переместить верхний элемент управления.

введите описание изображения здесь

Я не хочу, чтобы кто-то делал все это для меня. Просто совет, как мне этого добиться. Я беру этот кувшин из программного обеспечения зависит. Любая помощь оценит. Заранее спасибо.

2

Решение

Вы должны обработать OnNCHitTest и OnSetCursor, чтобы изменить курсор. Верните HTNOWHERE из OnNCHitTest, когда курсор находится над границей, и установите соответствующий курсор в OnSetCurosr. Вы можете установить переменную-член из OnNCHitTest, чтобы узнать значение теста попадания, например m_hittest.
Для определения размера вы можете использовать класс CRectTracker в OnMouseMove, когда у вас есть захват (левая кнопка вниз).

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector