vc++ 编程零碎

1、要注意字符集的处理和转换

	TCHAR    szCLSID[MAX_PATH];
	TCHAR    szModule[MAX_PATH];
	LPWSTR   pwsz;

	//get the CLSID in string form
	StringFromIID(clsid, &pwsz);

	if(pwsz)
	{
	#ifdef UNICODE
	   lstrcpy(szCLSID, pwsz);
	#else
	   WideCharToMultiByte( CP_ACP, 0, pwsz, -1, szCLSID, sizeof( szCLSID ) / sizeof( TCHAR ), NULL, NULL);
	#endif

2、MFC中的UpdateData(): ture给控件变量赋值,false显示数据到控件。true赋值,false显示

UpdateData(TRUE)是将控件的状态传给其关联的变量,当然你要为控件关联上变量才行。
UpdateData(FALSE)是将控件的关联变量的值传给控件并改变控件状态。
UpdateData刷新的是当前对话框。

UpdateData(true);//用于将屏幕上控件中的数据交换到变量中。
UpdateData(false);//用于将数据在屏幕中对应控件中显示出来。

3、如何知道GetLastError()返回的错误代码的意义?

[问题提出]
GetLastError()返回的是DWORD数字,有的可以查到什么意思,有的却不行,如何解决?

[程序实现]
在你的工程中要用到GetLastError()时,这样写:

{
//获得信息
LPVOID lpMsgBuf; //Windows will allocate
::FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,0, GetLastError(),MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), //默认语言
(LPTSTR)&lpMsgBuf, 0, NULL );

//显示
::MessageBox(0, (LPCTSTR)lpMsgBuf, _T("GetLastError"), MB_OK|MB_ICONINFORMATION );
//lpMsgBuf中是你要的错误提示.

//释放内存
::LocalFree( lpMsgBuf );
}


你可能感兴趣的:(vc++ 编程零碎)