9be928d6fb
WM_CLOSE was not processed at all for native windows wrapped by wxNativeContainerWindow because we don't handle it ourselves at wxWindow level but still mark it as processed in order to prevent DefWindowProc() from destroying the window. Unfortunately this also prevented the original handler for this message in the native window from being called. Calling just the original handler and not the wxWidgets one is not ideal neither but is much better as it allows to e.g. close MFC frames wrapped in wxNativeContainerWindow whereas before this didn't work at all as WM_CLOSE was completely ignored. Also call the original handler for WM_DESTROY to avoid similar potential problems with this message, even if it doesn't seem to create any with MFC. Extend the mfc sample to show how a wxPanel can be embedded into the existing CFrameWnd.
61 lines
1.4 KiB
C++
61 lines
1.4 KiB
C++
/////////////////////////////////////////////////////////////////////////////
|
|
// Name: mfctest.h
|
|
// Purpose: Sample to demonstrate mixing MFC and wxWidgets code
|
|
// Author: Julian Smart
|
|
// Copyright: (c) Julian Smart
|
|
// Licence: wxWindows licence
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef __MFCTEST_H__
|
|
#define __MFCTEST_H__
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
// CMainWindow:
|
|
// See hello.cpp for the code to the member functions and the message map.
|
|
//
|
|
class CMainWindow : public CFrameWnd
|
|
{
|
|
public:
|
|
CMainWindow();
|
|
|
|
//{{AFX_MSG( CMainWindow )
|
|
afx_msg void OnPaint();
|
|
afx_msg void OnAbout();
|
|
afx_msg void OnTest();
|
|
//}}AFX_MSG
|
|
|
|
DECLARE_MESSAGE_MAP()
|
|
|
|
private:
|
|
class wxNativeContainerWindow* m_containerWX;
|
|
};
|
|
|
|
// A dummy CWnd pointing to a wxWindow's HWND
|
|
class CDummyWindow: public CWnd
|
|
{
|
|
public:
|
|
CDummyWindow(HWND hWnd);
|
|
~CDummyWindow(void);
|
|
};
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
// CTheApp:
|
|
//
|
|
class CTheApp : public CWinApp
|
|
{
|
|
public:
|
|
BOOL InitInstance();
|
|
int ExitInstance();
|
|
|
|
// Override this to provide wxWidgets message loop
|
|
// compatibility
|
|
BOOL PreTranslateMessage(MSG *msg);
|
|
BOOL OnIdle(LONG lCount);
|
|
};
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
#endif // __MFCTEST_H__
|