
m_RichEditSetEventMask(ENM_CHANGE | m_RichEditGetEventMask());
加到OnInitDialog最后,return之前
1Access数据库字段没有CTime类型,CTime是和MFC的日期时间控件对应的类型,Access数据库字段类型和时间相关的是DateTime,其入库insert语句和查询select结果都是字符串类型,也就是说如果你MFC程序界面上没有MFC的日期时间控件,你的程序中没必要出现CTime对象;
如果你的程序界面只有一个编辑框,即一个CString类型m_normalDate,那么char std:string CString之间的转换遵循如下方式:
CString转char
CString cstr;
char p = (LPSTR)(LPCTSTR)cstr;
string 转 CString CStringFormat(”%s”, stringc_str());//用stringc_str()要比stringdata()好
//c_str(),返回有”/0“的字符串数组,data(),返回没有”/0“的字符串数组
char 转 CString CStringformat(”%s”, char);
char 转 string string s(char ); //这是初始化,在不是初始化的地先要stringassign()
string 转 char char p = stringc_str();
CString 转 string string s(CStringGetBuffer());//GetBuffer()后一定要ReleaseBuffer(),否则就没有释放缓冲区所占的空间
那么解决第一个报错:
sscanf((LPSTR)(LPCTSTR)m_normalDate, "%d-%d-%d", &nYear, &nMonth, nDay);
或者
sscanf(m_normalDateGetBuffer()c_str(), "%d-%d-%d", &nYear, &nMonth, nDay);
2Access入库语句在DateTime类型时就是一个前后添加‘#’号的字符串,所以%①肯定是%s。
CTime time(nYear, nMonth, nDay);
CString dateTime("#");
dateTime+=timeFormat("YYYY-mm-dd"));
dateTime+="#";
sqlFormat(L"insert into tbl_Table values(%s)",(LPSTR)(LPCTSTR)dateTime);
insert into tbl_Table values(#2013-04-15 23:01#)"
"select date(field_name) from tbl_Table"
"select time(field_name) from tbl_Table"
"select Format(field_name, "yyyy-mm-dd") from tbl_Table"
"select Format(field_name, "hh:ss") from tbl_Table"
你可以用CString的ReverseFind方法来查找,代码如下:
CString str = "@111#222@333";int index = strReverseFind('@');
CString::ReverseFind
int ReverseFind( TCHAR ch ) const;
返回值:
返回此CString对象中与要求的字符匹配的最后一个字符的索引;如果没有找到需要的字符则返回-1。
参数: ch 要搜索的字符。
说明:
此成员函数在此CString对象中搜索与一个子串匹配的最后一个字符。此函数类似于运行时函数strrchr。
以上就是关于MFC实时获取编辑框里的字符数全部的内容,包括:MFC实时获取编辑框里的字符数、MFC中如何读取编辑框中的字符串,转换为CTime类型,然后插入到Access数据库中的CTime类型、MFC 字符串查找字符问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)