mfc中弹出wpf对话框_CAA二次开发-创建对话框
步骤:
1.创建对话框框架
2.实现对话框中按钮的功能
1. 对话框框架搭建
框架搭建与第一节框架搭建一样,再次不再累述。针对对话框框架的搭建,在LocalInterfaces中,有CAADialogApplicationDlg.CATDlg文件。点击此文件会弹出工具条,用此工具条对对话框进行布局。效果图如下:
CAA二次开发-创建对话框
2.实现按钮功能
2.1Combo(年龄一栏)的初始化
在void CAADialogApplicationDlg::Build(){}中,添加如下代码
///对Combo进行初始化
CATUnicodeString ComboNum[30];//声明CATUnicodeString类型的数组(Combo容量)
for (int i = 0;i<30;i++)
{
//将int类型的数转换为CATUcicodeString类型
ComboNum[i].BuildFromNum(i+20,"%d");
//对Combo中的行设置数值
_ShowAge ->SetLine(ComboNum[i],i);
}
//设置默认行
_ShowAge->SetSelect(0);
2.2获取姓名功能实现
将鼠标放到获取姓名按钮,右键选择callback wizard…,弹出对话框,选择Button activation选项,点击Add callback…按钮,在CAADialogApplicationDlg.cpp文件中会自动添加void CAADialogApplicationDlg::OnGetNameButtonPushBActivateNotification(CATCommand* cmd, CATNotification* evt, CATCommandClientData data)
{
}方法,在此方法中添加如下代码:
void CAADialogApplicationDlg::OnGetNameButtonPushBActivateNotification(CATCommand* cmd, CATNotification* evt, CATCommandClientData data)
{
//定义一的字符串
CATUnicodeString NameText;
//获取StudentName中的字符串
NameText = _StudentNameEditor->GetText();
//判断editor是否为空,如果为空,弹出“请输入姓名:”的对话框
//如果不为空,弹出"你输入的姓名是:+姓名"的对话框
if(2==NameText.Compare(""))
{
_OpenNotify = new CATDlgNotify(this," ",CATDlgNfyWarning);
_OpenNotify -> SetText("请输入姓名:");
_OpenNotify ->SetVisibility(CATDlgShow);
}
else
{
_OpenNotify = new CATDlgNotify(this," ",CATDlgNfyInformation);
_OpenNotify -> SetText("你输入的姓名是:n"+NameText);
_OpenNotify ->SetVisibility(CATDlgShow);
}
}
2.3获取性别功能实现
将鼠标放到获取性别按钮,右键选择callback wizard…,弹出对话框,选择Button activation选项,点击Add callback…按钮,在CAADialogApplicationDlg.cpp文件中会自动添加void CAADialogApplicationDlg::OnGetGenderPushBActivateNotification(CATCommand* cmd, CATNotification* evt, CATCommandClientData data)
{ }在其中添加代码如下:
void CAADialogApplicationDlg::OnGetGenderPushBActivateNotification(CATCommand* cmd, CATNotification* evt, CATCommandClientData data)
{
//判断是否选中状态,如果都没被选中,弹出”请选择性别对话框“
if (_ManRadioButton->GetState()!=CATDlgCheck && _WomanRadioButton->GetState()!=CATDlgCheck)
{
_OpenNotify = new CATDlgNotify(this," ",CATDlgNfyWarning);
_OpenNotify -> SetText("请选择性别");
_OpenNotify ->SetVisibility(CATDlgShow);
}
运行结果:
//如果”男“被选中弹出”你选择的性别是:男“
else if(_ManRadioButton->GetState()==CATDlgCheck)
{
_OpenNotify = new CATDlgNotify(this," ",CATDlgNfyOK);
_OpenNotify -> SetText("你选择的性别是:男");
_OpenNotify ->SetVisibility(CATDlgShow);
}
运行结果:
//如果“女”被选中,弹出你选择的性别是:女
else
{
_OpenNotify = new CATDlgNotify(this," ",CATDlgNfyOK);
_OpenNotify -> SetText("你选择的性别是:女");
_OpenNotify ->SetVisibility(CATDlgShow);
}
}
运行结果:
2.4显示学科功能实现
将鼠标放到显示学科按钮,右键选择callback wizard…,弹出对话框,选择Button activation选项,点击Add callback…按钮,在CAADialogApplicationDlg.cpp文件中会自动添加
void CAADialogApplicationDlg::OnGetProjectPushBActivateNotification(CATCommand* cmd, CATNotification* evt, CATCommandClientData data){},在其中添加代码如下:
void CAADialogApplicationDlg::OnGetProjectPushBActivateNotification(CATCommand* cmd, CATNotification* evt, CATCommandClientData data)
{
//声明一个CATUnicodeStrng类型的数组
CATUnicodeString iText[3];
//判断多选按钮是否都没选中,如果是弹出“请选择学科”的对话框,否则就显示“你选择的科目是:+所选学科”
if (_YUWEN->GetState()!=CATDlgCheck && _English->GetState()!=CATDlgCheck && _Math->GetState()!=CATDlgCheck)
{
_OpenNotify = new CATDlgNotify(this," ",CATDlgNfyError);
_OpenNotify ->SetText("请选择学科");
_OpenNotify ->SetVisibility(CATDlgShow);
}
运行结果:
else
{
int i = 0;
if (_YUWEN->GetState()==CATDlgCheck)
{
iText[i++] = _Label059->GetTitle();
}
if (_English->GetState()==CATDlgCheck)
{
iText[i++] = _Label060->GetTitle();
}
if (_Math->GetState()==CATDlgCheck)
{
iText[i++] = _Label061->GetTitle();
}
_OpenNotify = new CATDlgNotify(this," ",CATDlgNfyWarning);
_OpenNotify ->SetText("你选择的科目是:n"+ iText[0]+","+ iText[1]+","+ iText[2]);
_OpenNotify->SetVisibility(CATDlgShow);
}
}
2.5获取年龄功能实现
将鼠标放到获取年龄按钮,右键选择callback wizard…,弹出对话框,选择Button activation选项,点击Add callback…按钮,在CAADialogApplicationDlg.cpp文件中会自动添加
void CAADialogApplicationDlg::OnGetAgePushBActivateNotification(CATCommand* cmd, CATNotification* evt, CATCommandClientData data){},在其中添加的代码如下:
void CAADialogApplicationDlg::OnGetAgePushBActivateNotification(CATCommand* cmd, CATNotification* evt, CATCommandClientData data)
{
CATUnicodeString iText;//声明所选择Combo行的内容;
int LineNumber=_ShowAge->GetSelect();//获取所选行的行号
_ShowAge ->GetLine(iText,LineNumber);//获取所选行的内容
_OpenNotify = new CATDlgNotify(this," ",CATDlgNfyOK);//弹出信息对话框
_OpenNotify->SetText("年龄为:"+iText);//对话框显示的内容
_OpenNotify ->SetVisibility(CATDlgShow);//显示对话框
}
2.6满意程度功能实现
将鼠标放到满意程度按钮,右键选择callback wizard…,弹出对话框,选择Button activation选项,点击Add callback…按钮,在CAADialogApplicationDlg.cpp文件中会自动添加
void CAADialogApplicationDlg::OnGetStatificationPushBActivateNotification(CATCommand* cmd, CATNotification* evt, CATCommandClientData data){},在其中添加代码如下:
void CAADialogApplicationDlg::OnGetStatificationPushBActivateNotification(CATCommand* cmd, CATNotification* evt, CATCommandClientData data)
{
// 获取当前值,如果值为,弹出“请选择学习年限”对话框,
//如果值小于,大于零,弹出“特别幸福”对话框
//如果值大于.弹出“不幸福”对话框
//否则弹出“一般幸福”对话框
int i = _ShowStudyAge->GetCurrentValue();
if(i==0)
{
_OpenNotify = new CATDlgNotify(this," ",CATDlgNfyOK);
_OpenNotify -> SetText("请选择学习年限");
_OpenNotify ->SetVisibility(CATDlgShow);
}
else if(i<3 && i >0)
{
_OpenNotify = new CATDlgNotify(this," ",CATDlgNfyOK);
_OpenNotify -> SetText("特别幸福");
_OpenNotify ->SetVisibility(CATDlgShow);
}
else if( i > 6)
{
_OpenNotify = new CATDlgNotify(this," ",CATDlgNfyOK);
_OpenNotify -> SetText("不幸福");
_OpenNotify ->SetVisibility(CATDlgShow);
}
else
{
_OpenNotify = new CATDlgNotify(this," ",CATDlgNfyOK);
_OpenNotify -> SetText("一般幸福");
_OpenNotify ->SetVisibility(CATDlgShow);
}
}
2.7添加信息功能实现
将鼠标放到添加信息按钮,右键选择callback wizard…,弹出对话框,选择Button activation选项,点击Add callback…按钮,在CAADialogApplicationDlg.cpp文件中会自动添加
void CAADialogApplicationDlg::OnAddInfoPushBActivateNotification(CATCommand* cmd, CATNotification* evt, CATCommandClientData data){},在其中添加的代码如下:
void CAADialogApplicationDlg::OnAddInfoPushBActivateNotification(CATCommand* cmd, CATNotification* evt, CATCommandClientData data)
{
int CHECK = 0,CHECK2 = 0;
CATUnicodeString oCellContents[25];
//判断所有信息是否完整
if (_StudentNameEditor->GetText()=="")
{
CHECK=1;
}
if (_ManRadioButton->GetState()==CATDlgUncheck && _WomanRadioButton->GetState()==CATDlgUncheck)
{
CHECK=1;
}
if (_YUWEN->GetState()==CATDlgUncheck && _English->GetState()==CATDlgUncheck && _Math->GetState()==CATDlgUncheck)
{
CHECK=1;
}
if (_ShowStudyAge->GetCurrentValue()==0)
{
CHECK=1;
}
//判断是否重名
for(int i=0;i<_MultiList->GetLineCount();i++)
{
_MultiList->GetColumnItem(0, oCellContents[i],i);
if(oCellContents[i]==_StudentNameEditor->GetText())
CHECK2=1;
}
if(CHECK==1)
{
_OpenNotify = new CATDlgNotify(this," ",CATDlgNfyWarning);
_OpenNotify -> SetText("请完善信息");
_OpenNotify ->SetVisibility(CATDlgShow);
}
else if (CHECK2==1)
{
_OpenNotify = new CATDlgNotify(this," ",CATDlgNfyWarning);
_OpenNotify -> SetText("重名");
_OpenNotify ->SetVisibility(CATDlgShow);
}
else
{
int ColumentNum = _MultiList->GetColumnCount();
CATUnicodeString ColumentContext[4];
ColumentContext[0] = _StudentNameEditor->GetText();
if (_ManRadioButton->GetState()==CATDlgCheck)
{
ColumentContext[1] ="男";
}
else if (_WomanRadioButton->GetState()==CATDlgCheck)
{
ColumentContext[1] = "女";
}
CATUnicodeString iText;
if (_YUWEN->GetState()==CATDlgCheck)
{
iText = _Label059->GetTitle();
}
if (_English->GetState()==CATDlgCheck)
{
iText+= _Label060->GetTitle();
}
if (_Math->GetState()==CATDlgCheck)
{
iText+= _Label061->GetTitle();
}
ColumentContext[2]= iText;
CATUnicodeString AgeText;
int LineNumber=_ShowAge->GetSelect();
_ShowAge ->GetLine(AgeText,LineNumber);
ColumentContext[3] = AgeText;
_MultiList-> SetColumnItems(0,&ColumentContext[0],1,-1,CATDlgDataAdd);
_MultiList-> SetColumnItems(1,&ColumentContext[1],1,-1,CATDlgDataAdd);
_MultiList-> SetColumnItems(2,&ColumentContext[2],1,-1,CATDlgDataAdd);
_MultiList-> SetColumnItems(3,&ColumentContext[3],1,-1,CATDlgDataAdd);
_DeleteInfo->SetSensitivity(CATDlgEnable);
}
}
运行结果:
2.8删除信息
将鼠标放到删除信息按钮,右键选择callback wizard…,弹出对话框,选择Button activation选项,点击Add callback…按钮,在CAADialogApplicationDlg.cpp文件中会自动添加
void CAADialogApplicationDlg::OnDeleteInfoPushBActivateNotification(CATCommand* cmd, CATNotification* evt, CATCommandClientData data){},在其中添加代码如下:
void CAADialogApplicationDlg::OnDeleteInfoPushBActivateNotification(CATCommand* cmd, CATNotification* evt, CATCommandClientData data)
{
CATBool IsSelectBool;
int RowNumber = 0;
for (int i = 0;i<_MultiList->GetLineCount();i++)
{
IsSelectBool = _MultiList->IsSelect(i);
if (IsSelectBool==TRUE) RowNumber = i;
}
_MultiList->ClearLine(RowNumber);
if (_MultiList->GetLineCount()==0)
{
_DeleteInfo->SetSensitivity(CATDlgDisable);
}
}
2.9列表相应事件
将鼠标放到列表中,右键选择callback wizard…,弹出对话框,选择Selection in list选项,点击Add callback…按钮,在CAADialogApplicationDlg.cpp文件中会自动添加
void CAADialogApplicationDlg::OnMultiListListSelectNotification(CATCommand* cmd, CATNotification* evt, CATCommandClientData data),在其中添加代码如下:
void CAADialogApplicationDlg::OnMultiListListSelectNotification(CATCommand* cmd, CATNotification* evt, CATCommandClientData data)
{
int selectLine[1];
int selectNum = _MultiList ->GetSelect(selectLine,1);
CATUnicodeString name,gender,age,subject;
_MultiList ->GetColumnItem(0,name,selectLine[0]);
_MultiList ->GetColumnItem(1,gender,selectLine[0]);
_MultiList ->GetColumnItem(2,subject,selectLine[0]);
_MultiList ->GetColumnItem(3,age,selectLine[0]);
_StudentNameEditor->SetText(name);
if (gender=="男")
{
_ManRadioButton->SetState(CATDlgCheck);
_WomanRadioButton->SetState(CATDlgUncheck);
}
if (gender=="女")
{
_ManRadioButton->SetState(CATDlgUncheck);
_WomanRadioButton->SetState(CATDlgCheck);
}
int ageNum;
age.ConvertToNum(&ageNum,"%d");
_ShowAge ->SetSelect(ageNum-20);
if (-1==subject.SearchSubString("语文"))
{
_YUWEN->SetState(CATDlgUncheck);
}
else
{
_YUWEN->SetState(CATDlgCheck);
}
if (-1==subject.SearchSubString("英语"))
{
_English->SetState(CATDlgUncheck);
}
else
{
_English->SetState(CATDlgCheck);
}
if (-1==subject.SearchSubString("数学"))
{
_Math->SetState(CATDlgUncheck);
}
else
{
_Math->SetState(CATDlgCheck);
}
}
当鼠标选中列表,相应信息被选中。
2.10窗口关闭实现
将鼠标移到框架空白处,右键选择callback wizard…,弹出对话框,选择Window closing选项,点击Add callback…按钮,在CAADialogApplicationDlg.cpp文件中会自动添加
Void CAADialogApplicationDlg::OnCAADialogApplicationDlgWindCloseNotification(CATCommand* cmd, CATNotification* evt, CATCommandClientData data){},在其中添加代码如下:
void CAADialogApplicationDlg::OnCAADialogApplicationDlgWindCloseNotification(CATCommand* cmd, CATNotification* evt, CATCommandClientData data)
{
this -> SetVisibility(CATDlgHide);
this -> RequestDelayedDestruction();
}
运行结果(点击关闭按钮,对话框消失):
后期会在微信公众号发一些有关CATIA软件开发所用到的编程教程(例如C++,MFC,VB等等)需要的小伙伴关注微信公众号:
mfc中弹出wpf对话框_CAA二次开发-创建对话框相关推荐
- c# cad 二次开发 类库 对话框 将frame界面添加到类库中
c# cad 二次开发 类库 对话框 将frame界面添加到类库中 using System; using System.Collections.Generic; using System.Compo ...
- c++ Arx二次开发创建椭圆和样条曲线
一.本节课程 c++ Arx二次开发创建椭圆和样条曲线 二.本节要讲解的知识点 1.如何应用C++ ARX二次开发创建椭圆(对AcDbEllipse类的构造函数的直接封装和根据外接矩形来创建椭圆) 2 ...
- NX/UG二次开发创建曲面偏置体
NX/UG二次开发--创建曲面偏置体 创建曲面偏置体 1.曲面偏置 创建曲面偏置体 这里介绍了一种对模型曲面进行偏置来获得偏置体的方法. 1.曲面偏置 void OffsetFace(tag_t fa ...
- NX二次开发-创建图纸尺寸表达式抑制UF_DRF_add_controlling_exp
NX二次开发-创建图纸尺寸表达式抑制UF_DRF_add_controlling_exp #include <uf.h> #include <uf_modl.h> #inclu ...
- UG二次开发 创建圆弧 UF_CURVE_create_arc
文章作者:里海 来源网站:https://blog.csdn.net/WangPaiFeiXingYuan 简介: UG二次开发 创建圆弧 UF_CURVE_create_arc 代码: //圆心 d ...
- NX二次开发 创建坐标系 UF_CSYS_create_csys()
简介: NX二次开发 创建坐标系 UF_CSYS_create_csys(). 代码: #include "me.hpp"extern DllExport void ufusr(c ...
- UG\NX二次开发 创建并报告所有装配部件的文本UDO
文章作者:里海 来源网站:https://blog.csdn.net/WangPaiFeiXingYuan 简介: UG\NX二次开发 创建并报告所有装配部件的文本UDO 效果: 代码: #inclu ...
- C++ ARX二次开发-创建三维实体
二.本节课程 C++ ARX二次开发-创建三维实体 二.本节要讲解的知识点 1.arx提供的三类创建三维实体的方法:创建标准形状的实体.拉伸面域创建实体.旋转面域创建实体的例子. 2.布尔运算的使用例 ...
- UG\NX二次开发 创建等参数曲线 UF_MODL_create_isocurve
文章作者:里海 来源网站:https://blog.csdn.net/WangPaiFeiXingYuan 简介: UG\NX二次开发 创建等参数曲线 UF_MODL_create_isocurve. ...
最新文章
- 【神经网络】(15) Xception 代码复现,网络解析,附Tensorflow完整代码
- (一)Linux基本知识
- byte数组转字符串_leetcode刷题844比较含退格的字符串(带代码解析,带知识点回顾)...
- 使用shell脚本监控共享池内存碎片
- 南京工业大学浦江学院计算机学院,招生季 叮~让你爱上南京工业大学浦江学院的若干个理由...
- Ta Muid(Dreams 梦幻)
- gm220s路由器怎么设置_巴法诺无线路由器连接打印机怎么设置【图文教程】
- poj 3321 Apple Tree 树状数组
- 01数据结构——绪论
- Unity+罗技G29方向盘+Realistic Car Controller 制作简单的模拟驾驶
- js验证开始时间和结束时间 结束时间不能比开始时间早
- [Nowcoder] [牛客网NOIP赛前集训TG4A] 动态点分治 [模拟]
- 多线程(18) pthread_cond_broadcast
- C语言实现简单卡尔曼滤波
- Unable to preventDefault inside passive event listener due to target being treated as passive.
- EasyExcel与EasyPoi性能对比
- 服务机器人未来发展趋势是什么,目前哪些领域表现最好?
- 基于steam的游戏销量预测 — PART 1 — 爬取steam游戏相关数据的爬虫
- 360加固之libjiagu.so dump修复
- 零中频接收机频率转换图_初探“光通信”光接收机
热门文章
- python sql数据库管理系统_【基础】练习册42-Python3_带数据库的学生管理系统
- 路由重定向redirect的基本使用
- 在计算机中 无符号书最常用于表示,微型计算机原理及应用试题库(无答案)
- java minor gc 停时,java Minor GC、 Full GC之间的区别
- 126邮箱登录定位email元素报错
- 未转变者服务器可作弊,unturned单人作弊指令
- hamachi联机_Unturned hamachi联机教程
- AlphaGo:黑色方碑?
- php8预加载,如何利用预加载优化Laravel Model查询详解
- 基于STM32设计的老人防摔倒报警设备(OneNet)