C\C++学习 公积金相关帖子汇总 魅族M8SDK学习系列不断更新中 Mini开发小组软件发布

[mininote] 关于记事本的源码,有些没看懂的能否请版主拨冗指点一二

[ 1873 查看 / 6 回复 ]

bool CM8NoteEditWnd::SaveNoteItem()
{
    CMzString newFileName;
    TCHAR szPath[MAX_PATH] = L"";
    if (m_EditType == etAdd)
    {
        if (!GetCurrentPath(szPath))
            return false;

        TCHAR *szGuid;
        GetGuidString(&szGuid);
        CMzString mzGuid = szGuid;

        newFileName = szPath;
        newFileName = newFileName + L"Data\\";
        newFileName = newFileName + mzGuid;
        newFileName = newFileName + L".INI";
        //新建Ini文件
        if (!IniCreateFile(newFileName))
            return false;

    }else if (m_EditType == etEdit)
    {
        newFileName = m_NoteItem.cFileName;   
    }

    if (!FileExists(newFileName))
    {
        return false;
    }
    else
    {
        //写入标题、时间、内容
    IniWriteString(L"Header", L"Title", m_Title.GetText(), newFileName);
        IniWriteString(L"Header", L"DateTime", Now(), newFileName);//
        IniWriteString(L"NoteMain", L"Context", m_Context.GetText(), newFileName);
        return true;
    }
}==================================================================
=======================
Guid是指将要生成的ini文件的惟一标识吗  包含当时写入的时间?
是每一个NoteItem结构写成一个ini文件  还是一个ini文件分很多段,写入很多个NoteItem??
很简单的问题,因为我没有基础 愣没想通  望指点指点
本主题由 皇帝 5207 于 2009-7-4 11:50:52 执行 主题分类 操作
分享 转发
TOP

好像是一个日记一个ini
TOP

是的,我是使用ini文件来存日志的。
使用guid的原因是不用造成文件名重复。
相信与不相信都是矛盾的.  5207宣!
欢迎您来到点滴论坛
TOP

if (FindFileData.cFileName[0] == '.')
                    continue;//继续

'.'是什么意思啊和'..'
TOP

. 和 ..是Windows为了兼容Dos,分别指根目录和父目录,比如在DOS中输入 "cd .."就会回到上一层目录。
所以在显示目录结构时不需要显示这两个,所以要就过滤掉
相信与不相信都是矛盾的.  5207宣!
欢迎您来到点滴论坛
TOP

能否帮看看错在哪里,,我只在后面加两句就错了呵呵。。这样能实现对data文件夹里的ini文件的遍历吗
void CazaoWnd::Load(LPTSTR strDataDir)
{
       
        //m_NoteItems.clear();
        CMzString tmpDataDir = strDataDir;
        //检查Data文件夹是否存在,不存在则创建
        if (DirectoryExists(tmpDataDir))
        {
                /*typedef struct _WIN32_FIND_DATAW {
    DWORD dwFileAttributes;//属性
    FILETIME ftCreationTime;
    FILETIME ftLastAccessTime;
    FILETIME ftLastWriteTime;
    DWORD nFileSizeHigh;
    DWORD nFileSizeLow;
    DWORD dwOID;
    WCHAR cFileName[ MAX_PATH ]*/
                WIN32_FIND_DATA FindFileData;
                HANDLE hFind;
/*功能说明
  该函数到一个文件夹(包括子文件夹)去搜索指定文件 如果要使用附加属性去搜索文件的话 可以使用FindFirstFileEx函数
[编辑本段]
参数说明
  返回值 HANDLE hFindFile搜索的文件句柄 函数执行的时候搜索的是此句柄的下一文件
// file nameLong,如执行成功,返回一个搜索句柄。如果出错,返回一个INVALID_HANDLE_VALUE常数,一旦不再需要,应该用FindClose函数关闭这个句柄
LPCTSTR lpFileName,欲搜索的文件名。可包含通配符,并可包含一个路径或相对路径名  *.* 表示所有文件

  LPWIN32_FIND_DATA lpFindFileData 指向一个用于保存文件信息的结构体
*/
                hFind = FindFirstFile(tmpDataDir + L"*.*", &FindFileData);
                if (hFind == INVALID_HANDLE_VALUE)
                {
                        return;
                }
                else
                {
                       
                        NoteItem noteItem;
                        do
                        {//. 和 ..是Windows为了兼容Dos,分别指根目录和父目录,比如在DOS中输入 "cd .."就会回到上一层目录。
//所以在显示目录结构时不需要显示这两个,所以要就过滤掉
                                //跳过'.''..'      do…while语句:用于首先执行一次循环体语句,然后开始测试循环条件,当条件为‘真’时继续循环的处理过程。语句格式:
                                if (FindFileData.cFileName[0] == '.')
                                        continue;//继续    continue语句会造成当前循环结束,并立即开始下一次循环(在对布尔表达式进行重新求值之后)。

                                if (FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)//文件属性 :目录
                                {
                                        //遍历子文件夹
                                }
                                else
                                {
                                        //找到一个文件
                                       
                                        if (CreateNoteItem(tmpDataDir + FindFileData.cFileName, noteItem))
                                        {
                                                //m_NoteItems.push_back(noteItem);        // insert element at end
CMzStringW  Str2 =noteItem.cTitle+noteItem.cNoteContext;
        CMzStringW Str1=m_Title.GetText();//得到标题栏的输入的查找单词,拿来与ini里的比对。。
        int a;
        a=Str1.Compare ( Str2 );
        if (a<=0){
        m_Context.SetText(Str2);
        }
                                else                          MzMessageBoxEx(m_hWnd,L"搜索为空", L"警告");
                                               
                                        }
                                }
                        }
                        while (FindNextFile(hFind,&FindFileData));
                }
                FindClose(hFind);//关闭句柄
        }
       
}
TOP

MzMessageBoxEx(m_hWnd,L"搜索为空", L"警告");

后面多了一个 "}"
相信与不相信都是矛盾的.  5207宣!
欢迎您来到点滴论坛
TOP