03 2012 档案
摘要:最近在写一个小的应用,要把指定类型的文件扫描出来,然后删除。我把要删除的文件类型和可以使用的文件类型保存在一个ini文件中,这里遇到一个问题:当程序第二次运行的时候,要删除的文件类型或者可以使用的文件类型可能有一个是不正确的,因为我已经在程序中清空了的。后来发现了问题原因,如果你的ini文件中某个key对应的value如果不存在,那么记得清空该value,否则你上次写入的记录还在,再次读取的时候就...
阅读全文
摘要:void CCleanPrjDlg::OnBnClickedButtonDeleteFiles(){ if (m_lcScannedFiles.GetItemCount() == 0) {//当前文件夹无文件 AfxMessageBox(_T("没有符合的文件")); return; } vector<int> vecChecked; //记录被勾选的项 //扫描被勾选的项,并把下标保存在vector中 int nItemCount = m_lcScannedFiles.GetItemCount(); for (int i = 0; i < nItemCo
阅读全文
摘要:以下代码删除含有LVS_EX_CHECKBOXES的list control中被勾选的项,对于删除不含有这种风格的普通list control也可以参考下(实际上就是前面做一点修改):vector<int> vecChecked; //记录被勾选的项//扫描被勾选的项,并把下标保存在vector中int nItemCount = m_lcScannedFiles.GetItemCount();for (int i = 0; i < nItemCount; ++i){ if (m_lcScannedFiles.GetCheck(i)) { vecChecked.push_bac
阅读全文
摘要://判断该目录是否存在HANDLE hDir = ::CreateFile(strFolderPath, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL);if (INVALID_HANDLE_VALUE == hDir){ AfxMessageBox(_T("不存在的路径")...
阅读全文
摘要://遍历文件夹函数void TraverseFolder(LPCTSTR lpPath){ TCHAR szFind[MAX_PATH] = {_T("\0")}; WIN32_FIND_DATA findFileData; BOOL bRet; _tcscpy_s(szFind, MAX_PATH, lpPath); _tcscat_s(szFind, _T("\\*.*")); //这里一定...
阅读全文
摘要:今天完成了统计20G单词文件中单词频率的程序,先生成了一个500M的文件做测试。程序大体是这样的: 我设计了一个缓冲池,用来存放读文件线程读到的单词。缓冲池中有很多缓冲块,每个缓冲块都使用一个我设计的计数器来统计该缓冲块中出现过的单词频率,最后在主线程中合并计数器。 每个缓冲块都有两个事件内核对象,一个表示块可读,一个表示块可写,两个都是自动重置事件对象 整个缓冲池有一个表示完...
阅读全文
摘要:下面的代码从含有多个结束符的字符串中分离出单词来,需要对strtok_s有清楚的认识。这段代码是我在写一个处理文件中单词个数时用来分离读取到的字符串中的单词时写的,亲测可用~ void ParseBuffer(CWordCounter *pCounter, CWordBuffer *buf){ char *strSrc = buf->m_buff; //缓冲块首地址 char *str...
阅读全文
摘要:strcpy_s是strcpy的安全版本,它之所以安全,是因为其在拷贝字符串的时候会有越界的检查工作。以下是strcpy_s的实现代码,在tcscpy_s.inl文件可以找到: /****tcscpy_s.inl - general implementation of _tcscpy_s** Copyright (c) Microsoft Corporation. All right...
阅读全文
摘要:今天要生成一个20G的单词文件,遇到数据边界的问题,这里记下。 要生成这个20G的文件,我首先从一个文件里面读取了一定量的单词,放在缓冲区里面,然后重复把这个缓冲区写入文件。这里我需要计算出循环的次数,如果这么写: __int64 k = 20; //20GB的文件需要循环的次数k = 20 * 1024 * 1024 * 1024 / nStrLen; //nStrLen:缓冲区字符...
阅读全文
摘要:昨天帮人改一个程序,由于不知道以下的内容,走了很多弯路。。。原文可以在msdn中搜索“About Messages and Message Queues ”找到:The system maintains a single system message queue and one thread-specific message queue for each graphical user interface (GUI) thread. To avoid the overhead of creating a message queue for non–GUI threads, all threads
阅读全文
摘要:在《C++ primer》第16.4节有如下一段话: Ordinarily, when we use the name of a class template, we must specify the template parameters. There is one exception to this rule: Inside the scope of the class itself, we...
阅读全文
摘要:1. 在对话框类中添加一个NOTIFYICONDATA变量:NOTIFYICONDATA m_Nid;2. 初始化NOTIFYICONDATA变量//初始化NOTIFYICONDATAm_Nid.cbSize = sizeof(NOTIFYICONDATA); //指定结构体大小m_Nid.hWnd = m_hWnd; //指定接收通告消息的窗口句柄.系统就是通过hWnd和uID来辨别当Shell_NotifyIcon函数调用的时候操作的是哪个托盘图标m_Nid.uID = 0; //应用程序定义的任务栏图标表示符。一个hWnd可以有很多的图标与之关联,这是通过指定不同的uID实现的m...
阅读全文
摘要:为该程序在属性列表里面添加一条记录int CTrainingSystemDlg::OnCreate(LPCREATESTRUCT lpCreateStruct){ if (CDialog::OnCreate(lpCreateStruct) == -1) return -1; //设置标记 ::SetProp(m_hWnd, _T("UniqueMark"), AfxGetApp()->m_hInstance); return 0;}在InitInstance函数中判断标记是否存在,如果存在,则激活含有该标记的程序:HANDLE hMutex = ::CreateMut
阅读全文
摘要:ini文件格式INI文件是由若干个段(section)组成的,每个段中包含若干关键字(key)及相应的值(value)。 例如[IS_OPEN]value=1[CONTENT]value="测试内容"[REJECT_MAIL]reject1=luo@sina.comreject2=book@sohu.com写ini文件BOOL WINAPI WritePrivateProfileString( __in LPCTSTR lpAppName, //section的名字 __in LPCTSTR lpKeyName, //key的值:如果不存在,...
阅读全文
摘要:在InitInstance里面添加:HRESULT CoInitializeEx( void * pvReserved, //must be null currently DWORD dwCoInit //see the following definition to COINIT);typedef enum tagCOINIT { COINIT_MULTITHREADED = 0x0, COINIT_APARTMENTTHREADED = 0x2, COINIT_DISABLE_OLE1DDE = 0x4, COIN...
阅读全文
摘要:有如下继承关系的几个类:以下是类的相关代码://抽象基类:动物类class CAnimal{public: virtual void EatFood(string strSomething) = 0; virtual void Drink(string strSomething) = 0;};//CAnimal的派生类:CMammalclass CMammal : public CAnimal{public: virtual void EatFood(string strSomething) { cout << "CMammal::EatFood()" ...
阅读全文

浙公网安备 33010602011771号