您的位置:首页 > 其它

VS 2005中VC.NET遇到的几个问题

2006-07-25 01:06 330 查看
MessageBox("asdf");
出错信息:
error C2664: “CWnd::MessageBoxW”: 不能将参数1 从“const char [3]”转换为“LPCTSTR”

原因:2005默认的"使用 Unicode 字符集",解决:在你建立的解决方案的工程文件的属性看到选"配置属性"的"字符集"请选择"使用多字节字符集"就可以了。
你用2005打开2003的文件时候不会出现的这样的错误,是因为编译环境在转换过程中进行了转换.

在修改的时候还遇到一个问题,就事GetWindowTextA和GetWindowTextW的问题,如果使用的是Unicode字符集,那么GetWindowTextW,如果是多字节字符集,就用GetWindowTextA。具体如何还请高手指明。
不过使用GetWindowText都不会出错,它应该是个宏吧?不对不要笑话啊。

关于几个函数:
CWnd::GetDlgItem

CWnd* GetDlgItem(
int nID
) const;
void GetDlgItem(
int nID,
HWND* phWnd
) const;


MSDN解释:
Retrieves a pointer to the specified control or child window in a dialog box or other window.
返回一个指向Dialog窗体或其他窗口的指定控件或子窗体的指针。

CWnd::GetWindowText
http://msdn2.microsoft.com/en-us/library/db50wx7h(d=ide).aspx
语义很直接,以上2个经常一起用,如:
if(GetDlgItem(IDC_NUMBER3)->GetWindowText(str),str=="Number3:") //IDC_NUMBER3是个静态文本
{
GetDlgItem(IDC_NUMBER3)->SetWindowText("数字3");
}
还有如果想要静态文本控件相应单击、双击事件,需要设置它的属性Notify为TRUE;ID也需要改了,然后就可以添加事件处理程序了。

以上己见,不对之处望指明。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: