MFC控件关联变量小结

时间:2019-05-13 19:13:50下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《MFC控件关联变量小结》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《MFC控件关联变量小结》。

第一篇:MFC控件关联变量小结

MFC控件关联变量总结

通常在要绑定变量的编辑框控件上右键添加变量就可以。

绑定变量分value和control两种,value是赋值用的,control是控制用的。对于编辑框的赋值,共分几种方法 1.不用绑定变量的方法

GetDlgItem(IDC_EDIT1)->GetWindowText(变量); 如果是数组->GetWindowText(数组名,长度)GetDlgItem(IDC_EDIT1)->SetWindowText(变量); 2.绑的是value型变量 一共3处

<1处>project1Dlg.h : 头文件 class Cproject1Dlg : public CDialog { // 构造 public: Cproject1Dlg(CWnd* pParent = NULL);// 标准构造函数

// 对话框数据

enum { IDD = IDD_PROJECT1_DIALOG };protected: virtual void DoDataExchange(CDataExchange* pDX);// DDX/DDV 支持

// 实现 protected: HICON m_hIcon;// 生成的消息映射函数 virtual BOOL OnInitDialog();afx_msg void OnSysCommand(UINT nID, LPARAM lParam);afx_msg void OnPaint();afx_msg HCURSOR OnQueryDragIcon();DECLARE_MESSAGE_MAP()public: afx_msg void OnBnClickedOk();CString edit1;//定义了该变量 CString edit2;CEdit edit3;CEdit edit4;CString edit5;};<2处> project1Dlg.cpp : 实现文件

Cproject1Dlg::Cproject1Dlg(CWnd* pParent): CDialog(Cproject1Dlg::IDD, pParent), edit1(_T(“")), edit2(_T(”“)), edit5(_T(”")){ m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);}

参数列表跟了edit1 <3处> project1Dlg.cpp : 实现文件

void Cproject1Dlg::DoDataExchange(CDataExchange* pDX){ CDialog::DoDataExchange(pDX);DDX_Text(pDX, IDC_EDIT1, edit1);DDX_Text(pDX, IDC_EDIT2, edit2);DDX_Control(pDX, IDC_EDIT3, edit3);DDX_Control(pDX, IDC_EDIT4, edit4);DDX_Text(pDX, IDC_EDIT5, edit5);}

DDX_Text(pDX, IDC_EDIT1, edit1);变量与控件关联

通过调用 UpdateData(TRUE)UpdateData(FALSE)将控件数据取到变量或将变量数据显到控件 如果 变量赋值语句写在对话框构造函数里,则UpdateData(FALSE)可省略,会被自动调用

3.绑的是control型变量 代码与上方一样,看edit3 但只有两处涉及 CEdit edit3;DDX_Control(pDX, IDC_EDIT3, edit3);程序里只需要 edit3.GetWindowText(变量);edit3.SetWindowText(变量);就可以用了

除了赋值,还能干很多事情.

第二篇:Visual C++ 2010 MFC ActiveX 控件小结[推荐]

一、ActiveX控件

ActiveX控件是基于组件对象模型COM--Components Object Modem的可重用软件组件,旨在用于普通的ActiveX控件容器和Internet上的网页,这里介绍用MFC创建ActiveX控件。一个典型的ActiveX控件,具有方法、属性、事件这三种特性。

二、ActiveX控件的测试与注册

1、使用ActiveX控件测试容器对控件进行测试

对于VC6.0,安装CommonTools目录下的TSTCON32.EXE即可使用。

而vs2010中的TSTCON(ActiveX Control Test Container)工具非自动安装,而是作为一个例程提供。所以应找到该例程,并编译: 如vs2010安装在默认路径则

1, 进入:C:Program FilesMicrosoft Visual Studio 10.0Samples1033,可找到VC2010Samples.zip文件,2, 将其解决到同一个文件夹,解压后将出现一个C++子文件夹。

3, TstCon例程在:C:Program FilesMicrosoft Visual Studio 10.0Samples1033C++MFColeTstCon,双击其中的.sln文件启动工程,直接编译,4, 编译后在Debug子文件夹中将出现一个TstCon.exe文件,将其复制到:C:Program FilesMicrosoft Visual Studio 10.0Common7Tools文件夹。

5, 在vs2010中的Tools菜单点击“External Tools...”,出现如下对话框,点击“Add”添加一项工具。6, 新工具项的“Title”为:ActiveX Control Test Container,“Command” 为:C:Program FilesMicrosoft Visual Studio 10.0Common7Tools TstCon.exe。

7, 确认退出对话框,Tools菜单将出现“ActiveX Control Test Container”菜单项。Visual C++ 2010 MFC ActiveX 控件小结Captain栋蝈 打开控件测试容器初始界面如下图

Visual C++ 2010 MFC ActiveX 控件小结Captain栋蝈 Edit→Insert New Control→选择要测试的控件→OK

2、ActiveX控件的注册与删除

所有的ActiveX控件必须在注册之后才能使用,实际上在VS2010开发环境中生成控件程序时,就已经通过regsvr32程序注册了该控件;如果要删除ActiveX控件的注册信息,利用regsvr32程序的/u选项来完成。通常可以选择“开始”→“运行”命令,然后输入“regsvr32/u”,再在其后输入要删除的ActiveX控件的完整路径。Tips:在“运行”中先输入regsvr32/u,然后拖动要删除的控件到“regsvr32/u”之后,即可获取其完整路径。

将xxx.ocx文件拷贝至Windowssystem下,然后regsvr xxx.ocx即注册;regsvr32/u xxx.ocx即删除。

三、ActiveX控件开发完整过程 经典Clock控件案例~~

1、创建工程

创建MFC ActiveX Control类项目,命名为Clock,MFC ActiveX Control Wizard全选默认,Finish。

2、时钟控件的实现

获取当前系统时间,CClockCtrl类的OnDraw函数中 CTime time=CTime::GetCurrentTime();CString str=time.Format(“%H:%M:%S”);pdc->TextOut(0,0,str);动态显示时间,CClockCtrl类添加WM_CREATE和WM_TIMER消息及处理函数 设置定时器SetTimer(1,1000.NULL);定时器相应函数InvalidateControl();//其实就是调用OnDraw函数

编译并运行ActiveX控件,然后打开ActiveX控件容器中插入该控件,可以看到动态显示的时间

3、属性 3.1标准属性

以背景色和前景色为例,类视图中展开Lib结尾的选项,右键“_DClock”→“添加”→“属性”,然后添加标准属性,及选中“Stock”,在PropertyName中选则BackColor,其余选中默认,单击完成。同理添加前景色ForeColor。

为属性对话框添加“颜色”选项卡,修改类CClockCtrl.cpp中的属性页映射宏PROPPAGEID(CLSID_CColorPropPage);切记计数参数要增加1: // 属性页

// TODO: 按需要添加更多属性页。请记住增加计数!BEGIN_PROPPAGEIDS(CClockCtrl, 2)

PROPPAGEID(CTimePropPage::guid)

PROPPAGEID(CLSID_CColorPropPage);END_PROPPAGEIDS(CClockCtrl)然后在修改OnDraw函数使控件颜色根据颜色选项卡的选则而变化:

CBrush brush(TranslateColor(GetBackColor()));

pdc->FillRect(rcBounds,&brush);

pdc->SetBkMode(TRANSPARENT);

pdc->SetTextColor(TranslateColor(GetForeColor()));3.2自定义属性

添加一个自定义属性:时间间隔(UpdateInterval),用于设置更新时间的间隔。

与标准属性添加相同,在添加属性向导中,在PropertyName中输入UpdateInterval,类型设置为SHORT。可以看到向导自动添加了通知函数OnUpdateIntervalChange(),单击Finish完成添加。void CClockCtrl::OnUpdateIntervalChanged(void){

AFX_MANAGE_STATE(AfxGetStaticModuleState());

// TODO: 在此添加属性处理程序代码

if(m_UpdateInterval<1000 || m_UpdateInterval>6000)

{

//解决输入值不合要求的问题

m_UpdateInterval=1000;

}

else

{

//解决输入值不是整数的问题

m_UpdateInterval=m_UpdateInterval/1000*1000;

}

KillTimer(1);

SetTimer(1,m_UpdateInterval,NULL);

SetModifiedFlag();} 关联某控件变量,需要手动添加:

DDP_Text(pDX, IDC_EDIT1, m_updateInterval,_T(“Interval”));DDX_Text(pDX, IDC_EDIT1, m_updateInterval);DDP_PostProcessing(pDX);DDP、DDX、PostProcessing,顺序不可以调整

为测试自定义属性,在Edit→Insert New Control→选择要测试的控件后,选择Control→Invoke Methods,如果想要获取,某个属性值,则选择PropGet;如果设置,则选PropPut。这里选择后者,然后输入2000,单击SetValue,在单击【Invoke】按钮,发现控件时间每个2S更新一次。

4、方法

与添加属性一样,_DClock右键......选择“方法”,这里添加一个简单的“Hello” 代码:

void CClockCtrl::Hello(void){

AFX_MANAGE_STATE(AfxGetStaticModuleState());

// TODO: 在此添加调度处理程序代码

MessageBox(_T(“Hello world”));} 测试时Control→Invoke Methods,选择“Hello”

5、事件

5.1添加标准事件

右键CClockCtrl类(类视图CxxxCtrl上点击右键才能添加事件,而在_DxxxEvents接口上点击右键则没有添加事件),添加“事件”,显示添加事件向导对话框,“Event Name”下拉列表框中选择”Click“,单击Finish。5.2添加自定义事件

添加一个NewMinute事件,实现新的一分钟时有提示 Event Name中输入NewMinute,然后Finish。在InDraw函数中获取系统时间代码后添加 if(time.GetSecond()==0)

{

NewMinute();//判断是否过了一分钟,是则触发NewMinute事件

}

6、调用ActiveX控件

新建一个名为ClockTest的对话框,在对话框上右键,选择”Insert ActiveX Control“,找到Clock控件添加即可。

或者是,”工具“→”选择工具箱选项“→”COM Components“,选择要插入的控件,单击OK。

第三篇:MFC动态添加控件及响应函数

MFC动态添加控件及响应函数

应该注意:控件也是一个窗口。在添加控件的时候空间变量最好是全部变量或者是局部指针变量,这样即使函数结束也不会造成变量被销毁。下面以动态添加按钮为例的代码:  CButton *pButton = new CButton;//一定要New CButton,否则程序会运行出错 pButton->Create(“New Button”, WS_CHILD|BS_DEFPUSHBUTTON, CRect(0, 0, 100,50), this, 123);

 pButton->ShowWindow(SW_SHOW);

或者是如下代码:

 CButton *pButton = new CButton;//一定要New CButton,否则程序会运行出错 pButton->Create(“New Button”, WS_CHILD|BS_DEFPUSHBUTTON|WS_VISIBLE, CRect(0, 0, 100, 50), this, 123);

根据MFC的消息映射机制,应该更改三处代码。

(1)在头文件中修改代码

 在protected的注释宏中间添加函数声明:

 protected:

 //{{AFX_MSG(CDemoMDIView)

 afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);

 afx_msg void OnNewButton(void);

 //}}AFX_MSG

(2)在cpp文件中添加消息声明

 BEGIN_MESSAGE_MAP(CDemoMDIView, CView)

 //{{AFX_MSG_MAP(CDemoMDIView)

 ON_WM_CREATE()

 //}}AFX_MSG_MAP

 // Standard printing commands

 ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)

 ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)

 ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview) //参数依次为控件ID、响应函数名称

 ON_BN_CLICKED(123, OnNewButton)

 END_MESSAGE_MAP()

(3)在cpp文件中添加函数代码

 voidCDemoMDIView::OnNewButton(void)

 {

 MessageBox(“This is a new button!nThis Function Handler was added manually!”); }

第四篇:GridControl控件小结

由于近期要使用gridcontrol控件,整理出来,以便以后参考:

1.DevExpress控件组中的GridControl控件不能使横向滚动条有效。现象:控件中的好多列都挤在一起,列宽都变的很小,根本无法正常浏览控件单元格中的内容。

解决:

gridView1.OptionsView.ColumnAutoWidth属性是true,即各列的宽度自动调整,你把它设成false,就会出现了。

2.使单元格不可编辑。

gridcontrol-->gridview-->OptionsBehavior-->Editable=false

3.没有下拉滚动条事件怎么办?现象:因为需要加载大数据量数据,所以不能一次把所有数据读入datatable进行绑定,所以决定在用户进一步浏览数据时进行数据的实时加载工作,就是每当用户拉动滚动条时,多加载一些数据进入datatable.没有找到合适的滚动条事件,于是用这个事件代替了,非常合适我的需求.TopRowChanged事件.4.获取选定行,指定列单元格的内容

private string GetSelectOID()

{

int[] pRows = this.gridView1.GetSelectedRows();

if(pRows.GetLength(0)> 0)

return gridView1.GetRowCellValue(pRows[0], mOIDFiledName).ToString();

else

return null;

}

//mOIDFiledName为要获取列的列名

5.去除“Drag a Column Header Here To Group by that Column”

属性Gridview->Option View->Show Group Panel=false,就好了

6.在gridcontrol中添加checkbox复选框

gridview->run designer->columns->选择要变成复选框的那一列->column edit->new(在这里可以选择很多类型)

加载checkbox数据时,费了一点时间,checkbox的复选框怎么点击,一失去焦点是,选择的操作就无效了,问题就出在datatable的绑定上了,一定要绑定一个布尔的类型.代码是这样滴!

private void FrmCreateLegend_Load(object sender, EventArgs e)

{

IFeatureLayer pFeatureLayer;

IDataset pDataset;

string pName;

DataTable pDatatable = new DataTable();

pDatatable.Columns.Add(“图层名称”, System.Type.GetType(“System.String”));pDatatable.Columns.Add(“选择”, System.Type.GetType(“System.Boolean”));

DataRow pDataRow;

object[] rowArray = new object[2];

for(int i = 0;i < mFeatureLayers.Count;i++)

{

pDataRow = pDatatable.NewRow();

pFeatureLayer = mFeatureLayers[i] as IFeatureLayer;

rowArray[0] = pFeatureLayer.Name;

rowArray[1] = false;

pDataRow.ItemArray = rowArray;

pDatatable.Rows.Add(pDataRow);

}

this.gridMark.DataSource = pDatatable;

this.gridMark.Refresh();

}

注意:创建的datatable的列名一定要和gridview中的列的fieldname属性值是一个名字,不然,你会发现添加了和你绑定的datatalbe一样多的行,可是行里面却没有内容的.7.多选

GridControl->GridView->属性->OptinosSelecttion->MultiSelect

8.不显示子表信息

当我们对DataTable建立父子关系后,将父表绑定在Grid上,会造成关系列上有加号显示,并且可以展开.如果你觉得展开的信息对你没有意义的话,是可以关掉的.这是需要修改属性 属性Gridview->Option View->ShowDetailButtons=false

bandedGridView1.Columns[1].Width =

bandedGridView1.CalcColumnBestWidth(bandedGridView1.Columns[1])+ 5;

bandedGridView1.Columns[2].Width =

bandedGridView1.CalcColumnBestWidth(bandedGridView1.Columns[2])+ 5;

bandedGridView1.Columns[3].Width =

bandedGridView1.CalcColumnBestWidth(bandedGridView1.Columns[3])+ 5;

bandedGridView1.Columns[0].Width

bandedGridView1.CalcColumnBestWidth(bandedGridView1.Columns[0])+ 5;=

第五篇:MFC CString 用法小结[定稿]

MFC CString 用法小结

1.初始化方法:

(1)直接复制,如Cstring=”mingrisoft”;

(2)通过构造函数初始化,如 CString str(„ ‟,100)//与分配100个字节,填充空格 char* p=”feiqiang”;Cstring(p);delete p.(3)加载工程中的字符串资源,如CString str;str.LoadString(IDS_STR);(4)使用CString类的成员函数Format初始化,如CString str;int i=0;str.Format(“value:%d”,i);

2.将CString转化为char*,如

CString str=”feqiang”;

char *p;p=str.GetBuffer();delete p;将char*转化为CString,如:

char* p=”feiqiang”;

p[len(p)]=‟‟;

Cstring str(p);char* 和char数组的转化:

char buf[5] ={„a‟,‟b‟,‟c‟};

char *p;p=new char[5];p=buf;将字符串转化为数字:

CString str=”12”;

int i=atoi(str);long j=atoll(str);float f=atof(str);将数字转化为字符串:

CString str;int i=12;str.Format(“%d”,i);

long j=12;str,Format(“%ld”,j);

同理其他类型。

3.字符串的相关操作即方法的使用:

(1)提取字符串中的中文,如

CString strtext,temp,strres;GetLlgItem(IDC_TEXT)->GetWindowText(strtext);//通过ID获取编辑框中的文本

for(int =;i

if(IsDBCSLeadByte(ch)){ //判断字符是否是双字节编码的前一个字节 tmp=strtext.Mid(i,2);//截取索引index1到index2的字符[)i++;stress+=tmp;} GetLlgItem(IDC_RESULT)->SetWindowText(strtes);//设置文本框中的文本 }(2)英文字符串首字母大写,如 将以空格符分隔的英文单词的第一个字母大写(小写)str.GetAt(i);//提取字符串索引为i个字母

str.MakeLower();//转化为小写

tmp.MakeUpper();//转化为大写

(2)按制定符号分割字符:

int pos=str.Find(strchar);//查找字符,如果没找到,则返回0,找到则返回字符的位置,参数可以是字符也可以是字符串

while(pos>0){ str1=str.Left(pos);//取左,参数为字符串的个数

str=str.Right(str.GetLength-pos-1);//取右,参数同上

tmp.Format(“%srn”,str1);//字符串中rn代表回车化行符

strres+=tmp;pos=str.Find(strchar);}(3)删除指定的中文: m_text.GetWindowText(strtxt);m_text.GetSel(istart,iend);//得到文本框中选中的文本,并且得到文本的头索引和尾索引 if(istart==iend){ return;} str1=strtxt.Left(istart);if(iend>=strtxt.GetLength()){ str2=””;}else{ str2=strtxt.Right(strtxt.GetLength()-iend);} strres+=str1;strres+=str2;(4)替换字符串:

strtxt.Replace(strchar,strnew);//用新串替换旧串

(5)根据CPoint查找位置:

CPoint pt;//获取字符串时获取鼠标所在字符串的位置

int pos=m_text.CharFromPos(pt);//根据pt获取字符串中的位置,即其左侧字符的位置 if(str.IsEmpty()){//判断字符串是否为空

m_num.AddString(strres);//文本框追加字符串 } 将字符转化为大写:ch=ch-32;(6)字符串忽略大小写的比较:

CString str=”feiqiang”;

int com=str.CompareNoCase(“mingri”);//如果相等返回0,否则返回-1;

(7)连接换行符:CString str=”feiqiang t”;

(8)字符反转:str.MakeReverse();(9)取出首位空格:str.TrimLeft();str.TrimRight();取出字符串中的所有空格,str.Replace(“ ”,””);

(10)在ListBox中查找字符串

int index=::SendMessage(m_stringlist.GetSafeHwnd(),LB_FINDSTRINGEXACT,-1,(LPARAM)(LPCTSTR)strtext));//通过SendMessage函数向列表控件发送LB_FINDSTRINGEXACT消息来查找指定字符串是否在列表空间中,如果存在则返回索引位置。

(11)字符串数组:

CString str[5] array;CString str[5]={“feiqiang”,”mingri”,”mr”};

for(int i=0;i<5;i++){ array.Add(str[i]);//添加元素 } for(int j=0;j

if(array.Get(j)==”mr”){

MessageBox(“存在”);} }(12)设置编码方式:Project/SettingsàPreprocessor,如果要使用DBCS,则添加_MBCS(多个字节编码),如果要使用Unicode,则添加_Unicode,不添加则使用ASCII.二 字符串指针类型

(1)LPCSTR:32位静态字符串指针,可以直接赋值使用,如LPCSTR str=”mingrisofg”;(2)LPSTR:32位字符串指针,如LPSTR str;str=new char[256];(3)LPCTSTR:32位UNICODE型静态字符串指针,如 LPCTSTR str=_T(“mingrisoft”);(4)LPTSTR: 32位UNICODE型字符串指针,如LPTSTR str=new TCHAR[256];三 BSTR(进行COM编程时使用的字符串类型)与CString之间的转化: 1.对BSTR变量赋值时: BSTR bstr=NULL;bstr=SysAllocString(L”feiqang”);//从LPCWSTR构造

SysFreeString(bstr);//释放

将BSTR强制转化为CString,如:

CString str=(CString)bstr;或CString str;BSTR bstr=str.AllocSysString();2._bstr_(对BSTR的包装类),包含的头文件为:”COMDEF.H”

用法:

直接赋值:_bstr_t tbstr=”feqiang”;

给CString对象赋值:CString str=(LPCSTR)tbstr;//LPCSTR str=tbstr;将_bsr_转化为BSTR,使用copy函数:BSTR bstr=tbstr.copy();SysFreeString(bstr);BSTR之间赋值给_bstr_对象,如BSTR bstr=SysAllocString(L”mingri”);_bstr_t tbstr=bstr;四 格式化类型

如:获取并且格式化系统时间

CTime t=CTime::GetCurrentTime();CSTring strtime=t.Format(“%H:%M:%S”);

MessageBox(strtime;1.CString::IsEmpty BOOL IsEmpty()const;返回值:如果CString 对象的长度为0,则返回非零值;否则返回0。说明:此成员函数用来测试一个CString 对象是否是空的。示例:

下面的例子说明了如何使用CString::IsEmpty。// CString::IsEmpty 示例 CString s;ASSERT(s.IsEmpty());请参阅 CString::GetLength

2.CString::Left CString Left(int nCount)const;throw(CMemoryException);返回值:返回的字符串是前nCount个字符。示例:

CString s(_T(“abcdef”));ASSERT(s.Left(2)== _T(“ab”));

3.CString::LoadString BOOL LoadString(UINT nID);throw(CMemoryException);返回值:如果加载资源成功则返回非零值;否则返回0。nID 一个Windows 字符串资源ID。

说明: 此成员函数用来读取一个由nID 标识的Windows 字符串资源,并放入一个已有CString 对象中。示例:

下面的例子说明了如何使用CString::LoadString。// CString::LoadString 示例

#define IDS_FILENOTFOUND 1 CString s;if(!s.LoadString(IDS_FILENOTFOUND))

4.CString::MakeLower void MakeLower();//改变字符的小写

5.CString::MakeReverse void MakeReverse();//字符倒置

6.CString::MakeUpper void MakeUpper();//改变字符的大写

7.CString::Mid CString Mid(int nFirst)const;CString Mid(int nFirst, int nCount)const;nCount代表要提取的字符数, nFirst代表要提取的开始索引位置 示例:

CString s(_T(“abcdef”));ASSERT(s.Mid(2, 3)== _T(“cde”));

8.CString::ReleaseBuffer void ReleaseBuffer(int nNewLength =-1);参数:nNewLength 此字符串的以字符数表示的新长度,不计算结尾的空字符。如果这个字 符串是以空字符结尾的,则参数的缺省值-1 将把CString 的大小设置为 字符串的当前长度。说明:

使用ReleaseBuffer 来结束对由GetBuffer 分配的缓冲区的使用。如果你知道缓 冲区中的字符串是以空字符结尾的,则可以省略nNewLength 参数。如果字符 串不是以空字符结尾的,则可以使用nNewLength 指定字符串的长度。在调用 ReleaseBuffer 或其它CString 操作之后,由GetBuffer 返回的地址是无效的。示例:

下面的例子说明了如何使用CString::ReleaseBuffer。// CString::ReleaseBuffer 示例 CString s;s = “abc”;LPTSTR p = s.GetBuffer(1024);strcpy(p, “abc”);// 直接使用该缓冲区

ASSERT(s.GetLength()== 3);// 字符串长度 = 3 s.ReleaseBuffer();// 释放多余的内存,现在p 无效。ASSERT(s.GetLength()== 3);// 长度仍然是3

9.CString::Remove int CString::Remove(TCHAR ch);返回值:返回从字符串中移走的字符数。如果字符串没有改变则返回零。参数:ch 要从一个字符串中移走的字符。

说明:此成员函数用来将ch 实例从字符串中移走。与这个字符的比较是区分大小写 的。示例: // 从一个句子中移走小写字母'c': CString str(“This is a test.”);int n = str.Remove('t');ASSERT(n == 2);ASSERT(str ==“This is a es.”);10.CString::Replace int Replace(TCHAR chOld, TCHAR chNew);int Replace(LPCTSTR lpszOld, LPCTSTR lpszNew);返回值:返回被替换的字符数。如果这个字符串没有改变则返回零。参数:chOld 要被chNew 替换的字符。chNew 要用来替换chOld 的字符。

lpszOld 一个指向字符串的指针,该字符串包含了要被lpszNew 替换的字符。LpszNew 一个指向字符串的指针,该字符串包含了要用来替换lpszOld 的字符。说明:此成员函数用一个字符替换另一个字符。函数的第一个原形在字符串中用chNew 现场替换chOld。函数的第二个原形用lpszNew 指定的字符串替换lpszOld 指定 的子串。

在替换之后,该字符串有可能增长或缩短;那是因为lpszNew 和lpszOld 的长度 不需要是相等的。两种版本形式都进行区分大小写的匹配。示例: // 第一个例子,old 和new 具有相同的长度。CString strZap(“CnIndex)时会出错,当nCount过大,没有足够的字符删除时,此函数不执行。示例:

CString str1,str2,str3;char a;str1 = “nihao”;str2 = “nIhao”;int x;// int i=(str1 == str2);str1.Delete(2,3);如果nCount(3)> GetCount()– nIndex(5-2)就会执行错误

22.CString::Empty Void Empty();返回值:没有返回值 清空操作;示例:

CString s(“abc”);s.Empty();ASSERT(s.GetLength()== 0);

23.CString::Find int Find(TCHAR ch)const;int Find(LPCTSTR lpszSub)const;int Find(TCHAR ch, int nStart)const;int Find(LPCTSTR lpszSub, int nStart)const;返回值: 不匹配的话返回-1;索引以0 开始;nStar 代表以索引值nStart 的字符开始搜索 , 即为包含以索引nStart字符后的字符串.示例:

CString s(“abcdef”);ASSERT(s.Find('c')== 2);ASSERT(s.Find(“de”)== 3);Cstring str(“The stars are aligned”);Ing n = str.Find('e',5);ASSERT(n == 12)

24.CString::FindOneOf int FindOneOf(LPCTSTR lpszCharSet)const;返回值: 不匹配的话返回-1;索引以0 开始

注意::返回此字符串中第一个在lpszCharSet中也包括字符并且从零开始的索引值 示例:

CString s(“abcdef”);ASSERT(s.FindOneOf(“xd”)== 3);// 'd' is first match.25.CString::Format void Format(LPCTSTR lpszFormat,...);void Format(UINT nFormatID,...);参数:lpszFormat 一个格式控制字符串 nFormatID 字符串标识符 示例: CString str;Str.Format(“%d”,13);此时Str为13

26.CString::GetAt TCHAR GetAt(int nIndex)const;返回值:返回标号为nIndex的字符,你可以把字符串理解为一个数组,GetAt类似于[].注意nIndex的范围,如果不合适会有调试错误。

27.CString::GetBuffer LPTSTR GetBuffer(int nMinBufLength);返回值:一个指向对象的(以空字符结尾的)字符缓冲区的LPTSTR 指针。参数:nMinBufLength 字符缓冲区的以字符数表示的最小容量。这个值不包括一个结尾的空字符的空间。说明:此成员函数返回一个指向CString 对象的内部字符缓冲区的指针。返回的LPTSTR 不是const,因此可以允许直接修改CString 的内容。如果你使用由GetBuffer 返回的指针来改变字符串的内容,你必须在使用其它的CString 成员函数之前调用ReleaseBuffer 函数。在调用ReleaseBuffer 之后,由GetBuffer 返回的地址也许就无效了,因为其它的CString 操作可能会导致CString 缓冲区被重新分配。如果你没有改变此CString 的长度,则缓冲区不会被重新分配。当此CString 对象被销毁时,其缓冲区内存将被自动释放。

注意:如果你自己知道字符串的长度,则你不应该添加结尾的空字符。但是,当你用ReleaseBuffer 来释放该缓冲区时,你必须指定最后的字符串长度。如果你添加了结尾的空字符,你应该给ReleaseBuffer 的长度参数传递-1,ReleaseBuffer 将对该缓冲区执行strlen 来确定它的长度。示例:

// CString::GetBuffer 例子 CString s(“abcd”);#ifdef _DEBUG afxDump << “CString s ” << s << “n”;#endif LPTSTR p = s.GetBuffer(10);strcpy(p, “Hello”);// 直接访问CString 对象。s.ReleaseBuffer();#ifdef _DEBUG afxDump << “CString s ” << s << “n”;#endif

28.CString::GetLength int GetLength()const;返回值:返回字符串中的字节计数。

说明:此成员函数用来获取这个CString 对象中的字节计数。这个计数不包括结尾的空字符。对于多字节字符集(MBCS),GetLength 按每一个8 位字符计数;即,在一个多字节字符中的开始和结尾字节被算作两个字节。示例 下面的例子说明了如何使用CString::GetLength。// CString::GetLength 示例 CString s(“abcdef”);ASSERT(s.GetLength()== 6);

29.CString::Insert int Insert(int nIndex, TCHAR ch);int Insert(int nIndex, LPCTSTR pstr);返回值:返回修改后的长度,nIndex是字符(或字符串)插入后的索引号例子 示例:

CString str(“HockeyBest”);

int n = str.Insert(6, “is”);

ASSERT(n == str.GetLength());printf(“1: %sn”,(LPCTSTR)str);n = str.Insert(6, ' ');ASSERT(n == str.GetLength());printf(“2: %sn”,(LPCTSTR)STR);

n = str.Insert(555, „1‟);

ASSERT(n == str.GetLength());printf(“3: %sn”,(LPCTSTR)str);输出

1.Hockeyis Best 2.Hockey is Best 3.Hockey is Best!

下载MFC控件关联变量小结word格式文档
下载MFC控件关联变量小结.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    东南大学大二MFC短学期个人小结

    MFC短学期个人总结 在这个短学期中,我们小组首先选择了东大交友系统作为自己所研究的目标,但是在努力了两星期之后,我们发现其中涉及的内容实在太多,短短几个星期不能收到实际的......

    VC++中MFC用Ado连接数据库小结

    VC++中MFC用Ado连接数据库小结 VC++中使用MFC通过ADO连接数据库方法小结(不包括异常的捕捉) 这里主要讲MFC与SQL2000数据库的连接。 1.在StdAfx.h头文件中加入此句子 #import......

    东南大学大二短学期MFC设计个人工作小结(本站推荐)

    个人工作小结在这个短学期中,我们小组选择拼图游戏这个项目的设计。在整个设计过程中,我主要负责查找资料,写流程图以及MFC窗口设计及美化工作。其中包括对话框的建立、链接和......

    东南大学大二短学期MFC设计个人工作小结

    个人工作小结 在这个短学期中,我们小组选择了南京地铁查询系统这个项目的设计。在整个设计过程中,我主要负责MFC窗口设计及美化工作。其中包括对话框的建立、链接和运行,各种......