mVideoServerPort
是一个CEdit
类型控件,问题是在vs的自动提示中只能看到GetWindowTextW
这个方法,而这个方法接收2个参数:
然后我这样:
1
2
LPTSTR portStr;
mVideoServerPort.GetWindowTextW(portStr, 6);
VS提示portStr
未初始化。以我的浅见,这是个指向char
的指针啊,那这样:
1
2
3
4
5
// "char *" 类型的值不能用于初始化 "LPTSTR" 类型的实体
LPTSTR portStr = new char[6];
// 下面2个貌似ok
LPTSTR portStr = _TCHAR[6];
LPTSTR portStr = TCHAR[6];
我选用了第三种,也就是LPTSTR portStr = TCHAR[6]
。
接下来字符串转换成数字,我在控件中输入54321
,它却始终只能转换第一个字符,也就是5
。但是如果我直接把portStr
的值写死成“54321”
,转换后的port
却是对的。这尼玛什么情况??
1
int port = atoi((char *) portStr);
Google了一下,发现了这个 atoi only returning first digit of char* parameter。这是个什么情况,看不懂了啊!!
然后就在一个论坛里面看到类似如下的代码,它调用了GetWindowText
。抱着试试看的心态,竟然能通过编译,结果还对了。
1
2
3
4
5
CString portStr ;
mVideoServerPort.GetWindowText(portStr);
USES_CONVERSION;
int port = atoi((char *) W2A(portStr));
这个,VS的智能提示
是个神马情况???
调试的时候,每次启动应用程序,都要出现下面窗口,然后就是没完没了的读条
。
咱也不懂啥是个符号服务器
,直接忽略之,该勾的勾,该删的删,该清的清。