孙鑫VC++深入详解:Lesson7 Part1---模态对话框,非模态对话框,静态文本控件的访问

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情

知识点:  在MFC中要对一个资源,就应该先为该资源创建一个关联的类,通过类的对象来操作该资源


//----创建模态对话框

CTestDlg dlg;
        dlg.DoModal();

//----创建非模态对话框
        CTestDlg *pDlg=new CTestDlg();
pDlg->Create(IDD_DIALOG1,this);
pDlg->ShowWindow(SW_SHOW);

//------静态文本控件的访问
(1)改变控件的ID
(2)Style中勾选Notify
(3)用Cwnd* GetDlgItem(int nID) const 函数获得指向控件的指针

(4)用GetWindowText(str),SetWindowText(str)函数.


//---

// TestDlg.cpp : implementation file
//

#include "stdafx.h"
#include "Mybole.h"
#include "TestDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CTestDlg dialog

//构造函数,用基类CDialog构造函数传入IDD,这个IDD就是IDD_DIALOG1,IDD在TestDlg.h中定义的.
CTestDlg::CTestDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CTestDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CTestDlg)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT

	m_bIsCreate = false;
}


void CTestDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CTestDlg)
		// NOTE: the ClassWizard will add DDX and DDV calls here
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CTestDlg, CDialog)
	//{{AFX_MSG_MAP(CTestDlg)
	ON_BN_CLICKED(ID_BTN_ADD, OnBtnAdd)
	ON_BN_CLICKED(IDC_NUMBER1, OnNumber1)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CTestDlg message handlers

void CTestDlg::OnBtnAdd() 
{
	// TODO: Add your control notification handler code here

//--- 创建按钮
/*
	static bool m_bIsCreate = false;
	if(m_bIsCreate==false)
	{
		m_btn.Create("微信",BS_DEFPUSHBUTTON|WS_VISIBLE|WS_CHILD,CRect(0,0,100,100),this,123);
		m_bIsCreate = true;

	}
	else
	{
		  m_btn.DestroyWindow();
		  m_bIsCreate = false;
	}
*/

//---利用m_btn对象中的成员m_hWnd来判断按钮是否创建.
	/*
	  if(m_btn.m_hWnd==NULL)
		  m_btn.Create("微信",BS_DEFPUSHBUTTON|WS_VISIBLE|WS_CHILD,CRect(0,0,100,100),this,123);	  
	   else  m_btn.DestroyWindow();
	   */

//------ 加法
	int num1,num2,num3;
	char ch1[10],ch2[10],ch3[10];
	GetDlgItem(IDC_EDIT1)->GetWindowText(ch1,10);
	GetDlgItem(IDC_EDIT2)->GetWindowText(ch2,10);

	num1 = atoi(ch1);
	num2  =atoi(ch2);
	num3 = num1+num2;
	itoa(num3,ch3,10);

	GetDlgItem(IDC_EDIT3)->SetWindowText(ch3);

	
}

// -----静态文本的访问
void CTestDlg::OnNumber1() 
{
	// TODO: Add your control notification handler code here
   CString str;
   if(GetDlgItem(IDC_NUMBER1)->GetWindowText(str),str="Number1:")
   {
	   GetDlgItem(IDC_NUMBER1)->SetWindowText("数值1:");
   }
   else
   {
		GetDlgItem(IDC_NUMBER1)->SetWindowText("Number1:");
   }
	
}


//---

//---

mfc编程 孙鑫_孙鑫MFC学习笔记7对话框编程(上) 1.DoModal创建模态对话框2.Create创建非模态对话框(需要用ShowWindow显示出来)模态对话框显示,程序会暂停,直到对话框关闭非模态对话框显示,程序继续执行3.对于模态对话框,点击确定/取消对话框被销毁,而对于模态对话框,只是被隐藏4.对于模态对话框,需要在自己的类中覆盖OnOK这个虚函数,在OnOK中调用DestroyWindow5.GetWindowText获取窗口文本6... 阅读详情

相关推荐

孙鑫VC++深入详解:Lesson6 Part4 ---CMenu 类的应用:添加子菜单项AppendMenu,插入子菜单项InsertMenu,删除菜单DeleteMenu

CMenu 类的应用 添加子菜单项AppendMenu,插入子菜单项InsertMenu,删除菜单DeleteMenu // //------ 追加菜单,在已菜单后面追加一个子菜单 用函数CMenu::AppendMenu  CMenu::AppendMenu  BOOL AppendMenu( UINT nFlags, UINT nIDNewItem = 0, LPCTSTR lps

-----------------------------不要在跟自己无关的事情上浪费时间 1万+

孙鑫VC++深入详解(6):对话框1

1对话框中的控件       基本控件:      常用控件: 2、对话框的创建和显示          对话框分为两种:模态对话框非模态对话框模态对话框指当其显示时,其它程序会暂停执行,即不能进行其它操作,直到关闭这个对话框非模态对话框则没有这个限制。          要创建一个对话框,需要先创建一个对话框资源:在“资源视图”中插入对话框资源,可以在其属性中设置其

milanleon的专栏 2116

孙鑫VC++深入详解:Lesson6 Part2 -- MFC菜单更新机制 用该机制实现 Enable or Disable MenuItem

MFC菜单命令更新机制---用该机制实现 Enable or Disable  MenuItem 方法: 1)用资源中的菜单项"剪切"的ClassWizard添加一个UPDATE_COMMAND_UI消息响应函数     void CMainFrame::OnUpdateEditCut(CCmdUI* pCmdUI)     同时发现MFC在MainFrm.cpp的消息映射代码处添加了

-----------------------------不要在跟自己无关的事情上浪费时间 5385

弹出对话框模态非模态

Windows应用程序有两种对话框模态

wwkaven的专栏 1781

孙鑫-MFC笔记五--对话框

对话框的创建 模态对话框 资源添加对话框,双击对话框创建对话框类。 在menu中增加对话框菜单项,将其设为popup的,并为其在view类下添加响应函数。View类中增加#include "TestDlg.h"。 在响应函数void CMyboleView::OnDialog()中: CTestDlg dlg;        dlg.DoModal();     模态对话框即程

工作笔记 9620

关于模式对话框模式对话框(Form.Show()&Form.ShowDialog())

winform模式对话框模式对话框 对于窗体的show和showdialog方法,大部人知道它们的区别,show是显示出窗体后,本项目中的其他窗体也能获得焦点,而showdialog则不然,只能当前窗体的激活状态。这只是一方面。 另一方面也是值得注意的,就是show出来的窗体,在单击关闭时,窗体就会被注销掉,不存在内存中,而showdialog呢,只是hide掉窗体,没有把窗体从内存只注销...

weixin_30723433的博客 305

11.2 非模态对话框

摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P413         在本章开始,我解释了对话框可以是“模态”或“非模态”的。到目前为止,我们一直在关注模态对话框,它是两种类型中较常见的。模态对话框(除了系统模态对话框外)允许用户在对话框和其他程序之间切换。但是,用户无法切换到同一程序的另一个窗口中,直到该模态对话框被销毁。非模态对话框则允许用户在对话框和窗

wilim 1028

QT----自定义对话框静态静态)、内置对话框(文件、颜色、文字、消息)

对话框 QT中内置了大量的对话框 供开发者使用 自定义对话框 模态对话框(窗口打开之后,只能关闭之后才能进行编辑) 阻塞式创建对话框 无法对其他对话框做操作 非模态对话框(窗口打开之后,还能进行其他编辑) 阻塞式 激活时可以对其他窗口做操作 模态对话框 创建方法1 QDialog diag(this); diag.resize(200,200); diag.exec();//防止一闪而过 创建方法2 QDialog diag(this); diag.setModal(true); di

qq_44423388的博客 2395

十、非模态对话框编程

1.   以进度条对话框为例:        a. 在对话框中加一个进度条,以及一个开始按钮;        b. 点击开始按钮后当进度达到百分之百时进度条满并推出对话框;   2.   在图形界面下设计进度条对话框:        a. 首先要设计一个可以喝用户交互的静态文本:             i.   其作用就是当进度条在走时能实时显示进度已显示了百分之几;

计算机 1053

MFC模态对话框非模态对话框

MFC中对话框有两种形式,一个是模态对话框(model dialog box),一个是非模态对话框(modeless dialog box)。 一、模态对话框(model dialog box) 在程序运行的过程中,若出现了模态对话框,那么主窗口将无法发送消

candyliuxj 8万+

MFC创建模态对话框非模态对话框的方法

在MFC中对话框有两种形式,一个是模态对话框(model dialog box),一个是非模态对话框(modeless dialog box)。本文对此分别简述其创建方法。一、模态对话框(model dialog box)在程序运行的过程中,若出现了模态对话框,那么主窗口将无法发送消息,直到模态对话框退出才可以发送。点击模态对话框中的OK按钮,模态对话框会被销毁。创建一个模态对话框的代码如下所示:...

qq_41786318的博客 8946

VC++模态对话框非模态对话框

MFC中有两种类型的对话框模态对话框非模态对话框。 模态对话框是指当其显示时,程序会暂停执行,直到关闭这个模态对话框后,才能继续执行程序中其他任务。非模态对话框是指当其显示时,允许转而执行程序中其他任务,而不用关闭这个对话框。 模态对话框的创建:创建模态对话框需要调用CDia

Ryan 的 Blog 3185

孙鑫VC++深入详解:Lesson6 Part3 ---创建右键弹出菜单 TrackPopupMenu

1  -----增加右键弹出菜单方法一:      Project-->Add to Project-->Components and Controls -->Visual C++ Components    -->Pop-up menu 注意要加到View类中,不要加到Frame类中,因为Frmae被View覆盖,收不到鼠标消息. 2  -----增加右键弹出菜单方法二: 模仿一,在鼠

-----------------------------不要在跟自己无关的事情上浪费时间 9976

孙鑫VC++深入详解:Lesson5 Part2 路径层 CDC::BeginPath,BeginPath

5. 路径层 CDC::BeginPath,BeginPath    如何在Device Context中建立了一个路径层:    1)即调用BeginPath()    2)再调用其他的GDI绘图函数参数一个区域,如Rectangle生成一个矩形区域    3)调用EndPath()  产生闭环的路径层(即一个绘图区域)             pDC->BeginPath();

-----------------------------不要在跟自己无关的事情上浪费时间 4887

孙鑫VC++深入详解:Lesson6 Part1 -- CheckMenuItem,子菜单项上添加位图,禁用子菜单项,删除整个菜单,和加载菜单

//--   1.    在菜单上加个子菜单TEST,然后在CMainFrame,CMenuApp,CMenuDoc,CMenuView这4个类中都添加响应WM_COMMAND命令消息的OnTest函数      测试表明     (1) 只会有一个OnTest能响应     (2)响应优先级 ,类的顺序是 CMenuView ---> CMenuDoc --->CMainFrame --

-----------------------------不要在跟自己无关的事情上浪费时间 4881
上一篇: 孙鑫VC++深入详解:Lesson6 Part6--- 电话本示例程序 动态添加子菜单 框架类窗口截获命令消息
下一篇: 孙鑫VC++深入详解:Lesson7 Part2---访问静态文本控件的七种方法
sergery
博客等级 码龄18年 113粉丝 136原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值