VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1811|回复: 14

求大侠帮忙:为什么最简单的LButton消息都不能响应?

[复制链接]

1

主题

4

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-2-16 20:00:01 | 显示全部楼层 |阅读模式
呜呜,开始学习vc就受到打击,我在VC下编了一个win32 Application,运行后不能响应鼠标左右键,代码如下:

#include <afxwin.h>
class CMyApp:public CWinApp
{
public:
        virtual BOOL InitInstance();
};
class CMainWnd:public CFrameWnd
{
protected:
        afx_msg void OnLButtonDown(UINT nFlags,CPoint point);
        afx_msg void OnRButtonDown(UINT nFlags,CPoint point);
public:
        DECLARE_MESSAGE_MAP()
};
/////////////////////////////////////////////////////////

BEGIN_MESSAGE_MAP(CMainWnd,CFrameWnd)
ON_WM_RBUTTONDOWN()
ON_WM_LBUTTONDOWN()
END_MESSAGE_MAP()
void CMainWnd::OnLButtonDown(UINT nFlags,CPoint point)
{
//        MessageBox("左键单击");
        CDC *pDC=GetDC();
        pDC->TextOut(point.x,point.y,"hello",5);
        CFrameWnd::OnLButtonDown(nFlags,point);
}
void CMainWnd::OnRButtonDown(UINT nFlags,CPoint point)
{
        MessageBox("右键单击");
        CFrameWnd::OnRButtonDown(nFlags,point);
}
BOOL CMyApp::InitInstance()
{
        CFrameWnd* p=new CFrameWnd;
        p->Create(0,"yang");
        p->ShowWindow(SW_SHOWDEFAULT);
        p->UpdateWindow();
//        AfxGetApp()->m_pMainWnd=p;
        this->m_pMainWnd=p;
        return TRUE;
}
CMyApp myapp;
回复

使用道具 举报

0

主题

70

帖子

42.00

积分

新手上路

Rank: 1

积分
42.00
发表于 2020-4-18 21:45:01 | 显示全部楼层
       
你把鼠标移动到整个窗体的边缘在按一下鼠标看看
回复

使用道具 举报

2

主题

19

帖子

11.00

积分

新手上路

Rank: 1

积分
11.00
发表于 2020-4-19 09:30:01 | 显示全部楼层
你的WM_RBUTTONDOWN  WM_LBUTTONDOWN消息函数均放在主框架类中定义的,只有点击到主框思想架窗体上(MDI中,子框架窗体在主框架窗体之上,视窗体在子框架窗体之上),才会响应,你应该有视类吧,在视上点击不会响应的,只有所消息函数放到视类中试试
回复

使用道具 举报

0

主题

8

帖子

8.00

积分

新手上路

Rank: 1

积分
8.00
发表于 2020-4-19 10:45:01 | 显示全部楼层
应该如楼上所说,你响应的应该是框架的消息,而不是客户区
回复

使用道具 举报

0

主题

59

帖子

43.00

积分

新手上路

Rank: 1

积分
43.00
发表于 2020-4-20 08:45:01 | 显示全部楼层
先将屏幕坐标转换成客户区坐标
ScreenToClient(&point);

如果要转换成窗口坐标写个函数就是了
void CMainFrame::ScreenToWindow(LPPOINT lpPoint)
{
   CRect rc;
   GetWindowRect(&rc);
   lpPoint->x -= rc.left;
   lpPoint->y -= rc.top;
}
回复

使用道具 举报

0

主题

10

帖子

9.00

积分

新手上路

Rank: 1

积分
9.00
发表于 2020-4-20 21:30:01 | 显示全部楼层
个人观点:
在MainFrame 里面响应鼠标点击??

我觉得应该在 View 里面去响应把!
回复

使用道具 举报

1

主题

4

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
 楼主| 发表于 2020-4-30 23:15:01 | 显示全部楼层
先谢谢各位大侠,我试试看!
回复

使用道具 举报

1

主题

4

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
 楼主| 发表于 2020-5-2 14:00:01 | 显示全部楼层
谢谢大侠,看到希望了!
回复

使用道具 举报

1

主题

4

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
 楼主| 发表于 2020-5-7 21:00:01 | 显示全部楼层
但是我这个是用win32 application建立的项目,并不是用mfc,按说我就没有考虑生成CView对象,如果是用mfc生成的sdi或者mdi,那第一个捕获鼠标的是view,可是我这个压根就没有view,难到只要用框架类就得必须有视图类吗?即使是用win32 application生成的也不例外。

还请各位高手帮忙看看。拜托!
回复

使用道具 举报

0

主题

59

帖子

43.00

积分

新手上路

Rank: 1

积分
43.00
发表于 2020-5-15 16:45:02 | 显示全部楼层
先了解一下文档视图结构
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表