求助:这个入门级简单程序的消息为何不响应?求高手!

时间:2022-08-01 00:27:12
vc2008下操作,下面的mfc程序编译通过了,应该单击鼠标出来消息框的,但是为何无反应???程序如下!谢谢各位大侠的帮助!

#include<afxwin.h>
class CMyApp:public CWinApp
{
public:
virtual BOOL InitInstance();
};

class CMainWnd:public CFrameWnd
{
protected:
afx_msg LRESULT Function1(WPARAM wParam,LPARAM lParam)
{
MessageBox(L"left");
return TRUE;
}
afx_msg LRESULT Function2(WPARAM wParam,LPARAM lParam)
{
MessageBox(L"right");
return 0;

}
DECLARE_MESSAGE_MAP();
};

BEGIN_MESSAGE_MAP(CMainWnd,CFrameWnd)
ON_MESSAGE(WM_LBUTTONDOWN,Function1)
    ON_MESSAGE(WM_RBUTTONDOWN,Function2)
END_MESSAGE_MAP()
BOOL CMyApp::InitInstance()
{
CFrameWnd*p=new CFrameWnd;
p->Create(0,L"mfc");
p->ShowWindow(SW_NORMAL);
p->UpdateWindow();
AfxGetApp()->m_pMainWnd=p;
return TRUE;
}
CMyApp myapp;

11 个解决方案

#1


将函数定义写到消息声明表
DECLARE_MESSAGE_MAP();
之外去!
看你这代码乱的都不像MFC程序!全是手写的?

#2



#include<afxwin.h>

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

class CMainWnd:public CFrameWnd
{
public:
CMainWnd();
protected:
afx_msg void OnLButtonDown(UINT nFlag, CPoint point);
afx_msg void OnRButtonDown(UINT nFlag, CPoint point);
DECLARE_MESSAGE_MAP();
};

BOOL CMyApp::InitInstance()
{
m_pMainWnd = new CMainWnd;
m_pMainWnd->ShowWindow(m_nCmdShow);
m_pMainWnd->UpdateWindow();
return TRUE;
}


BEGIN_MESSAGE_MAP(CMainWnd,CFrameWnd)
ON_WM_LBUTTONDOWN()
ON_WM_RBUTTONDOWN()
END_MESSAGE_MAP()

CMainWnd::CMainWnd()
{
Create(NULL, _T("MFC"));
}

void CMainWnd::OnLButtonDown(UINT nFlag, CPoint point)
{
MessageBox(_T("left"));
}
void CMainWnd::OnRButtonDown(UINT nFlag, CPoint point)
{
MessageBox(_T("right"));
}

#3


囧。。。。。。

#4


引用 2 楼 visualeleven 的回复:
C/C++ code

#include<afxwin.h>

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

class CMainWnd:public CFrameWnd
{
public:
    CMainWnd();
protected:
    afx_msg void OnLBu……


感动,部长大人比我还睡得晚啊,看来真是十里万姬啊!

#5


引用 1 楼 dianhui 的回复:
将函数定义写到消息声明表
DECLARE_MESSAGE_MAP();
之外去!
看你这代码乱的都不像MFC程序!全是手写的?

写到外面也是一样啊,还是能运行但是不出来消息框。。。。。。

#6


引用 2 楼 visualeleven 的回复:
C/C++ code

#include<afxwin.h>

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

class CMainWnd:public CFrameWnd
{
public:
    CMainWnd();
protected:
    afx_m……


谢谢您的解答,但是这个程序运行时出错了,
“ex41.exe 中的 0x00ead66a 处最可能的异常: 0xC0000005: 读取位置 0x00000000 时发生访问冲突”

#7


先用向导生成开始吧,自己写的话开始的时候难度太大了

#8


引用 3 楼 justin_shi 的回复:
囧。。。。。。

有何高见?

#9


引用 7 楼 xiuxianshen 的回复:
先用向导生成开始吧,自己写的话开始的时候难度太大了

谢谢!

#10


楼主补下基础吧,不然人家回答了你的问题,你都看不明白

#11


多谢!我自己程序搞错了一行!解决了!谢谢各位,分数有限,不能全给了,见谅!

#1


将函数定义写到消息声明表
DECLARE_MESSAGE_MAP();
之外去!
看你这代码乱的都不像MFC程序!全是手写的?

#2



#include<afxwin.h>

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

class CMainWnd:public CFrameWnd
{
public:
CMainWnd();
protected:
afx_msg void OnLButtonDown(UINT nFlag, CPoint point);
afx_msg void OnRButtonDown(UINT nFlag, CPoint point);
DECLARE_MESSAGE_MAP();
};

BOOL CMyApp::InitInstance()
{
m_pMainWnd = new CMainWnd;
m_pMainWnd->ShowWindow(m_nCmdShow);
m_pMainWnd->UpdateWindow();
return TRUE;
}


BEGIN_MESSAGE_MAP(CMainWnd,CFrameWnd)
ON_WM_LBUTTONDOWN()
ON_WM_RBUTTONDOWN()
END_MESSAGE_MAP()

CMainWnd::CMainWnd()
{
Create(NULL, _T("MFC"));
}

void CMainWnd::OnLButtonDown(UINT nFlag, CPoint point)
{
MessageBox(_T("left"));
}
void CMainWnd::OnRButtonDown(UINT nFlag, CPoint point)
{
MessageBox(_T("right"));
}

#3


囧。。。。。。

#4


引用 2 楼 visualeleven 的回复:
C/C++ code

#include<afxwin.h>

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

class CMainWnd:public CFrameWnd
{
public:
    CMainWnd();
protected:
    afx_msg void OnLBu……


感动,部长大人比我还睡得晚啊,看来真是十里万姬啊!

#5


引用 1 楼 dianhui 的回复:
将函数定义写到消息声明表
DECLARE_MESSAGE_MAP();
之外去!
看你这代码乱的都不像MFC程序!全是手写的?

写到外面也是一样啊,还是能运行但是不出来消息框。。。。。。

#6


引用 2 楼 visualeleven 的回复:
C/C++ code

#include<afxwin.h>

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

class CMainWnd:public CFrameWnd
{
public:
    CMainWnd();
protected:
    afx_m……


谢谢您的解答,但是这个程序运行时出错了,
“ex41.exe 中的 0x00ead66a 处最可能的异常: 0xC0000005: 读取位置 0x00000000 时发生访问冲突”

#7


先用向导生成开始吧,自己写的话开始的时候难度太大了

#8


引用 3 楼 justin_shi 的回复:
囧。。。。。。

有何高见?

#9


引用 7 楼 xiuxianshen 的回复:
先用向导生成开始吧,自己写的话开始的时候难度太大了

谢谢!

#10


楼主补下基础吧,不然人家回答了你的问题,你都看不明白

#11


多谢!我自己程序搞错了一行!解决了!谢谢各位,分数有限,不能全给了,见谅!