精华内容
下载资源
问答
  • mfc单文档添加控件
    2022-03-24 15:47:22

    MFC单文档静态添加控件基本方法@TOC

    MFC单文档静态添加控件基本方法

    本篇是基于MFC单文档,在继承于CView基类xxxView来添加控件的基本步骤。其区别于CFormView对话框可以直接对控件进行拖拽进行生成代码,我觉得这样的添加方法对于帮助自己了解mfc实现过程有很多的帮助

    写一个按钮

    1.在.h文件中的 类中声明CButton m_btn;
    2. 在.c文件中的 OnCreate函数中对按钮进行初始化,即

    m_btn.Create(TEXT("打开图片"), 
    	WS_CHILD | WS_VISIBLE | WS_BORDER,//按钮风格
    	CRect(40, 10, 200, 60),            //按钮大小位置
    	this,                          //按钮父指针
    	OPEN_BTN);                      //该按钮对应的ID号
    m_btn.ShowWindow(SW_SHOWNORMAL);
    

    3.在.h文件中 DECLARE_MESSAGE_MAP()下面对成员函数的声明

    afx_msg void OnClickOpenbtn();
    
    1. 在.c文件中 找到这个
    BEGIN_MESSAGE_MAP(CxxxView, CView)
      	ON_BN_CLICKED(OPEN_BTN, OnClickOpenbtn) //对函数进行定义(控件ID,函数名)
    END_MESSAGE_MAP
    

    这个步骤可以链接按钮的点击消息,我理解为类似于QT的信号槽机制

    5.在.c文件中对函数进行定义

    完成

    更多相关内容
  • 改工程创建了一个单文档窗口,窗口并添加Button控件,在单文档窗口实现单击鼠标左键,会弹出MessageBox,显示你鼠标点击的坐标,点击button,会出现带有是否选项的对话框,点击否会弹出新的MessageBox。当然这只是...
  • MFC单文档中创建控件

    2021-03-29 10:47:59
    MFC单文档中创建控件的步奏: 1.在xxView头文件中声明要添加控件类型,如按钮 CButton m_button; 2.xxView.cpp中通过宏的形式定义控件的ID,如#define IDB_BTN 130 3.在OnCreate函数中通过Create、ShowWindow...

    MFC单文档中创建控件的步奏:

    	1.在xxView头文件中声明要添加的控件类型,如按钮 CButton m_button;
    	2.xxView.cpp中通过宏的形式定义控件的ID,如#define IDB_BTN 130 
    	3.在OnCreate函数中通过Create、ShowWindow函数来在界面中创建控件
    

    例:

    1.CTestView.h中添加控件声明:

    public:
       CButton m_button;
       CStatic m_static;
    

    2.CTestView.cpp中添加宏定义:

    #define IDB_BTN 130
    #define IDB_STATIC_TIP 131
    

    3.添加OnCreate函数并重写:

     int CTestView::OnCreate(LPCREATESTRUCT lpCreateStruct)
    {
    	if (CView::OnCreate(lpCreateStruct) == -1)
    		return -1;
    
    	// TODO:  在此添加您专用的创建代码
    
    	//创建Button
    	CRect rect_button(40, 10, 200, 60); //描述控件位置以及大小的结构 左、顶、右、底
    	m_button.Create(_T("Show"), WS_CHILD | WS_VISIBLE | WS_BORDER, rect_button, this, IDB_BTN);
    	m_button.ShowWindow(SW_SHOWNORMAL);
    
    	//创建Static
    	CRect rect_static(250, 10, 550, 58);
    	m_static.Create(_T("F8打开窗体,Shit获取CTestDoc数据"), WS_CHILD | WS_VISIBLE | WS_BORDER, rect_static, this, IDB_STATIC_TIP);
    	m_static.ShowWindow(SW_SHOWNORMAL);
     
    	return 0;
    } 
    

    至此控件的添加已经完成,运行效果:
    在这里插入图片描述

    给按钮添加点击事件:

    1.在CTestView.cpp中的
    BEGIN_MESSAGE_MAP(CTestView, CView)
    和END_MESSAGE_MAP()之间添加处理函数

    	BEGIN_MESSAGE_MAP(CTestView, CView)
        xxx//其他默认代码
        xxx//其他默认代码
    	ON_BN_CLICKED(IDB_BTN, OnClickButton)  
    	
    END_MESSAGE_MAP()
    
    

    2.实现该处理函数OnClickButton 即可

    void CTestView::OnClickButton()
    {
    	MyDialog dlg;
    	dlg.DoModal(); 
    }
    

    在单文档view视图中画图

    这里通过键盘按钮的方式实现简单画图:

    添加键盘按下的函数OnKeyDown,并实现:

    
    void CTestView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
    { 
    	if (nChar == VK_F8)
    	{ 
    		CDC*pDC = GetDC();
    		if (pDC == nullptr) return;
    			 
    		CFont myfont, *oldFont;
    		LOGFONT font1;
    		memset(&font1, 0, sizeof(LOGFONT));  
    
    		font1.lfWidth = 25;
    		font1.lfHeight = 40;
    		font1.lfUnderline = false;//字体下划线
    		StrCpy(font1.lfFaceName, _T("黑体"));//设置字体
    		myfont.CreateFontIndirectW(&font1);  
    		oldFont = pDC->SelectObject(&myfont);//选择新字体
    		pDC->SetTextColor(RGB(0, 255, 300)); //设置字体颜色
    		pDC->SetBkMode(TRANSPARENT); //设置输出文字时的背景模式
    		pDC->TextOutW(200, 600, _T("用户按下了F8键")); 
    		pDC->SelectObject(oldFont);//选择回老字体
    		myfont.DeleteObject();//删除新字体
    		 
    		m_static.SetWindowTextW(_T("F8"));
    		MyDialog dlg;
    		dlg.DoModal();
    		m_static.SetWindowTextW(_T("F8打开窗体,Shit获取CTestDoc数据"));
    		Invalidate(TRUE);
    	}
    	else if (nChar == VK_SHIFT)
    	{ 
    		CTestDoc* pTestDoc = (CTestDoc*)GetDocument(); //单文档数据保存在DOC类中,通过该句来得到DOC类的指针以获取里面的数据
    
    		m_static.SetWindowTextW(_T("Shit"));
    		AfxMessageBox(pTestDoc->strTip);
    		m_static.SetWindowTextW(_T("F8打开窗体,Shit获取CTestDoc数据")); 
    	}
    
    	CView::OnKeyDown(nChar, nRepCnt, nFlags);
    }
    

    运行,按下F8,结果:
    在这里插入图片描述
    按下Shit,结果:
    在这里插入图片描述
    注意:
    其中有相关的 #include 包含语句记得添加,否则会报错

    END

    展开全文
  • mfc单文档添加按钮控件

    千次阅读 2020-11-09 17:01:37
    #define IDB_RESTART 328(在resource.h中添加) IDB_RESTAR是资源标识符的名字,328是自定义的资源ID,这个可以根据你自己想要的设定,只要不跟其他的资源冲突就行。 第二步:在View中添加消息CREATE,可以显示该...

    第一步:创建一个CButton变量,并为其定义一个资源标识符

    CButton restart;//在类中声明该变量
    #define IDB_RESTART  328//在resource.h中添加
    //IDB_RESTAR是资源标识符的名字,328是自定义的资源ID,这个可以根据你自己想要的设定,只要不跟其他的资源冲突就行。
    

    第二步:在View中添加消息CREATE,可以显示该按钮

    int CTestView::OnCreate(LPCREATESTRUCT lpCreateStruct)
    {
    	if (CView::OnCreate(lpCreateStruct) == -1)
    		return -1;
    	// TODO:  在此添加您专用的创建代码
    	CRect rect_button(850,100,950,130);   //控件左上角坐标和右下角坐标
    	restart.Create(L"重新开始", WS_CHILD | WS_VISIBLE | WS_BORDER, rect_button, this, IDB_RESTART);
        restart.ShowWindow(SW_SHOWNORMAL);
    	return 0;
    }
    

    在这里插入图片描述
    第三步:点击按钮,实现相应动作

    • 在View.cpp中添加:
      在这里插入图片描述
      BEGIN_MESSAGE_MAP是宏定义的一种,在BEGIN_MESSAGE_MAP()和END_MESSAGE_MAP()之间添加你的消息响应函数,为每个消息处理函数加入一个入口。
      每个消息映射入口的格式如下: ON_Notification(id, memberFxn) 其中id指定了发送通知的控件的子窗口的ID,而memberFxn指定了处理该通知的父对象中的成员函数名。

    • 然后再定义reStart函数实现想要实现的功能即可

    //记得先在类中声明
    void CTestView::reStart()
    {
    	AfxMessageBox(TEXT("本局尚未结束,确定重新开始?"));
    }
    
    • 结果如下:
      在这里插入图片描述

    想要实现多个按钮也很简单

    • 继续追加即可,注意一些地方
      在这里插入图片描述
    • 效果图如下:
      在这里插入图片描述
    展开全文
  • MFC单文档控件的使用【笔记】

    千次阅读 2018-05-04 12:00:04
    第一步:在资源中添加一个工具栏IDR_TOOLBAR1,并在框架类的头文件中定义CToolBar newToolBar; 第二步:在框架类的OnCreate函数中添加如下代码。 /* 创建一个自定义工具栏 */ if (!newToolBar.CreateEx(this, ...

    此处仅仅作为记录,是学习和工作的笔记。

    以下是创建自定义的工具栏的方法:

    第一步:在资源中添加一个工具栏IDR_TOOLBAR1,并在框架类的头文件中定义CToolBar    newToolBar;

    第二步:在框架类的OnCreate函数中添加如下代码。

    /* 创建一个自定义工具栏 */  
    	if (!newToolBar.CreateEx(this, TBSTYLE_FLAT,   
    		WS_CHILD|WS_VISIBLE|CBRS_TOP|CBRS_GRIPPER|CBRS_TOOLTIPS|CBRS_SIZE_DYNAMIC)  
    		|| !newToolBar.LoadToolBar(IDR_TOOLBAR1))  
    		//加载绑定一个工具栏资源  
    	{  
    		MessageBox(_T("Creat ToolBar Failed!"));  
    		return -1;  
    	}  

    注意:以下要添加的控件总体长度若比自定义的工具栏宽度大,则需要调整工具栏的宽度。否则无法显示其他的控件。

    以下是在单文档的自定义工具栏上创建的控件:

    //在自定义的工具栏上添加控件
    	m_staticWhiteLace.Create(_T("白边:"), WS_CHILD|WS_VISIBLE|SS_CENTER,
    		CRect(1,10,65,32), &newToolBar, ID_STATIC_WHITE_LACE);
    	m_staticWhiteLace.SetFont(&m_font, TRUE);
    	
    	m_editWhiteLace.Create(ES_MULTILINE | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_BORDER,
    		CRect(50, 10, 108, 32), &newToolBar, ID_EDIT_WHITE_LACE);
    	m_editWhiteLace.SetFont(&m_font, TRUE);
    	m_editWhiteLace.SetWindowText(_T("200.00"));
    
    	m_staticMoveValue.Create(_T("移动值:"), WS_CHILD|WS_VISIBLE|SS_CENTER,
    		CRect(110,10,170,32), &newToolBar, ID_STATIC_MOVE_VALUE);
    	m_staticMoveValue.SetFont(&m_font, TRUE);
    
    	m_editMoveValue.Create(ES_MULTILINE | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_BORDER,
    		CRect(160, 10, 200, 32), &newToolBar, ID_EDIT_MOVE_VALUE);
    	m_editMoveValue.SetFont(&m_font, TRUE);
    	m_editMoveValue.SetWindowText(_T("0"));
    
    	m_btnIncrease.Create(_T("+"), WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON, 
    		CRect(210,10,230,32), &newToolBar, ID_BUTTON_INCREASE);
    
    	m_editInAndDe.Create(ES_MULTILINE | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_BORDER,
    		CRect(240, 10, 280, 32), &newToolBar, ID_EDIT_INCREASE_AND_DECREASE);
    	m_editInAndDe.SetFont(&m_font, TRUE);
    	m_editInAndDe.SetWindowText(_T("0.00"));
    
    	m_btnDecrease.Create(_T("-"), WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON, 
    		CRect(290,10,310,32), &newToolBar, ID_BUTTON_DECREASE);
    
    	m_comboPrinSpeed.Create(
    		WS_CHILD|WS_VISIBLE|WS_VSCROLL|CBS_DROPDOWN,
    		CRect(320,10,400,80),  &newToolBar, ID_COMBOBOX_PRINT_SPEED);
    	m_comboPrinSpeed.SetFont(&m_font, TRUE);
    	m_comboPrinSpeed.InsertString(0, _T("低速打印"));
    	m_comboPrinSpeed.InsertString(1, _T("中速打印"));
    	m_comboPrinSpeed.InsertString(2, _T("高速打印"));
    	m_comboPrinSpeed.SetCurSel(1);
    
    	m_comboPrinDirt.Create(
    		WS_CHILD|WS_VISIBLE|WS_VSCROLL|CBS_DROPDOWN,
    		CRect(410,10,490,80),  &newToolBar, ID_COMBOBOX_PRINT_DIRT);
    	m_comboPrinDirt.SetFont(&m_font, TRUE);
    	m_comboPrinDirt.InsertString(0, _T("单向打印"));
    	m_comboPrinDirt.InsertString(1, _T("双向打印"));
    	m_comboPrinDirt.SetCurSel(0);
    
    	m_btnColorCheck.Create(_T("彩条"), WS_CHILD|WS_VISIBLE|BS_AUTOCHECKBOX, 
    	CRect(500,10,564,32), &newToolBar, 3);
    	m_btnColorCheck.SetFont(&m_font, TRUE);


    // TODO: 在此添加命令处理程序代码
    	int nCurSel = m_comboPrinSpeed.GetCurSel();
    	CString strWhiteLace;
    	int len = m_editWhiteLace.LineLength();
    	m_editWhiteLace.GetLine(0, strWhiteLace.GetBuffer(len), len);
    	strWhiteLace.ReleaseBuffer(len);
    	//如果想把编辑框的文本转化为int型,只需调用函数atoi,如下所示:
    	int num = _ttoi(strWhiteLace);
    
    	//获取下拉框打印速度的数据
    	CString	strPrintSpeed;
    	m_comboPrinSpeed.GetLBText(m_comboPrinSpeed.GetCurSel(),strPrintSpeed);
    	//获取下拉框打印方向的数据
    	CString strPrintDirt;
    	m_comboPrinDirt.GetLBText(m_comboPrinDirt.GetCurSel(),strPrintDirt);
    	//获取复选框的选中结果
    	int nCheck = 0;//0-表示未选中,1-表示选中
    	nCheck = m_btnColorCheck.GetCheck();
    	CString strCheck;
    	if (0 == nCheck)
    	{
    		strCheck = _T("未选中彩条");
    	}
    	else if (1 == nCheck)
    	{
    		strCheck = _T("已选中彩条");
    	}
    
    
    	MessageBox(strPrintSpeed + _T(" ") + strPrintDirt + _T(" ") + strWhiteLace + _T(" ") + strCheck);
    以下是运行效果:


    展开全文
  • 单文档切割窗口后,在切割后的窗口添加树型控件,根据左侧树形控件,调整右侧的视图,中间采用CSplitter静态切分
  • // 始终WS_CHILD 通常WS_VISIBLE 少见WS_DISABLED 对控件分组的WS_GROUP // 包含的WS_TABSTOP 编辑控件按tab键顺序 //m_myEdit_yingli.ShowWindow(SW_SHOWNORMAL);//有WS_VISIBLE属性就不用SHOWWINDOW函数了 3.在...
  • mfc中的CFormView类是用于表单视图的基类。 表单视图本质上是一个包含控件的视图。 这些控件基于对话框模板资源进行布局。...在单文档中加入对话框的步骤如下: 1. 在类向导中添加类,从CFormView类派生子类CC...
  • MFC为树形控件提供了CTreeCtrl类,它封装了树形控件的所有操作。 树形控件的创建也是有两种方式,一种是在对话框模板中直接拖入Tree Control控件创建,另一种就是通过CTreeCtrl类的Create成员函数创建。下面主要讲后...
  • 首先为单文档客户群开辟一个空间,可以在空间上添加控件。 1.自定义一个类这里起名时CDview,基类时CFormView,添加成功后资源视图中会出现IDD_DVIEW在这里面添加控件就可以了。 2.在CMainFrame头文件中声明...
  • 单文档mfc添加树形控件

    千次阅读 2013-09-18 21:30:42
    注意:因为某些原因(网上说是vs2010不再支持mfc中的某些控件,具体是什么我也不...因为单文档的框架不能直接加各种各样控件,这些控件必须要加在对话框中,然后再把对话框镶嵌在单文档mfc框架中。刚开始我没注意到
  • MFC官方文档.pdf

    2020-08-07 18:29:06
    从官方下载的MFC中文官方文档,一共6000多页。可以编辑。资料内容很多交流学习。可以省去找官方文档网站。而且查找方便,哈哈。
  • MFC单文档全屏布局

    2013-08-21 16:37:25
    代码比较混杂,用到的文件只有CTEst这个东西
  • MFC单文档添加控件和消息响应函数

    千次阅读 2012-06-16 16:42:48
    一、建立MFC单文档,定义View类的成员变量CButton m_button,在***View类中添加OnCreate 或OnInitialUpdate 函数,并在函数中加入  CRect rect_button(40,10,200,60); //控制按钮大小、位置  m_button.Create...
  • 故而本教程给初学者避雷,以单文档应用为示例,使用 Visual Studio的MFC应用 完成单文档应用的创建,并在此基础上新建对话框、菜单和工具栏等资源 基于MFC应用的Visual Studio教程一、考核题目要求二、步骤教程三、...
  • 主要为大家详细介绍了MFC实现对话框编辑控件上拖拽文件,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 从0开始创建一个MFC单文档工程

    千次阅读 2022-04-04 16:29:43
    MFC单文档快速入门教程 开发环境 win7+vs2019 如何创建一个新的MFC单文档项目 如何创建菜单添加点击事件 创建菜单我的->测试的菜单 修改测试的菜单ID为ID_MY_TEST如下 为菜单添加事件,选择菜->右键->...
  • 响应左侧树形控件双击消息,在右侧视图窗口中嵌入对话框,求大哥们帮忙,怎么嵌入求具体点的步骤,新手
  • 新建工程,下一步到最后一步的时候,选择基于CFormView,完成。 则可实现拖拽控件
  • MFC单文档嵌入对话框

    万次阅读 2015-08-26 14:43:22
    因为要实现一个在单文档中嵌入对话框的界面,自己愚钝,在网上查找了很多方法都不能实现,后来解决,现记录解决方法,防止后来使用遗忘; 1、添加一个对话框,将对话框的Style设置成Child; 2、添加一个关联该对话框...
  • MFC 单文档添加按钮控件

    千次阅读 2012-02-18 23:53:20
    单文档中如何添加按钮控件和消息响应函数?  一、建立MFC单文档,定义View类的成员变量CButton m_button,在***View类中添加OnCreate 或OnInitialUpdate 函数,并在函数中加入    CRect rect_button(40,...
  • 此工程实现了MFC窗口控件随窗口大小进行自适应,封装了WidgetResize类用来调整控件大小位置,非常好用。
  • 使用向导生成单文档应用程序框架03. 预留04. 附录 01. 解决方案与工程 每个应用程序都作为一个工程来处理,它包含了头文件、源文件和资源文件等,这些文件通过工程集中管理。在VS中,工程都是在解决方案管理之下的...
  • MFC 单文档视图中进行多种视图的切换 MFC 单文档视图中进行多种视图的切换
  • MFC单文档窗口添加按钮控件

    千次阅读 2016-06-20 11:22:40
    单文档添加按钮不能像对话框直接拖按钮,需要手动添加。 在MFC中的文档窗口中,所有的控件是需要动态创建也就是需要自己手动写代码去加的,在窗口的视图区创建一个按钮,我们需要完成如下步骤: 1....
  • MFC ActiveX控件的创建

    2021-09-22 15:30:08
    参考资料:MFC ActiveX (ocx)控件的开发_hk的博客-CSDN博客MFC ActiveX (ocx)开发https://blog.csdn.net/hkcsdn/article/details/52908748 1、编译失败的解决方案 VS报错:error MSB8011: Failed to register ...
  • ![图片说明](https://img-ask.csdn.net/upload/201507/20/1437372173_222609.jpg) 需要在右侧客户区添加一个嵌入式的对话框。.
  • mfc官方文档

    2021-10-05 15:02:14
    mfc文档

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,537
精华内容 5,814
关键字:

mfc单文档添加控件