Как автоматически настроить элемент управления MFC ole на странице word 2013
Всем Привет,
Я создал элемент управления MFC ole В c++, и у меня есть проблема, когда я вставляю элемент управления на пустую страницу Word (Word 2013), он больше размера страницы.
Если я уменьшу рисунок, прежде чем скопировать его в буфер обмена, он будет работать нормально.
Я видел событие под названием :
BOOL CMeasGraphCtrl::OnSetExtent(LPSIZEL lpSizeL)но я не получаю доступ к размеру прямоугольника клиентского сайта во время процедуры вставки.
Интересно, если кто-то уже работал в этой области, чтобы уменьшить размер элемента управления, если он находится за пределами размера контейнера клиента.
Как достичь "размера контейнера", чтобы правильно настроить его под размер контейнера ?
Есть ли у кого-нибудь идея, как автоматически настроить размер элемента управления ?
Заранее Вам большое спасибо.
С уважением,
Мики
Что я уже пробовал:
Я провел следующий эксперимент:
BOOL CMeasGraphCtrl::OnSetExtent(LPSIZEL lpSizeL) { BOOL bRet = FALSE; if (m_bChangingExtent) // Prevent infinite recursion! return FALSE; // after converting lpSizeL to pixels, it returns me the correct size of the control I copied on the winform window. SIZEL sizeHiMetric; _AfxXformSizeInHimetricToPixels(NULL, lpSizeL, &sizeHiMetric); SIZEL sizeExtentPixels; SIZEL sizeExtentHimetric; sizeExtentPixels.cx = m_cxExtent; sizeExtentPixels.cy = m_cyExtent; _AfxXformSizeInPixelsToHimetric(NULL, &sizeExtentPixels, &sizeExtentHimetric); int cx, cy; SIZEL controlSizePixels; SIZEL controlSizHiMetric; GetControlSize(&cx, &cy); controlSizePixels.cx = cx; controlSizePixels.cy = cy; _AfxXformSizeInPixelsToHimetric(NULL, &controlSizePixels, &controlSizHiMetric); // I never get a valid pointer to this information (it remains null). if (m_pInPlaceSite != nullptr) { RECT rcClientRect; GetClientRect(&rcClientRect); SIZEL controlSize; SIZEL controlSizeHiMetric; controlSize.cx = cx; controlSize.cy = cy; AtlPixelToHiMetric(&controlSize, &controlSizeHiMetric); RECT rcRectInContainer; GetRectInContainer(&rcRectInContainer); ClipCaretRect(&rcRectInContainer); } bRet = COleControl::OnSetExtent(lpSizeL); return bRet; }