MFC调用短信接口的webservice
项目实现过程:
调用webservice有两种方式,托管和非托管。非托管就是摆脱.net框架
新建MFC应用程序。
添加项目引用(单击项目名称->引用->右键->添加web引用)。
输入接口地址,为web服务命名A(这时候系统就自动生成ATL代码)。
在调用web的文件里,添加命名空间(在生成的A.h文件里)。
用A中生成的类,初始化一个变量,调用webservice中的各种函数。
收获:
编程小知识:
1、模板类使用时,要加模板参数
2、MFC中在继承基类时,用DECLARE_DYNAMIC(class_name)固定声明为基类的一个派生类()
3、UpdateData(TRUE)把控件显示值更新到变量上,UpdateData(FALSE)把变量更新到控件显示上
4、MFC中控件的组属性(Group):当前控件选择Group属性,在下一个控件选择Group属性之间的控件同属于前个组。同一个组,只能有一个被选择。
5、stack around the variable' a' was corrupted->变量a周围的堆栈已损坏。
问题分析:是个内存越界的问题。
有的博客说把project->配置属性->c/c++->代码生成->基本运行时检查为默认值就不会报本异常。
我的解决方案是:把可能超出内存的数组(变量a)开的少大一点。字符类型间的转换:
1、LPCWSTR->wchar_t *;LPCSTR ->char *;LPCWSTR->const wchar_t *;
2、string ->LPWSTR L"字符串"
3、_T("字符串")变char->LPCSTR
4、CString <wbr>-><wbr><wbr>LPWSTR:<wbr></wbr></wbr></wbr></wbr>
<wbr><wbr>use <wbr><wbr>MultiByteToWideChar<wbr><wbr><wbr><wbr><wbr><br><wbr>CString <wbr><wbr>astring("ssss");<wbr><wbr><br><wbr>LPWSTR <wbr><wbr>pointer; <wbr><wbr><br><wbr>pointer=(LPWSTR)(LPCTSTR)astring;</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
5、LPWSTR <wbr>-> <wbr><wbr>CString:<wbr></wbr></wbr></wbr></wbr>
<wbr>LPWSTR <wbr><wbr>s;<wbr><wbr>CString <wbr><wbr>cs <wbr><wbr>= <wbr><wbr>s;</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
6、int->String:
char t[];int n;
sprintf(t,“%d”,n);
7、char []->CString
char code[10];CString m_str;
m_str.Format("%s",code);
8、
CString-》void *
(void*)LPCTSTR(buf)
9、
CString-》char *
(LPSTR)(LPCTSTR)str
10、CString-》char []
.CString s1="ad";
char s2[256];
strcpy(s2,s1);