关于MFC设置程序名称的小疑点
关于MFC设置程序名称的小问题
比如,大家在硬盘里新建一个TXT文件,文件名就会显示:
新建 文本文件.txt
文本文件
0KB
我想问的就是下面那两行灰色的,重命名文件也不会没掉放入字体是什么,在MFC中如何设置实现他们。
------解决方案--------------------
我知道楼主要什么东西了
GetFileVersionInfo
VerQueryValue
比如,大家在硬盘里新建一个TXT文件,文件名就会显示:
新建 文本文件.txt
文本文件
0KB
我想问的就是下面那两行灰色的,重命名文件也不会没掉放入字体是什么,在MFC中如何设置实现他们。
------解决方案--------------------
我知道楼主要什么东西了
GetFileVersionInfo
VerQueryValue
- C/C++ code
TCHAR* szFileName; DWORD dwSize = GetFileVersionInfoSize((LPCWSTR)szFileName,NULL); DWORD a = GetLastError(); LPVOID pBlock = malloc(dwSize); GetFileVersionInfo((LPCWSTR)szFileName,0,dwSize,pBlock); char* pVerValue = NULL; UINT nSize = 0; VerQueryValue(pBlock,TEXT("\\VarFileInfo\\Translation"),(LPVOID*)&pVerValue,&nSize); CString strSubBlock,strTranslation,strTemp; strTemp.Format(L"000%x",*((unsigned short int *)pVerValue)); strTranslation = strTemp.Right(4); strTemp.Format(L"000%x",*((unsigned short int *)&pVerValue[2])); strTranslation += strTemp.Right(4); //080404b0为中文,040904E4为英文 //文件描述 strSubBlock.Format(L"\\StringFileInfo\\%s\\FileDescription",strTranslation); VerQueryValue(pBlock,strSubBlock.GetBufferSetLength(256),(LPVOID*)&pVerValue,&nSize); strSubBlock.ReleaseBuffer(); strTemp.Format(L"%s",pVerValue); AfxMessageBox(strTemp); //内部名称 strSubBlock.Format(L"\\StringFileInfo\\%s\\InternalName",strTranslation); VerQueryValue(pBlock,strSubBlock.GetBufferSetLength(256),(LPVOID*)&pVerValue,&nSize); strSubBlock.ReleaseBuffer(); strTemp.Format(L"内部名称: %s",pVerValue); AfxMessageBox(strTemp); //合法版权 strSubBlock.Format(L"\\StringFileInfo\\%s\\LegalTradeMarks",strTranslation); VerQueryValue(pBlock,strSubBlock.GetBufferSetLength(256),(LPVOID*)&pVerValue,&nSize); strSubBlock.ReleaseBuffer(); strTemp.Format(L"合法版权: %s",pVerValue); AfxMessageBox(strTemp); //原始文件名 strSubBlock.Format(L"\\StringFileInfo\\%s\\OriginalFileName",strTranslation); VerQueryValue(pBlock,strSubBlock.GetBufferSetLength(256),(LPVOID*)&pVerValue,&nSize); strSubBlock.ReleaseBuffer(); strTemp.Format(L"原始文件名: %s",pVerValue); AfxMessageBox(strTemp); //产品名称 strSubBlock.Format(L"\\StringFileInfo\\%s\\ProductName",strTranslation); VerQueryValue(pBlock,strSubBlock.GetBufferSetLength(256),(LPVOID*)&pVerValue,&nSize); strSubBlock.ReleaseBuffer(); strTemp.Format(L"产品名称: %s",pVerValue); AfxMessageBox(strTemp); //产品版本 strSubBlock.Format(L"\\StringFileInfo\\%s\\ProductVersion",strTranslation); VerQueryValue(pBlock,strSubBlock.GetBufferSetLength(256),(LPVOID*)&pVerValue,&nSize); strSubBlock.ReleaseBuffer(); strTemp.Format(L"产品版本: %s",pVerValue); AfxMessageBox(strTemp); free(pBlock);