错误集

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()这个函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值