MFC销售系统项目——静态拆分窗口与自定义消息

    技术2024-12-28  12

    一. 静态拆分窗口

    1、自定义两个类:CSelectView和CDispalyView(它的基类必须是视图类);

    CSelectView继承于CTreeView,CDispalyView继承于CFormView。

     

    2、CMainFrame类中,声明CSplitterWnd类型的对象:

    private: CSplitterWnd m_spliter; // 切分窗口类对象

     

    3、重写框架类CMainFrame的OnCreateClient函数:return TRUE; 自己初始化客户端。

    BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext) { // TODO: 在此添加专用代码和/或调用基类 // 静态拆分窗口,1行2列,CSplitterWnd::CreateStatic m_spliter.CreateStatic(this, 1, 2); // 创建视图:CSplitterWnd::CreateView //0, 0 : 放在第0行第0列的位置 //RUNTIME_CLASS(CSelectView) :需要头文件#include "SelectView.h", CSelectView在SelectView.h中声明 // CSize(250, 500):指定视图宽度和高度 //pContext : 为OnCreateClient()最后一个形参 m_spliter.CreateView(0, 0, RUNTIME_CLASS(CSelectView), CSize(200, 500), pContext); //0, 1: 放在第0行第1列的位置 //CDispalyView,需要头文件#include "DispalyView.h" m_spliter.CreateView(0, 1, RUNTIME_CLASS(CDispalyView), CSize(600, 500), pContext); //return CFrameWnd::OnCreateClient(lpcs, pContext); return TRUE; }

     

    二. 自定义消息及消息处理函数

    1、在CMainFrame.h中自定义消息和消息处理函数: 

    #define NM_A (WM_USER + 100) #define NM_B (WM_USER + 101) #define NM_C (WM_USER + 102) #define NM_D (WM_USER + 103) #define NM_E (WM_USER + 104) //自定义消息处理函数 afx_msg LRESULT OnMyChange(WPARAM wParam, LPARAM lParam);

    2、在CMainFrame.cpp中绑定。

    BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd) ON_WM_CREATE() //ON_MESSAGE响应的是自定义消息 //产生NM_X消息,自动调用OnMyChange函数 ON_MESSAGE(NM_A, OnMyChange) ON_MESSAGE(NM_B, OnMyChange) ON_MESSAGE(NM_C, OnMyChange) ON_MESSAGE(NM_D, OnMyChange) ON_MESSAGE(NM_E, OnMyChange) ON_MESSAGE(NM_F, OnMyChange) ON_COMMAND(ID_32771, &CMainFrame::On32771) ON_COMMAND(ID_32772, &CMainFrame::On32772) ON_COMMAND(ID_32773, &CMainFrame::On32773) ON_COMMAND(ID_32775, &CMainFrame::On32775) ON_COMMAND(ID_APP_ABOUT, &CMainFrame::OnAppAbout) END_MESSAGE_MAP()

    3、在CSelectView.cpp的OnTvnSelchanged函数中发送消息:

    if (str == TEXT("个人信息")) { //需要包含框架类头文件#include "MainFrm.h" //CWnd::PostMessage 将一个消息放入窗口的消息队列 //AfxGetMainWnd():框架窗口对象的指针 //AfxGetMainWnd()->GetSafeHwnd():获取返回窗口的句柄,CWnd::GetSafeHwnd //NM_A:发送自定义消息 //(WPARAM)NM_A:指定了附加的消息信息 //(LPARAM)0:指定了附加的消息信息,此参数这里没有意义 ::PostMessage(AfxGetMainWnd()->GetSafeHwnd(), NM_A, (WPARAM)NM_A, (LPARAM)0); }

     

     

     

    Processed: 0.011, SQL: 9