вот проблема, которая у меня есть. я получил класс CPaneDialog
class CDroView : public CPaneDialog
{
DECLARE_DYNAMIC(CDroView)
public:
CDroView();
virtual ~CDroView();
protected:
DECLARE_MESSAGE_MAP()
public:
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
afx_msg BOOL OnEraseBkgnd(CDC* pDC);
};
Я хочу, чтобы фон этого диалога был прозрачным и показывал, что за этим стоит. Я могу выполнить sh, используя следующий код:
int CDroView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CPaneDialog::OnCreate(lpCreateStruct) == -1)
return -1;
SetWindowLong(m_hWnd, GWL_EXSTYLE, GetWindowLong(m_hWnd,GWL_EXSTYLE) ^ WS_EX_LAYERED);
SetLayeredWindowAttributes(RGB(255,0,255),0, LWA_COLORKEY);
// TODO: Add your specialized creation code here
return 0;
}
BOOL CDroView::OnEraseBkgnd(CDC* pDC)
{
// TODO: Add your message handler code here and/or call default
CRect clientRect ;
GetClientRect(&clientRect) ;
pDC->FillSolidRect(clientRect, RGB(255,0,255)) ; // paint background in magenta
return FALSE;
}
Вот так выглядит диалоговое окно в режиме Popup : TransParent Dialog
Проблема в том, что, как только я пытаюсь переместить / изменить размер / закрепить это диалоговое окно, программа вылетает, и я получаю это сообщение об ошибке: «Необработанное исключение в 0x51e8b340 (mfc100d.dll) в 3DNavigator.exe: 0xC0000005 : Место чтения нарушения доступа 0x00000000. "
ошибка отображается в этой строке внутри метода CPane :: FloatPane (CRect rectFloat, AFX_DOCK_METHOD dockMethod, bool bShow) внутри afxpane. cpp файл:
if (bShow)
{
GetParentMiniFrame()->AdjustLayout();
}
Сообщение об ошибке при попытке переместить диалог
Теперь вот где это становится странным. если я изменю стиль диалога на дочерний вместо всплывающее , изображенное здесь: дочерний стиль Теперь я могу свободно перемещать, изменять размер и даже закреплять этот диалог без каких-либо сбой, НО ... прозрачность больше не работает, и диалог выглядит так: дочерний диалог
Так что мне нужно либо решить проблему с разрешением перемещения или изменения размера диалога / закреплена в режиме Popup , ИЛИ заставляя код Dialog Transparency работать в режиме Child . есть идеи, почему существует какая-либо из этих проблем? спасибо