精华内容
下载资源
问答
  • MFC架构
    2015-10-22 14:50:00

    MFC的六大关键技术:

    1)MFC程序的初始化过程

    2)消息映射

    3)运行时类型识别(RTTI)

    4)动态创建

    5)永久保存

    6)消息传递

    一、MFC的初始化过程:

    MFC的架构组成:

    1.要有CWinApp的派生类

    2.必须在全局区定义一个派生类的对象

    3.在CWinApp派生类中必须对InitInstance()函数进行重写

    【在MFC软件工程中,以APP类中的InitInstance()函数作为主函数,连接MFC的平台使用static Library静态链接库】

    #include "stdafx.h"
    
    class CMyApp:public CWinApp
    {
        virtual BOOL InitInstance()
        {        
            AfxMessageBox("xx");
            return TRUE;
        }
    };
    CMyApp theApp;
    /*
    int APIENTRY WinMain(HINSTANCE hInstance,
                         HINSTANCE hPrevInstance,
                         LPSTR     lpCmdLine,
                         int       nCmdShow)
    {
         // TODO: Place code here.
        MessageBox(NULL,"Win32测试MFC程序","测试",0);
        return 0;
    }
    */

     

    消息映射机制:
    1.必须使用类向导建立一个窗口类(CWin)的派生类
    2.必须建立派生类的对象,来接受客户界面返回的消息
    //在窗口派生类中,每个消息都与一个成员函数相对应
    3.消息映射函数,必须通过类向导(ClassWizard)建立

     

    Win32的消息处理机制:

    #include "stdafx.h"
    BOOL CALLBACK DialogProc(
      HWND hwndDlg,  // handle to dialog box
      UINT uMsg,     // message
      WPARAM wParam, // first message parameter
      LPARAM lParam  // second message parameter
    )
    {
        if(uMsg==WM_COMMAND)
        {
            if(LOWORD(wParam)==IDCANCEL)
            {
                EndDialog(hwndDlg,IDCANCEL);
                return TRUE;
            }
        }
        if(uMsg==WM_LBUTTONDOWN)
        {
            int x=LOWORD(lParam);
            int y=HIWORD(lParam);
            char ch[22];
            sprintf(ch,"(%3d,%3d)",x,y);
            //MessageBox(NULL,ch,"",MB_OK);
            SetWindowText(hwndDlg,ch);
        }
        if(uMsg==WM_MOUSEMOVE)
        {
            int x=LOWORD(lParam);
            int y=HIWORD(lParam);
            char ch[22];
            sprintf(ch,"(%3d,%3d)",x,y);
            //MessageBox(NULL,ch,"",MB_OK);
            SetWindowText(hwndDlg,ch);
        }
        return FALSE;
    
    }
    
    int APIENTRY WinMain(HINSTANCE hInstance,
                         HINSTANCE hPrevInstance,
                         LPSTR     lpCmdLine,
                         int       nCmdShow)
    {
         // TODO: Place code here.
        //MessageBox(NULL,"Win32测试MFC程序","测试",0);
        DialogBox(hInstance,(LPCSTR)IDD_DIALOG1,NULL,DialogProc);
        return 0;
    
    }

     MFC的消息处理机制

    //theApp:
    
    #include "stdafx.h"
    #include"MainDlg.h"
    class MyApp:public CWinApp
    {
        virtual BOOL InitInstance( )
        {
            //AfxMessageBox("cc",NULL,MB_OK);
            //CDialog *dlg=new CDialog(IDD_DIALOG1);
            //dlg->DoModal();
            MainDlg *dlg=new MainDlg();
            dlg->DoModal();
            return TRUE;
        }
    };
    MyApp theApp;
    //MainDlg派生类
    #include "stdafx.h"
    #include "MainDlg.h"
    
    #ifdef _DEBUG
    #define new DEBUG_NEW
    #undef THIS_FILE
    static char THIS_FILE[] = __FILE__;
    #endif
    
    /////
    // MainDlg dialog
    MainDlg::MainDlg(CWnd* pParent /*=NULL*/)
        : CDialog(MainDlg::IDD, pParent)
    {
        //{{AFX_DATA_INIT(MainDlg)
            // NOTE: the ClassWizard will add member initialization here
        //}}AFX_DATA_INIT
    }
    
    void MainDlg::DoDataExchange(CDataExchange* pDX)
    {
        CDialog::DoDataExchange(pDX);
        //{{AFX_DATA_MAP(MainDlg)
            // NOTE: the ClassWizard will add DDX and DDV calls here
        //}}AFX_DATA_MAP
    }
    
    BEGIN_MESSAGE_MAP(MainDlg, CDialog)
        //{{AFX_MSG_MAP(MainDlg)
        ON_WM_LBUTTONDOWN()
        ON_WM_MOUSEMOVE()
        ON_WM_RBUTTONDOWN()
        //}}AFX_MSG_MAP
    END_MESSAGE_MAP()
    
    /////
    // MainDlg message handlers
    BOOL MainDlg::OnInitDialog()
    {
        CDialog::OnInitDialog();
        //Title
        CDialog::SetWindowText("测试");
        //Icon
        HICON hicon=LoadIcon(AfxGetInstanceHandle(),(LPCSTR)IDI_ICON1);
        CDialog::SetIcon(hicon,TRUE);
        return TRUE;
    }
    void MainDlg::OnLButtonDown(UINT nFlags, CPoint point) 
    {
        // TODO: Add your message handler code here and/or call default
        
        CDialog::OnLButtonDown(nFlags, point);
        CString str;
        str.Format("(%d,%d)",point.x,point.y);
        if(MK_SHIFT&nFlags)
            str+="按下了Shift键";
        if(MK_CONTROL&nFlags)
            str+="按下了Ctrl键";
        if(MK_LBUTTON&nFlags)
            str+="按下了鼠标左键";
        if(MK_MBUTTON&nFlags)
            str+="按下了鼠标中键";
        if(MK_RBUTTON&nFlags)
            str+="按下了鼠标右键";
        AfxMessageBox(str);
        //CDialog::GetDlgItemText(IDC_TEXT_COORD,str);
    }
    void MainDlg::OnRButtonDown(UINT nFlags, CPoint point) 
    {
        // TODO: Add your message handler code here and/or call default
        
        CDialog::OnRButtonDown(nFlags, point);
        CDialog::OnLButtonDown(nFlags, point);
        CString str;
        str.Format("(%d,%d)",point.x,point.y);
        if(MK_SHIFT&nFlags)
            str+="按下了Shift键";
        if(MK_CONTROL&nFlags)
            str+="按下了Ctrl键";
        if(MK_LBUTTON&nFlags)
            str+="按下了鼠标左键";
        if(MK_MBUTTON&nFlags)
            str+="按下了鼠标中键";
        if(MK_RBUTTON&nFlags)
            str+="按下了鼠标右键";
        AfxMessageBox(str);
    }
    void MainDlg::OnMouseMove(UINT nFlags, CPoint point) 
    {
        // TODO: Add your message handler code here and/or call default
        
        CDialog::OnMouseMove(nFlags, point);
        CString str;
        str.Format("(%d,%d)",point.x,point.y);
        GetDlgItemText(IDC_TEXT_COORD,str);
    }

     

    转载于:https://www.cnblogs.com/mypsq/p/4900963.html

    更多相关内容
  • 针对大规模三维地形可视化远远超出了计算机硬件数据处理能力的问题,分析研究了分页动态加载策略以及Ogre实现原理.基于Ogre开发了对大地形的...将整套程序移植到了MFC框架下,后续可以方便地在此基础上做二次交互开发.
  • 针对大规模三维地形可视化远远超出了计算机硬件数据处理能力的问题,分析研究了分页动态加载策略以及Ogre实现原理.基于Ogre开发了对大地形的...将整套程序移植到了MFC框架下,后续可以方便地在此基础上做二次交互开发.
  • 1.MFC架构分析

    2019-09-29 19:31:08
    1.架构代码文件的结构 主要由四个部分组成 1.资源文件Resource.h:主要定义资源的ID 2.预编译文件:stdafx.h 可以用来解决头文件包含冲突的问题,定义一些需要全局性包含的文件。 3.应用程序类对应的文件:...

    1.架构代码文件的结构

    主要由四个部分组成

    1.资源文件Resource.h:主要定义资源的ID

    2.预编译文件:stdafx.h 可以用来解决头文件包含冲突的问题,定义一些需要全局性包含的文件。

    3.应用程序类对应的文件:项目名称是MFCApplication1对应的类名为MFCApplication1。

    4.视图

    应用程序类:MFC定义了一个应用程序基类CWinApp,所有基于MFC的应用程序都会继承该类。

     重点介绍InitInstance函数

    BOOL CMFCApplication1App::InitInstance()
    {
        // 如果一个运行在 Windows XP 上的应用程序清单指定要
        // 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式,
        //则需要 InitCommonControlsEx()。  否则,将无法创建窗口。
        INITCOMMONCONTROLSEX InitCtrls;
        InitCtrls.dwSize = sizeof(InitCtrls);
        // 将它设置为包括所有要在应用程序中使用的
        // 公共控件类。
        InitCtrls.dwICC = ICC_WIN95_CLASSES;
        InitCommonControlsEx(&InitCtrls);
    
        CWinAppEx::InitInstance();
    
    
        // 初始化 OLE 库
        if (!AfxOleInit())
        {
            AfxMessageBox(IDP_OLE_INIT_FAILED);
            return FALSE;
        }
    
        AfxEnableControlContainer();
    
        EnableTaskbarInteraction(FALSE);
    
        // 使用 RichEdit 控件需要 AfxInitRichEdit2()
        // AfxInitRichEdit2();
    
        // 标准初始化
        // 如果未使用这些功能并希望减小
        // 最终可执行文件的大小,则应移除下列
        // 不需要的特定初始化例程
        // 更改用于存储设置的注册表项
        // TODO: 应适当修改该字符串,
        // 例如修改为公司或组织名
        SetRegistryKey(_T("应用程序向导生成的本地应用程序"));
        LoadStdProfileSettings(4);  // 加载标准 INI 文件选项(包括 MRU)
    
    
        InitContextMenuManager();
    
        InitKeyboardManager();
    
        InitTooltipManager();
        CMFCToolTipInfo ttParams;
        ttParams.m_bVislManagerTheme = TRUE;
        theApp.GetTooltipManager()->SetTooltipParams(AFX_TOOLTIP_TYPE_ALL,
            RUNTIME_CLASS(CMFCToolTipCtrl), &ttParams);
    
        // 注册应用程序的文档模板。  文档模板
        // 将用作文档、框架窗口和视图之间的连接
        CSingleDocTemplate* pDocTemplate;
        pDocTemplate = new CSingleDocTemplate(
            IDR_MAINFRAME,
            RUNTIME_CLASS(CMFCApplication1Doc),
            RUNTIME_CLASS(CMainFrame),       // 主 SDI 框架窗口
            RUNTIME_CLASS(CMFCApplication1View));
        if (!pDocTemplate)
            return FALSE;
        AddDocTemplate(pDocTemplate);
    
    
        // 分析标准 shell 命令、DDE、打开文件操作的命令行
        CCommandLineInfo cmdInfo;
        ParseCommandLine(cmdInfo);
    
    
    
        // 调度在命令行中指定的命令。  如果
        // 用 /RegServer、/Register、/Unregserver 或 /Unregister 启动应用程序,则返回 FALSE。
        if (!ProcessShellCommand(cmdInfo))
            return FALSE;
    
        // 唯一的一个窗口已初始化,因此显示它并对其进行更新
        m_pMainWnd->ShowWindow(SW_SHOW);
        m_pMainWnd->UpdateWindow();
        return TRUE;
    }

    这个函数可以看作MFC程序的入口函数,main函数隐藏在这个函数中。在实际开发中一般

    不需要对这个类进操作,但如果需要在建立对话框之前处理一些数据或准备工作,那么可

    以把代码添加到这个函数中,在主对话框显示之前。

    有两个比较典型的应用:

    (1)启动界面之前弹出登录界面,需要正确输入用户名和密码才能进入主界面。

    (2)启动界面之前,弹出一个项目配置界面,例如操作员,项目名称等信息,同时,这些信息

    需要传递到主界面中。

    转载于:https://www.cnblogs.com/zuoyou151/p/9756444.html

    展开全文
  • C++写的股票行情软件,mfc架构。分为客户端、服务端、数据引擎三部分。代码加资源文件有1个多G,另外还有软件说明文档,指标公式等。 主要功能如下图 有兴趣的同学可以加QQ:3056913528交流探讨。。。...

    C++写的股票行情软件,mfc架构。分为客户端、服务端、数据引擎三部分。代码加资源文件有1个多G,另外还有软件说明文档,指标公式等。

    有兴趣的同学可以加QQ:2379624246交流探讨。。。
    这里写图片描述

    主要功能如下图
    这里写图片描述

    这里写图片描述

    展开全文
  • 使用MFC SOCKET编程开发了基于C/S架构的一个仿QQ聊天系统,客户端间可以互通消息,传输文件等。适合学习C++ Socket编程,文件传输,多线程,线程和进程间通信等,适用于课程设计或学期作业等环境
  • MFC深入浅出.rar,MFC深入浅出,dissecting MFC 2e part1.pdf,dissecting MFC 2e part4.pdf,dissecting MFC 2e part5.pdf,dissecting MFC 2e part2.pdf,dissecting MFC 2e part3.pdf
  • 流程图浅析MFC架构

    千次阅读 2013-06-06 00:02:56
    版面显示有限,看高清图可以在图片上单击右键->查看图像。

    版面显示有限,看高清图可以在图片上单击右键->查看图像。



    展开全文
  • MFC经典价架构

    2018-05-20 09:40:22
    自动化开发是经常需要一个线程实时扫描外部IO信号,创建一个线程专用于此,可以实时获取信号状态,并及时作出相应的处理,提示或响应。
  • MFC框架结构简述

    2021-12-09 20:23:43
    现在直接给出MFC程序执行顺序,但着重分析其运行机制和功能分析,其流程是“theApp全局对象定义->TestApp构造函数->WinMain函数”。在执行theApp对象的构造函数之前先执行CWinApp基类的构造函数,从而把我们...
  • 帮助我理解我MFC的工作原理,我刚学VC时,我们老师没有讲,就是让我们自学,我就从网上查了点资料,这份是从结构上讲解的,帮助我理解的更深了。希望对你也有帮助
  • 【交互】MFC架构分析

    2013-10-20 09:54:45
    MFC是在检索的时候,它会返回一个const AFX_MSGMAP_ENTRY* lpEntry的数据,然后再通过_AfxDispatchCmdMsg(this, nID, nCode,lpEntry->pfn, pExtra, lpEntry->nSig, pHandlerInfo);   这时传了一个this指针。  3...
  • MFC
  • MFC框架结构的分析

    2022-03-16 17:16:20
    1.框架代码文件的结构 主要有4个部分组成: 1) 资源文件Resource.h:主要是定义资源的ID。 2) 预编译文件:可以用来解决头文件包含冲突的问题,定义一些需要全局性包含的文件。...MFC定义了一个应用程序基类CWinA...
  • NTservice_mfcdlg.rar,NTservice_mfcdlg,StdAfx.h,T01.dsp,T01.h,stopping.ico,T01.cpp,Resource.h,T01.clw,T01.APS,SERVICE.CPP,T01.rc,StdAfx.cpp,T01.dsw,T01Dlg.cpp,T01.ico,T01.rc2,T01Dlg.h
  • MFC架构

    2014-03-19 11:20:48
  • 深入浅出MFC文档/视图架构之文档模板 5、 CDocManager::OpenDocumentFile(LPCTSTR lpszFileName)遍与OnOpenDocument()区别 6、 进入MFC讲坛的前沿(三) 7、 使用Win32 API实现MDI程序 8、 文档/视图结构...
  • 基于MFC的程序框架剖析 MFC库是开发Windows应用程序的C++接口。MFC提供了面向对象的框架,程序开发人员可以基于这一框架开发Windows应用程序。MFC采用面向对象设计,将大部分的Windows API封装到C++类中,以类成员...
  • MFC框架简介

    千次阅读 2020-02-01 18:20:11
    MFC框架简介 一、MFC框架 MFC库是开发Windows应用程序的C++接口。MFC提供了面向对象的框架,采用面向对象技术,将大部分的WindowsAPI封装到C++类中,以类成员函数的形式提供给程序开发人员调用。 CWnd类是MFC...
  • MFC架构之CWnd类

    2014-08-06 23:16:02
    http://control.blog.sina.com.cn/admin/article/article_add.php
  • MFC开发中使用的三层架构,使用codesmith制作的模板,封装成面向对象的
  • [MFC]用MFC架构创建窗口 [大三TJB_708]

    千次阅读 2013-03-03 20:17:52
    1.Win32与MFC Win32程序包含程序入口 WinMain(),在此函数中由“Win32窗口创建步骤”创建窗口,再由消息循环通过WndProc(窗口控制函数)来相应和控制窗口。 MFC程序封装了WinMain,可用MFC中CWinApp取代Win32中...
  • 图书馆管理信息系统:本系统采用C/S架构,运用单例模式,采用皮肤文件美化界面,集数据库、网络通信模块于一身(MFC实现)。 客户端提供本馆、局域网内其他各馆图书查询,读者可向服务器发送注册信息登陆,查看当前...
  • MFC基本框架结构

    万次阅读 多人点赞 2018-02-28 19:20:56
    本文将剖析基于MFC的框架程序,探讨MFC框架程序的内部组织结构,MFC是微软为了简化程序员的开发工作而设计的一套c++类集合,利用这些类有效地帮助程序员完成windows应用程序开发。代码结构我们利用VS2008 IDE...
  • MFC架构之CObject类

    千次阅读 2010-11-13 13:16:00
     CObject是大多数MFC类的根类或基类。CObject类有很多有用的特性:对运行时类信息的支持,对动态创建的支持,对串行化的支持,对象诊断输出,等等。MFC从CObject派生出许多类,具备其中的一个或者多个特性。...
  • 编程学习笔记之MFC内部组织架构

    千次阅读 2016-04-22 18:59:20
    MFC全称是Microsoft Foundayion Classes,意为微软基础类库,是一个C++的类库,里面封装了大量的windows API尤其是win32 API函数,因为我们在开发win32应用程序的时候,需要做很多重复的步骤,比如注册窗口类、初始...
  • MFC单文档视图架构

    2020-12-17 19:49:51
    其实所有的节日,都不是为了礼物和红包而生,而是提醒我们不要忘记爱与被爱,生活需要仪式感,而你需要的是在乎和关爱。。。 ---- 网易云热评 一、特点 只能管理一个文档 ...CWinApp / CFrameWnd / CView / ...
  • 下载地址 说明 IDE环境 vs 2019 运行环境 IMServer 启动服务 控制用户接入接出 IMClient 用户聊天 群聊 传输文件(采用udp传输) 开启软件 客户端加入服务器 客户端之间发送数据 客户端群发消息 ......
  • C++MFC实现股票行情显示

    热门讨论 2010-03-27 13:41:25
    主要用MFC编写的图形化界面,实现股票数据显示,以及绘制出柱状图,更可以修改,插入,删除股票数据,并保存。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 16,692
精华内容 6,676
关键字:

MFC架构