目录:D:\Cpp\Examples\学习C++的每一天\第7天10.28\Calculator
实现功能:
编写了一个简单的图形界面,以实现打开计算器、打开记事本、打开画图以及查看本机DNS地址四项功能。
step1:添加BUTTON控件,修改ID为相应的功能名字,比如IDC_calculate;IDC_note;……
step2:双击控件,跳转到函数界面,添加以下程序
void CCalculatorDlg::OnBnClickedcal()
{
// TODO: 在此添加控件通知处理程序代码
HINSTANCE hRslt = ShellExecute(NULL, _T("open"),
_T("calc.exe"), NULL, NULL, SW_SHOWNORMAL);
assert(hRslt > (HINSTANCE)HINSTANCE_ERROR);
}
这个打开的是微软内置的应用,其他记事本,ip地址,只需改动之间行代码即可。
_T("notepad.exe"),NULL,NULL,SW_SHOWNORMAL);//打开记事本
_T("Nslookup.exe"),NULL,NULL,SW_SHOWNORMAL);//查看IP地址
_T("mspaint.exe"),NULL,NULL,SW_SHOWNORMAL);//打开画图工具
step3:在 .cpp 文件的最上方 添加 头文件 方便调用打开计算器的程序。
#include <assert.h>
注意:
- 控件ID地址修改后,对应的函数也会重新成成,原来的函数已经没有了定义。
控件添加后,就会自己添加函数的定义,分别在
① 在对话框的如下部分定义: OnBnClickedButton1
BEGIN_MESSAGE_MAP(CCalculatorDlg, CDialogEx)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_BUTTON1, &CCalculatorDlg::OnBnClickedButton1)
END_MESSAGE_MAP()
② 在 .cpp 文件的最下面自动生成一个函数
void CCalculatorDlg::OnBnClickedButton1()
{
}
- 如果修改了控件的ID,但是没有新建生成对应的映射函数,原来对应的函数还是生效的;
比如:打开记事本的控件,原来ID是Button2,双击对应的函数是OnBnClickedButton2() ,程序调试无误,正确打开记事本;
现在修改 ID 为 IDC_note, 不双击生成新的函数,重新调试编译,这时候执行的函数是Button2(),测试修改程序内容为 打开画图,结果打开的就是画图,可说明:哪怕修改了控件ID,只要不双击生成新的映射函数,就不能正确执行想要 的结果;
对新的ID双击生成新的函数,但是如果不删除原来的定义,程序会报错,说Button2没有定义;这时候必须要删除前 面的定义,后面的函数不删除也没关系,但是最好还是删除比较好。