解决方案 »
- VC2010 如何把 DLL工程 转为exe工程
- LNK2024,程序无法启动
- ********继续散20分,第10个人进来后结贴,为的是细水长流**********
- 小问题
- 菜鸟问题,请问 VC 中有没有像 Delphi 中的 packed record 数据类型
- 如何改变组合框下拉列表的高度?
- 知道一个ICREATE 接口,,如何实例化该接口,建立一个 CCREATE 对象(在线等待)
- 关于序列化
- 如何获得CMSFlexGrid 的滚动条 消息
- MFC OnPaint 绘图概率性出现绘图全黑的问题
- NTDLL.DLL:0xC0000005:Access Violation
- 类名和文件名可以不一样么?
int FuncA(LPCTSTR lpstr)
{
if (lpszAppName != NULL)
strcpy(m_pszAppName, lpstr);
else
m_pszAppName = NULL;
}LPCTSTR,这个懂吗?lpstr,这个懂吗?相同的道理
指定应用程序的名字。应用程序可以从传递给CWinApp的构造函数的参数中得到,如果其中没有指定名字,则是ID为AFX_IDS_APP_TITLE的资源字符串。如果在资源中找不到应用程序的名字,那么它来自程序的可执行文件名。全局函数AfxGetAppName返回该值。m_pszAppName是const char* 类型的公有变量。
看看这个MSDN的例子就懂了:
// crt_strdup.c#include <string.h>
#include <stdio.h>int main( void )
{
char buffer[] = "This is the buffer text";
char *newstring;
printf( "Original: %s\n", buffer );
newstring = _strdup( buffer );
printf( "Copy: %s\n", newstring );
free( newstring );
}输出:
Original: This is the buffer text
Copy: This is the buffer text
看懂了 m_pszAppName = _tcsdup(lpszAppName);这句代码的意思就是把lpszAppName这个字符串内容复制到变量m_pszAppName中 对吗
是分配字符串lpszAppName长度的内存,然后返回地址指针复制给m_pszAppName
相当于
char *buf = (char *)malloc(strlen(lpszAppName) + 1);
strcpy(buf, lpszAppName);m_pszAppName = buf;
是分配字符串lpszAppName长度的内存,然后返回地址指针赋值给m_pszAppName
相当于LPCSTR buf = (LPCSTR)malloc((_tcslen(lpszAppName) + 1) * sizeof(TCHAR));
_tcscpy(buf, lpszAppName);m_pszAppName = buf;
LPTSTR buf = (LPTSTR)malloc((_tcslen(lpszAppName) + 1) * sizeof(TCHAR));
_tcscpy(buf, lpszAppName); m_pszAppName = buf;