精华内容
下载资源
问答
  • MFC单文档动态显示文本

    热门讨论 2010-05-05 16:20:02
    MFC单文档动态显示文本,编辑添加菜单功能!
  • MFC单文档添加按钮控件、消息响应函数

    单文档中如何添加按钮控件和消息响应函数?

    通过以下三步即可完成

    一、创建动态控件

    两种方法:

    1、  在资源管理器视图中的Resource.h头文件中自定义


    如:#defineID_DemoButton  123456

    2、资源视图的String Table中定义


    在最下端双击新建


    二、定义并显示按钮

    在View类声明成员变量CButton demoButton,用向导类工具在C***View(***指工程名)中添加OnCreate 或OnInitialUpdate 函数



    在函数中加入按钮定义

           CRectrect_button(40,10,200,60);   //控制按钮大小、位置
           m_button.Create("Button1",WS_CHILD|WS_VISIBLE|WS_BORDER,rect_button,this, ID_DemoButton);
           m_button.ShowWindow(SW_SHOWNORMAL);

    注:Create方法的最后一个参数为第一步中定义的按键资源的名称

    这样按钮应该都可以显示出来了。

    附:

    不同种类的控件应创建不同的类对象,
    按钮控件 CButton (包括普通按钮、单选按钮和复选按钮)
    编辑控件 CEdit
    静态文本控件 CStatic
    标签控件 CTabCtrl
    旋转控件 CSpinButtonCtrl
    滑标控件 CSliderCtrl
    多信息编辑控件 CRichEditCtrl
    进度条控件 CProgressCtrl
    滚动条控件 CSrcollBar
    组合框控件 CComboBox
    列表框控件 CListBox
    图像列表控件 CImageCtrl
    树状控件 CTreeCtrl
    动画控件 CAnimateCtrl

    本例中我们创建一个CButton类的普通按钮。注意不能直接定义CButton对象,如:CButton m_MyBut;这种定义只能用来给静态控件定义控制变量,不能用于动态控件。

    正确做法是用new调用CButton构造函数生成一个实例:
    CButton *p_MyBut = new CButton();
    然后用CButton类的Create()函数创建,该函数原型如下:
    BOOL Create( LPCTSTR lpszCaption, DWORD dwStyle, const RECT& rect, CWnd*pParentWnd, UINT nID );
    lpszCaption是按钮上显示的文本;
    dwStyle
    指定按钮风格,可以是按钮风格与窗口风格的组合,取值有:
    窗口风格:
    WS_CHILD 子窗口,必须有
    WS_VISIBLE 
    窗口可见,一般都有
    WS_DISABLED 
    禁用窗口,创建初始状态为灰色不可用的按钮时使用
    WS_TABSTOP 可用Tab键选择
    WS_GROUP 
    成组,用于成组的单选按钮中的第一个按钮
    按钮风格:
    BS_PUSHBUTTON 下压式按钮,也即普通按钮
    BS_AUTORADIOBUTTON
    含自动选中状态的单选按钮
    BS_RADIOBUTTON 单选按钮,不常用
    BS_AUTOCHECKBOX
    含自动选中状态的复选按钮
    BS_CHECKBOX
    复选按钮,不常用
    BS_AUTO3STATE
    含自动选中状态的三态复选按钮
    BS_3STATE 三态复选按钮,不常用
    以上风格指定了创建的按钮类型,不能同时使用,但必须有其一。
    BS_BITMAP 按钮上将显示位图
    BS_DEFPUSHBUTTON
    设置为默认按钮,只用于下压式按钮,一个对话框中只能指定一个默认按钮
    rect指定按钮的大小和位置;
    pParentWnd
    指示拥有按钮的父窗口,不能为NULL
    nID指定与按钮关联的ID号,用上一步创建的ID号。
    不同控件类的Create()函数略有不同,可参考相关资料。

    例:p_MyBut->Create("动态按钮", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,CRect(20,10,80,40), this, IDC_MYBUTTON );
    这样,我们就在当前对话框中的(20,10)处创建了宽60,高30,按钮文字为动态按钮的下压式按钮。


    三、添加消息响应函数

    1、C***View头文件中MESSAGE_MAP中添加响应函数:afx_msg void OnBtnDown();

         C***View.cpp文件的BEGIN_MESSAGE_MAP和  END_MESSAGE_MAP 之间加入ON_BN_CLICKED(ID_DemoButton,OnBtnDown) 用来关联按钮和函数;

    2、加入按键响应函数的定义

    void C***View::OnBtnDown()
    {
             MessageBox("hello","helloworld",MB_OK);//按自己的功能需求写
    }

    除了按钮的响应函数外,你还可以用上面获得的指针访问按钮,如:
    修改按钮的大小和位置:p_MyBut[0]->MoveWindow(……);
    修改按钮文本:p_MyBut[0]->SetWindowText(……);
    显示/隐藏按钮:p_MyBut[0]->ShowWindow(……);

    展开全文
  • MFC单文档应用程序基础训练——文本输出、绘图等
  • MFC单文档

    2019-04-21 22:13:00
    一、创建并运行MFC单文档程序 1、创建单文档程序 这里使用的是VS2017。首先,打开VS2017,选择文件->新建->项目,然后选择Visual C++ -> MFC /ATL>MFC应用程序 ,如下图所示: 修改名称(或...

    一、创建并运行MFC单文档程序

    1、创建单文档程序

    这里使用的是VS2017。首先,打开VS2017,选择文件->新建->项目,然后选择Visual C++ -> MFC /ATL>MFC应用程序 ,如下图所示:

     

    修改名称(或默认),修改位置(或默认),点击确定。然后接下来可以看到如下界面:

     

    应用程序类型选择“单个文档”,其他设置默认,然后点击完成即可创建成功。

    2、运行单文档程序

    点击"本地Windows调试器"或者使用Ctrl+F5即可运行,得到视图窗口,如下图所示:

     

     

    二、工作区

    1、资源管理器

    可以看到屏幕右侧自带了资源管理器,用来管理各类代码。

    若没有或不慎关闭,可以从资源->解决方案资源管理器打开。

     

    2、资源视图

    资源视图,用于管理程序运行时的视图。

    可从视图 ->其他窗口 -> 资源视图,或者快捷键ctrl+shift+E打开。

     

    3、类视图

    类视图用于将视图对应的不同请求方式以类中的不同方法来区别定义。

    可从视图 -> 类视图,或者快捷键ctrl+shift+C打开。

     

    三、添加菜单及相应事件

    1、新建菜单

    打开资源视图,点击进入IDR_MAINFRAME,如下所示:

     

    然后在“帮助(H)”后面的空白框中(即箭头所指处)填入新建菜单的名字,然后点击其子菜单处的空白方框,同样写入新建子菜单的名字,如下所示:

     

     

    2、添加事件

    首先,修改子菜单的ID(默认亦可),单击子菜单,然后在菜单编辑器中修改其ID属性值,这里我将其改为ChildMenu。

     

    接下来,右键子菜单,选择添加事件处理程序,如下:

     

     

    然后在事件处理向导处选择消息类型为COMMAND,在类列表中选中C+”你的项目名称“+View(若你的项目名为Test则为CTestView),然后点击添加编辑,如下:

     

     

    然后会跳转到指定cpp文件中,并且自动生成函数名。

    现在来编写相应函数内容,我在里面写了一段代码,它的作用是弹出小窗口,同时显示出“1",如下:

     

    最后,运行程序,测试子菜单事件:

    在上图中可以看到,我们新增的菜单。

    点击子菜单:

     

    结果跟预想的一样,出现了一个小窗口,同时窗口中显示出”1“。

     

    四、添加弹出框

     

    1、创建弹出框

    在资源视图中,右键Dialog->添加资源,然后选择Dialog点击新建,即可创建成功。

     

     

    我们可以看到Dialog中多了一个对象,就是我们新建的弹出框。

     

    2、调用弹出框

    创建了弹出框,之后该如何调用它呢,或者说该怎么让它弹出来呢?

    1)添加跳出框类对象

    首先,修改弹出框ID(默认亦可),点击IDD_DIALOG1,在对话框节点中,修改其ID属性,我将其改为Test。

    然后右键弹出框,点击添加类:

     

     

    填入类名(注意类名不可与ID重复,不论是菜单ID或者是弹出框ID),我写的是TestDLG,点击确定即可:

     

    2)在菜单中调用弹出框

    点击进入资源视图->Menu->IDR_MAINFRAME中,找到之前创建的子菜单,右键子菜单->添加事件处理程序->CXXXView,点击编辑代码。

     

    接下来,给跳转后的cpp文件加上“TestDLG.h”头文件(头文件名字=你的弹出框类名.h):

     

    然后编辑子菜单事件对应的函数,在其中调用我们刚才创建的弹出框。

     

    然后运行程序,点击子菜单,即可看到我们刚才的弹出框被调用。

     

    3、给弹出框添加常用控件

    点击进入资源视图->Dialog->Test,找到刚才新建的弹出框,可以看到界面上有一个工具箱,若没有,可使用Crtl+Alt+x快捷键打开。

    1)Button控件

    按钮,将Button拖到弹出框上,可以通过修改Button的Caption属性,让Button上显示出不同的文字。

     

    双击按钮可以编辑按钮点击事件:

     

    2)Static Text

    静态文本,可以通过修改其Caption属性,令其显示不同的文字。

    3)Edit Control

    文本框,可用于输入文本内容。

    可通过GetDlgItemInt(文本框ID)获取文本框内的数字内容(Int类型)

    可通过GetDlgItem(文本框ID)->GetWindowText(CString类型变量)获取文本框的字符串内容(CString类型)

     

    介绍完后,我们可以利用这些控件实现一点简单的功能:通过点击按钮显示文本框中的内容。

    控件布局如下所示:

     

    编辑按钮响应事件,获取文本框中的字符串,并通过弹出小窗口的形式显示出来:

     

    运行程序,调出弹窗,并在文本框中写入内容,点击按钮,可以看到,文本框中内容通过小窗口显示了出来:

     

     

     

     

    转载于:https://www.cnblogs.com/fu3638/p/10747365.html

    展开全文
  • mfc中的CFormView类是用于表单视图的基类。 表单视图本质上是一个包含控件的视图。 这些控件基于对话框模板资源进行布局。...在单文档中加入对话框的步骤如下: 1. 在类向导中添加类,从CFormView类派生子类CC...

    mfc中的CFormView类是用于表单视图的基类。 表单视图本质上是一个包含控件的视图。 这些控件基于对话框模板资源进行布局。 如果您想在应用程序中使用表单,请使用CFormView。 

    所以可以派生CFormView的子类加入对话框,然后可以在对话框上加入按钮、静态文本框、Picture等控件功能。在单文档中加入对话框的步骤如下:

    1. 在类向导中添加类,从CFormView类派生子类CCDemoCtrlView,如下:

    2.在单文档的框架类中加入虚函数OnCreateClient,这个函数作用是在执行OnCreate期间,框架会调用此方法。添加如下:

    3.在MainFrame.cpp文件中,包含对应的3个头文件,如下:

    4. 为CMainFrame类重载OnCreateClient函数,(说明:拆分窗口需要重载此函数)

    到此,添加对话框成功,就可以在对话框添加自己控件了,添加对话框的结果如下: 

    展开全文
  • MFC 单文档视图中进行多种视图的切换 MFC 单文档视图中进行多种视图的切换
  • MFC单文档切换视图

    千次阅读 2017-06-28 15:30:00
    那么,如何在单文档应用程序中实现多视图呢?缺省情况下,派生类的构造函数是pretected类型的,必须将它改为public类型,因为我们将会动态生成派生视图类并切换活动的视图。也可以一次生成所有的视图,但是这样造成...
    在一些情况下,应用程序有许多信息要显示,当一个窗口内显示不下时,VC提供的MDI应用程序可以解决这个问题,但是如果应用程序只是对单个文档,采用多种方式显示,则采用SDI更合适。那么,如何在单文档应用程序中实现多视图呢?缺省情况下,派生类的构造函数是pretected类型的,必须将它改为public类型,因为我们将会动态生成派生视图类并切换活动的视图。也可以一次生成所有的视图,但是这样造成系统资源的极大浪费。
    

    1  首先利用资源编辑器新建4个对话框,在对话框中添加需要的控件,各个对话框的ID分别为IDD_MULTIVIEW_FORM,IDD_MULTIVIEW_FORM2,IDD_MULTIVIEW_FORM3,IDD_MULTIVIEW_FORM4

    2  为每一个对话框创建一个CFormView类的派生类,分别为:CView1,CView2,CView3,CView4

    3  在应用程序的初始化文件中用CView1替换原先的视图,这样程序启动后的缺省显示视图是CView1,修改后的部分代码如下:
    CSingleDocTemplate* pDocTemplate;
    pDocTemplate = new CSingleDocTemplate(
    IDR_MAINFRAME,
    RUNTIME_CLASS(CMultiViewDoc),
    RUNTIME_CLASS(CMainFrame),       // main SDI frame window
    RUNTIME_CLASS(CView1));
    AddDocTemplate(pDocTemplate);

    4  利用资源编辑器,添加几个菜单,并添加相应的消息处理函数:
    void CMainFrame::OnViewView1() 
    {
    SwitchToForm(IDD_MULTIVIEW_FORM);   
    }

    void CMainFrame::OnViewView2() 
    {
    SwitchToForm(IDD_MULTIVIEW_FORM2);   
    }

    void CMainFrame::OnViewView3() 
    {
    SwitchToForm(IDD_MULTIVIEW_FORM3);   
    }

    void CMainFrame::OnViewView4() 
    {
    SwitchToForm(IDD_MULTIVIEW_FORM4);   
    }

    在SDI中CFrame的派生类即CMainFrame控制着所有的视图,而且它允许用户通过消息处理进行视图的切换。进行视图切换的原理很简单,只是断开和旧视图的连接并把他删除,创建一个新视图,将文档和它相连,设置几个标志,然后显示新视图,SwitchToForm函数是进行视图切换的代码函数。

    void CMainFrame::SwitchToForm(int nForm)
    {
      //CDocument* pDoc = GetActiveDocument();
        CView *pOldActiveView=GetActiveView();             //保存旧视图
        CView *pNewActiveView=(CView*)GetDlgItem(nForm);   //取得新视图
        if(pNewActiveView==NULL)
        {
            switch(nForm)
                //这些ID是对话框的标志符,但也可以用其他的标志
            {
            case IDD_MULTIVIEW_FORM :
                pNewActiveView=(CView*)new CView1;
                break;
            case IDD_MULTIVIEW_FORM2 :
                pNewActiveView=(CView*)new CView2;
                break;
            case IDD_MULTIVIEW_FORM3 :
                pNewActiveView=(CView*)new CView3;
                break;
            case IDD_MULTIVIEW_FORM4 :
                pNewActiveView=(CView*)new CView4;
                break;
            }
            CCreateContext context;   //将文挡和视图相连
            context.m_pCurrentDoc=pOldActiveView->GetDocument();
    pNewActiveView->Create(NULL, NULL, WS_BORDER|WS_CHILD ,
                CFrameWnd::rectDefault, this, nForm, &context);


            pNewActiveView->OnInitialUpdate();
        }
        SetActiveView(pNewActiveView);        //改变活动的视图
        pNewActiveView->ShowWindow(SW_SHOW);  //显示新的视图
        pOldActiveView->ShowWindow(SW_HIDE);  //隐藏旧的视图

        if(pOldActiveView->GetRuntimeClass() ==RUNTIME_CLASS(CView1))
    pOldActiveView->SetDlgCtrlID(IDD_MULTIVIEW_FORM);

    else if(pOldActiveView->GetRuntimeClass() ==RUNTIME_CLASS(CView2))
    pOldActiveView->SetDlgCtrlID(IDD_MULTIVIEW_FORM2);

    else if(pOldActiveView->GetRuntimeClass() ==RUNTIME_CLASS(CView3))
    pOldActiveView->SetDlgCtrlID(IDD_MULTIVIEW_FORM3);

    else if(pOldActiveView->GetRuntimeClass() ==RUNTIME_CLASS(CView4))
    pOldActiveView->SetDlgCtrlID(IDD_MULTIVIEW_FORM4);

        pNewActiveView->SetDlgCtrlID(AFX_IDW_PANE_FIRST);
        
        

    delete pOldActiveView;   //删除旧视图

    RecalcLayout();          //调整框架窗口

    }

    以上为转载

    在测试过程中发现,想要进行视图动态切换,必须是view类,对话框类是不能动态切换的。

    展开全文
  • mfc单文档程序对添加CEdit控件并操作

    千次阅读 2015-08-22 20:54:34
    在XXXView.h中添加定义 CEdit m_edit_X; 在Resource.h文件中添加资源索引 #define IDB_EDIT_X 401 在XXXView.cpp 文件中的OnCreate()函数中添加如下创建控件代码 //创建显示坐标文本框 CRect rect...
  • 我按照《MFC Windows 应用程序设计》写了一个创建按钮控件的实例,首先是在资源头文件中...添加按钮类数据成员和WM_CREATE消息映射我都是用类向导添加的(MFC ClassWizard -> Messages -> WM_CREATE)。 但是响应点击
  • 以前做练习时,经常使用MFC基于对话框,今天使用基于单文档
  • VS2013MFC单文档- 为窗口添加启动页面

    千次阅读 2015-12-23 11:45:00
    在VC6.0下可以直接添加组件来添加程序启动画面,但是VS却不行,我们要自己添加类来制作启动画面。...VS下添加启动画面" title="MFC VS下添加启动画面" style="margin:0px; padding:0px; border:0px; list-
  • 新建好一个单文档工程,顶层菜单也在同时建好,在resource view中可以看到,顶层菜单的menu的ID为IDR_MAINFRAME,打开IDR_MAINFRAME,如图,怎么获取菜单下透明度中的子菜单项?(如:1.0,0.8...) 而且还存在另一...
  • 首先创建单文档应用程序,F5运行结果如下图 然后在类视图-CMainFrame中添加OnClose()消息响应;其次在CMainFrame.cpp文件中添加如下代码: void CMainFrame::OnClose() { //TODO:在此添加消息处理代码 if...
  • VS2019mfc单文档插入对话框以及简单通信 首先是建立一个单文档,建立单文档比较简单就不介绍了。 第一步插入对话框。 1.单击“资源视图”,选中“Dialog”,右键并选择“插入Dialog”。 2.插入对话框后修改对话框的...
  • 对比于网络上的MFC对话框显示图像处理的效果,按下控件就会有对话框的弹出,为此为了美观和方便,便制作了基于单文档调用opencv库的方式,并使图片处理效果一直悬浮在单文档的窗口中。 opencv库对于二维图像处理...
  • 今天看到之前老师写的一个单文档项目,看到可以在客户区依附滚动条。所以试了一下。 首先cu'aanch创建一个基于CScrollView类的MFC类。这里我们起名为CShowImage.下图代码是自动生成的。有网友说还要在构造函数声明...
  • MFC单文档打开文件

    2019-01-09 14:32:09
    文档:https://wenku.baidu.com/view/5ce8b21984868762cbaed526.html  在向导创建的应用程序中,程序的默认菜单有“文件”、“编辑”、“视图”和“帮助”。当运行程序后,打开“文件”菜单中的“打开”命令时,...
  • MFC单文档实现键盘按键的响应

    千次阅读 2014-10-27 07:50:36
    1.创建一个单文档MFC工程,使用class Wizard 在视图类中添加
  • 已经介绍了怎么创建mfc单文档的框架,这一篇就直接附上代码做一个记事本软件。 效果图: 因为单文档框架没有拖拽文本框的功能,所以我一开始是在打开文件的时候弹出一个对话框,在对话框里面放入文本框,把读取...
  • MFC显示文本文档

    千次阅读 2014-12-30 10:03:12
    新建基于对话框的MFC应用程序。资源视图的对话框上添加编辑框...目的将文本文档在编辑框中显示。图示如下: 添加“开始”按钮的响应函数: void CTest20Dlg::OnBnClickedButton1()//“打开”按钮响应函数 { //
  • 1. 文档——视结构   每个类的主要函数有:    void CAboutDlg::DoDataExchange(CDataExchange* pDX)  int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) // 创建窗体的工具栏,状态栏等  BOOL...
  • 控制了窗口的大小当拖动窗口缩小的添加的空间大小时,窗口不会再缩小了,实现了formview dialog对话框的布局,还有就是点击菜单项切换界面,
  • 游戏最终界面如图:题目要求参考VC++程序设计实验指导书,将上次编写的dos版双人俄罗斯方块改写成VC界面版。功能需求①实现双人俄罗斯方块 ...⑧添加游戏帮助菜单 ⑨实现砖块三维化 附加:实现双缓冲避免屏幕闪烁
  • VTK与MFC单文档程序联合编程

    千次阅读 2016-05-10 09:45:40
    兴趣需要,想做下VTK与MFC想结合的程序,MFC快要在桌面程序上面失去市场份额了,现在大多使用QT来做,但是本科的时候学的就是MFC,也相对来说比较熟悉,所以就想使用MFC来写一个简单的单文档程序。首先我们需要在...
  • 好久没有学windows编程了,今天计算机图形学作业用到了mfc,发现各种不适应。好了,不吐槽了,come on baby! 1. 首先新建当文档程序,并命名为Demo1,如图:一路next。。,注意点如图:2. 接下来添加菜单项操作过程...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,236
精华内容 3,294
关键字:

mfc单文档添加文本