Добавление привязки изменения размера к производному классу CMFCPropertySheet

Благодаря поддержке Stack Overflow я смог создать свой собственный CResizingMFCPropertySheet это поддерживает изменение размера. Теперь я пошел, чтобы добавить привязку изменения размера, и я использовал этот код:

void CResizingMFCPropertySheet::InitialiseResizeIcon()
{
    CRect rcIcon, rcClient;

    m_bmpResize.LoadOEMBitmap(OBM_SIZE);
    m_lblResize.Create(0, WS_CHILD | WS_VISIBLE | SS_BITMAP, 
               CRect(0, 0, 16, 16), this, IDC_STATIC_RESIZE);
    m_lblResize.SetBitmap(m_bmpResize);

    GetClientRect(rcClient);
    m_lblResize.GetClientRect(rcIcon);
    m_lblResize.SetWindowPos(&CWnd::wndTop, rcClient.right - rcIcon.Width(), 
               rcClient.bottom - rcIcon.Height(), 0, 0, SWP_NOSIZE);
}

(Примечание: приведенный выше код исправлен и больше не использует динамическое расположение - не работает).

Метод вызывается в OnInitDialog, Когда лист отображается впервые, он выглядит хорошо:

Лист недвижимости

Вы можете увидеть якорь в правом нижнем углу. Теперь, когда я иду, чтобы изменить размер окна:

Изменение размера листа

Как вы можете видеть, это не правильно отображает якорь.

Обновить

Я поставил WS_CLIPSIBLINGS и это не имеет значения.

Обновить

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

2 ответа

Решение

Я никогда не пробовал этого, я немного искал, и, кажется, есть некоторые проблемы в динамическом выполнении. Некоторые говорили, что это невозможно, другие, кажется, предлагают способы сделать это. Вот некоторые из лучших ссылок, которые я нашел, надеюсь, это поможет.

Как добавить захват в PropertySheet?

https://www.codeproject.com/Tips/214744/How-to-implement-a-resizable-property-sheet-class

https://social.msdn.microsoft.com/Forums/vstudio/en-US/2a85d3a9-3f91-482c-8bc3-02e132035c7f/cannot-resize-a-new-cmfcpropertysheetcmfcpropertypage?forum=vcgeneral

https://www.codeguru.com/cpp/controls/propertysheet/article.php/c543/Resizing-the-Property-Sheet.htm


Этот помог в конце концов:

Создание изменяемого размера CMFCPropertySheet с помощью динамических макетов

Ответ там объясняет, как правильно рисовать пользовательские элементы управления с помощью OnSize,

Измените стиль для CMFCPropertySheet и добавьте WS_CLIPSIBLINGS!

Добавьте WS_CLIPSIBLINGS в окно захвата тоже.

Добавьте WS_CLIPCHILDREN в таблицу CPropertySheet.

Другие вопросы по тегам