一、关于MFC函数调用的问题。
1、要理解继承的意思。 CTestDlg 类继承于 CWnd 类,因此CTestDlg 类拥有了CWnd 类的一些数据和函数,这些数据和函数已经归 CTestDlg 类所有。一般说来,父类和子类的数据和函数是分开的,并不共享。
2、要从外部调用类的成员函数,需要先建立类的对象。比如警察类是一个类,枪是警察类的一个数据成员,但是警察类是一个泛指,定义在警察类中的枪也是一个泛指,是说警察类的对象都有一把枪,但警察类不代表一个具体的人(即对象),要得到一把实实在在的枪,你必须指明具体哪个警察,比如说,北京东城区32楼保安张三,然后才能取得它的数据成员,张三 。枪,这时候,这个张三的枪才是一把实实在在的枪,才可以对它进行实际的操作。
二、SDK,API,MFC 三者的关系是什么
SDK - Software development kit API - Application programming interface MFC - Microsoft Foundation Class 就win32编程来说,SDK是windows中的开发包,它提供了一套接口,叫API。 微软用把这套API封装了一下,就叫MFC。 比如说要创建一个窗口,CreateWindowEx函数,它是一个Win32 API函数,由Win SDK提供。MFC用类把它封装起来,提供了CWin::Create。 谈开去,所有提供二次开发的软件都会有一个软件包叫SDK,提供一个接口,也叫API。
三、怎样用MFC实现判断点与线关系
void CMy222Dlg::OnBnClickedOk()
{
CString kk, bb, xx, yy;
float k=0.0, b=0.0, x=0.0, y=0.0;
float value1=0.0,value2=0.0;
CString OutValue;
GetDlgItemText(IDC_EDIT_K,kk);
GetDlgItemText(IDC_EDIT_B,bb);
GetDlgItemText(IDC_EDIT_X,xx);
GetDlgItemText(IDC_EDIT_Y,yy);
if(!InputTest(kk,bb,xx,yy))return;
k=_ttof(kk);
b=_ttof(bb);
x=_ttof(xx);
y=_ttof(yy);
value1=k*x+b;
value2=y;
OutValue=value1==value2 ? _T(是) : _T(否);
SetDlgItemText(IDC_STATIC_OutValue,OutValue);
}
// 输入数据合法性测试
BOOL CMy222Dlg::InputTest(CString kk, CString bb, CString xx, CString yy)
{
BOOL ReValue=TRUE;
if(kk.IsEmpty() && bb.IsEmpty())
{
AfxMessageBox(_T(输入错误:k和b不能同时为空!!));
ReValue=FALSE;
}
if(xx.IsEmpty() || yy.IsEmpty())
{
AfxMessageBox(_T(输入错误:x或y不能为空!!));
ReValue=FALSE;
}
if(!MeIsNumber(kk))
{
AfxMessageBox(_T(输入错误:k输入的不是数字!!));
ReValue=FALSE;
}
if(!MeIsNumber(bb))
{
AfxMessageBox(_T(输入错误:b输入的不是数字!!));
ReValue=FALSE;
}
if(!MeIsNumber(xx))
{
AfxMessageBox(_T(输入错误:x输入的不是数字!!));
ReValue=FALSE;
}
if(!MeIsNumber(yy))
{
AfxMessageBox(_T(输入错误:y输入的不是数字!!));
ReValue=FALSE;
}
return ReValue;
}
// 测试是否为数据
BOOL CMy222Dlg::MeIsNumber(CString x)
{
CString str=_T(1234567890.);
for(int i=0;i<x.GetLength();i++)
{
if(str.Find(x.GetAt(i), 0)==-1)
return FALSE;
}
return TRUE;
}
四、新手上路:“如何在mfc实现输入输出关联?”
拖2个编辑框1个按钮, 右键编辑框, 添加变量. 一个命名为CEdit m_edit1; 另一个CEdit m_edit2;
双击button添加函数,里面写
CString str;
m_edit1.GetWindowText(str);
m_edit2.SetWindowText(str);