MFC/QT 学习笔记(三)——MFC模板创建

这篇博客介绍了如何使用MFC创建一个简单的应用程序,包括选择单个文档模板,设置窗口外观,以及处理WM_LBUTTONDOWN消息来响应鼠标左键点击。在CMainFrame中修改窗口样式,在CMFCTestApp中初始化窗口,在CMFCTestView中定义OnLButtonDown事件处理程序,用于显示点击位置坐标。
摘要由CSDN通过智能技术生成

新建项目->MFC模板->MFC应用程序->应用程序类型:单个文档;项目样式:MFC 标准->下一步...OK

此时点击运行,可直接弹出窗口。

 

调整 视图->类视图:

  ·CAboutDlg,帮助选卡->关于对话框

 

  ·CMainFrame,框架类,相框,PreCreateWindow可修改窗口外观,光标,图标;Create注册,调用OnCreate产生窗口;

  ·CMFCTestApp,InitInstance入口

  ·CMFCTestDoc,数据的存储和加载

  ·CMFCTestView,数据的显示和修改,相片

 

右键CMFTestView->属性->消息->WM_LBUTTONDOWN->OnLButtonDown;(自动创建,取消步骤相同,但取消只是逻辑删除,即注释掉了,并未真正删除)

 

//文件名:CMainFrame.h:

class CMainFrame : public CFrameWnd

// 生成的消息映射函数
protected:
    afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
    DECLARE_MESSAGE_MAP()//消息映射宏

//文件名:CMainFrame.cpp

BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)//分界宏
    ON_WM_CREATE()

    ON_WM_LBUTTONDOWN()
END_MESSAGE_MAP()

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CFrameWnd::PreCreateWindow(cs) )
return FALSE;
// TODO: 在此处通过修改
// CREATESTRUCT cs 来修改窗口类或样式

return TRUE;
}

 

//文件名:CMFCTestApp.cpp

BOOL CMFCTestApp::InitInstance(){

  ... ...

// 唯一的一个窗口已初始化,因此显示它并对其进行更新
    m_pMainWnd->ShowWindow(SW_SHOW);
    m_pMainWnd->UpdateWindow();
    return TRUE;
}

 

//文件名:CMFCTestView.h

class CMFCTestView : public CView

// 生成的消息映射函数
protected:
    DECLARE_MESSAGE_MAP()
public:
    afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
    afx_msg void OnPaint();

//文件名:CMFCTestView.cpp

// CMFCTestView 绘图
void CMFCTestView::OnDraw(CDC* pDC)
{
    CMFCTestDoc* pDoc = GetDocument();
    ASSERT_VALID(pDoc);
    if (!pDoc)
        return;

    // TODO: 在此处为本机数据添加绘制代码
    pDC->TextOutW(100, 100, TEXT("为了部落"));
}

// CMFCTestView 消息处理程序

void CMFCTestView::OnLButtonDown(UINT nFlags, CPoint point)
{
    // TODO: 在此添加消息处理程序代码和/或调用默认值
    CString str;
    str.Format(TEXT("x=%d,y=%d"), point.x, point.y);
    MessageBox(str);

    CView::OnLButtonDown(nFlags, point);
}

//如果使用了OnDraw,就不要再使用OnPaint了;OnPaint会覆盖OnDraw;

void CMFCTestView::OnPaint()
{
    CPaintDC dc(this); // device context for painting
                       // TODO: 在此处添加消息处理程序代码
                       // 不为绘图消息调用 CView::OnPaint()
    dc.TextOutW(100, 100, TEXT("为了联盟"));
}

ps:

后缀Ex为扩展函数;

前缀Afx为全局函数,解决父类不相关问题。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值