由于编译课程的需要,最近在用VC做一个简单词法分析器,期间遇到了一些问题,在此记录一下,希望于人于己都能有所帮助
一.关于Cstring 与 char*的转换问题:
这是一个老生长谈的问题了.
以 CString a ; char * b为例
1. char* -> CString
a.Format("%s",b)即可把char *b转换为CString 型了
同样的,CString类的 format函数还可以将其他类型的数据转换成CString型 , 例如a.Format("%d",c)即可把一int
型的数据c转换成CString
2.CString -> char*
方法1.b = a.GetBuffer(a.GetLength())
不过在结束时要注意 a.ReleaseBuffer()
方法2. b= (LPCTSTR)a
两者区别:
前者是转换为动态char空间,可对b中的内容进行修改.
后者则是转换为const char*,适用于作传入函数的参数时用.
二. 如果不小心删除了rs文件夹,恢复后出现"该文件夹已经在其他文件中打开"的情形
只要删除opt ,与 ncb文件,重新编译一下即可
三. 如果编程过程中代码提示突然不见了,只要删除ncb文件,重新编译一下即可
四. 要在主窗口外获取窗口控件的指针
theApp.m_pmainwd -> GetdlgItem( IDC_XXX)
IDC_XXX :资源名
但是有个问题还未搞明白,为什么theApp.m_pmainwd-> XXX 无法调用我新建的成员函数与成员变量,只能调用原先就有的变量与函数