1.FILE LINE报错:未声明标识符
原因:下划线应该为两横: _ FILE _ _ LINE _
2.CString运用遇到的问题及解决方法
在MFC中,对于字符串的处理通常是用CString,但我今天定义了一个结构体,结构体中包含有CString name这个变量,在进行信息存入文件(txt)以及从文件中读取的时候,总是发生莫名的错误,导致CString这个变量的值无法取得,呈现的是一堆不知名字符。
解决方法:用string处理
CString转string:
string str_test=(CStringA)cstr_test;
string转CString:
CString cstr_test=str_test.c_str();
数据在内存中的存储都是一样的,都是一堆二进制,这是转换的基础
3.MFC-list ctrl
1.设置表头
第一步:属性中的View改为Report
第二步:右键list ctrl,添加变量m_list
第三步:在Dlg.cpp中的OnInitDialog()函数中添加代码:
m_list.InsertColumn(0, L"品名", LVCFMT_LEFT, 100);
0:第一列的表头,第二列则为1
品名:表头内容
LVCFMT_LEFT:左对齐
100:一个格的宽2.在表格中插入数据
代码:
int nItemCount = m_list.GetItemCount();
CString strBuf;
strBuf.Format(L"%d行1列", nItemCount + 1);
m_list.InsertItem(nItemCount, strBuf, 0);
for (int i=0;i<5;++i)
{
strBuf.Format(L"%d行%d列",nItemCount+1,i);
m_list.SetItemText(nItemCount, i, strBuf);
}我的理解:先通过InsertItem函数,在现有行的下一行插入一行,然后通过SetItemText进行每一项的内容设置,以上代码是我的测试代码,单击Button就会触发一次,运行效果如下:
3.双击表头消息
选择list ctrl,右键找到类向导,找到当前对象ID(一般默认的ID就是,比如我使用的ID就是ID_LIST_INFO,由自己定义的),右边的消息框中找到LVN_COLUMNCLICK,双击添加响应函数即可。
MFC date time picker等控件添加变量无反应,类向导中无法找到控件消息
可能原因:修改了控件所在Dialog的ID
将浮点数据转为char*的方法
1.MFC 中可以用CString作为桥接
Cstring str;
str.Format(“%f”,1.33);2.使用函数_gcvt
头文件:
stdio.h
原型:
char *_gcvt( double value, int digits, char *buffer );
参数:
value:要转换的值
digits:存储的有效数字个数
buffer:结果的存储位置返回值
返回指向的数字的字符串的指针
MFC Spin控件不能即放即用的问题
一般和Edit编辑框一起使用,但是控件的拖放顺序有讲究,要先把Edit放到界面上,再把Spin控件放上。可以不按这个先后顺序,但是会有麻烦,因为Spin是根据Z顺序进行绑定的,会把Spin与前面一个进行绑定。把两个控件放好后,再将Spin的属性的中的Auto Buddy改为true,Set Buddy Integer 改为true,这样就能使用了。但是,使用的时候上与下代表的是减与加,需要代码做一下:在Dlg.cpp中的OnInit函数中对空间进行范围设置,如:
CSpinButtonCtrl *p_spin = (CSpinButtonCtrl*)GetDlgItem(IDC_SPIN);
p_spin->SetRange32(0, 500);
p_spin->SetBase(10);//十进制
窄字节转宽字节的方法
1.wsprintf(目标字符串,”%s”,char *)
2.用A2W()这个函数