MessageBox显示在窗口的后面

代码如下。主要功能是,创建了一个窗口,然后单击鼠标左键时弹出一个MessageBox

#include

class CMyApp:public CWinApp
{
public:
 virtual BOOL InitInstance();
};

class CMyWnd:public CFrameWnd
{
public:
 CMyWnd();

 afx_msg void OnPaint();
 afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
 DECLARE_MESSAGE_MAP()
};

#include "CreateTest.h"

CMyApp myapp;
BOOL CMyApp::InitInstance()
{
 m_pMainWnd = new CMyWnd();
 m_pMainWnd->ShowWindow(SW_SHOWNORMAL);
 m_pMainWnd->UpdateWindow();
 return TRUE;
}

BEGIN_MESSAGE_MAP(CMyWnd,CFrameWnd)
 ON_WM_PAINT()
 ON_WM_LBUTTONDOWN()
 END_MESSAGE_MAP()

CMyWnd::CMyWnd()
{
 Create(NULL,_T("hhhh"));
}

void CMyWnd::OnLButtonDown(UINT nFlags, CPoint point)
{
 MessageBox(_T("MyBox"));
}

void CMyWnd::OnPaint()
{
 
}

问题:编译执行,MessageBox总是显示在主窗口的后面,只有敲alt键才可以看见。

原因:OnPaint()。在OnPaint()里一定要调用BeginPaint和EndPaint,或者调用这两个函数的“方法”,如CPaintDC,它的构造函数里调用BeginPaint,

          析构函数调用EndPaint,否则WM_PAINT消息永远都不会从队列里删除,所以就会一直响应。

解决方法:void CMyWnd::OnPaint()
                 {
                      CPaintDC dc(this);
                  }

你可能感兴趣的:(MFC,MFC,MessageBox,OnPaint)