初步使用CFileDialog类,感觉似乎不如SDK好用,很多东西没有封装进去。
int main()
{
    CFileDialog m_dlgFile(0, _T(".doc"), 0, OFN_EXPLORER,
        _T("测试打开WORD文档 (*.doc)\0*.doc\0\0"));

    TCHAR szFile[MAX_PATH];
    GetModuleFileName(ModuleHelper::GetModuleInstance(), szFile, _countof(szFile));
    m_dlgFile.m_ofn.lpstrInitialDir = szFile;
    // m_dlgFile.m_ofn.Flags = OFN_EXPLORER; // ★
    m_dlgFile.DoModal();

    CString str(m_dlgFile.m_szFileName);
    wcout.imbue(locale("CHS")); // 控制台输出汉字
    wcout << (LPCTSTR)str << endl;  // 强制转换,否则只能看到数字

    system("PAUSE");
    return 0;
}
Tags: , ,
精确到毫秒级,使用Release版本,VC2003,优化模式。
测试结果说明:std::vector的效率还不错,在循环遍历时,如果千万次的级别,则要注意不要在循环里反复调用v.end(),而应该在循环外面还将v.end()保存。数据量少(100万以下)则无此必要。下面是测试代码,测试结果自己看吧,配置不同,则结果也不一样。
Tags: , , , ,
有一List Control,为“时间+内容”格式,想对所有项在保存时按时间排序,而保存之前是无序插入。初步感觉可以用std::map+sort,一实践,才发现std::map在insert时,就自动排序了(降序),正好符合我的要求,省得用sort了。
Tags: , , ,
今天在读取ini文件时,跟踪发现,字符串"  500"用StrToInt转换后得到的结果是零,而不是预期的500,_tstoi就没有这个问题。
郁闷,看来Str系列字符串操作函数与C库函数的并不能等同。之前发现StrChr无法查找'\0',如今又发现StrToInt无法兼容_tstoi。
看来,想抛弃C库函数还是比较困难的。
例子:
Sound=2000, 500
CString str(Sound); // 伪码
/* 失败
Beep(StrToInt(str.Left(str.Find(','))), StrToInt(str.Right(str.Find(','))));
*/
Beep(_tstoi(str.Left(str.Find(','))), _tstoi(str.Right(str.Find(','))));
Tags: , , ,
在使用Shlwapi.h中的系列函数时,需要:
#include <Shlwapi.h>
#pragma comment(lib, "Shlwapi.lib")

不过,需要注意的是,有些字符串操作函数存在安全隐患,比如StrCpy,需要使用替代函数StringCchCopy,也可以自己写字符串拷贝函数,比如:
VOID StrCopy(PTSTR pszDest, int nMaxCount, PCTSTR pszSrc)
{
    while (nMaxCount && (*pszSrc != '\0'))
    {
        *pszDest++ = *pszSrc++;
        nMaxCount--;
    }
    if (nMaxCount == 0)
    {
        pszDest--;
    }

    *pszDest = '\0';
}
Tags: , , ,
分页: 21/23 第一页 上页 16 17 18 19 20 21 22 23 下页 最后页 [ 显示模式: 摘要 | 列表 ]