摘要: //遍历文件夹函数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("\\*.*")); //这里一定... 阅读全文
posted @ 2012-03-24 18:45 kcy-666 阅读(46193) 评论(2) 推荐(5) 编辑
摘要: 今天完成了统计20G单词文件中单词频率的程序,先生成了一个500M的文件做测试。程序大体是这样的: 我设计了一个缓冲池,用来存放读文件线程读到的单词。缓冲池中有很多缓冲块,每个缓冲块都使用一个我设计的计数器来统计该缓冲块中出现过的单词频率,最后在主线程中合并计数器。 每个缓冲块都有两个事件内核对象,一个表示块可读,一个表示块可写,两个都是自动重置事件对象 整个缓冲池有一个表示完... 阅读全文
posted @ 2012-03-23 23:22 kcy-666 阅读(1085) 评论(0) 推荐(0) 编辑
摘要: 下面的代码从含有多个结束符的字符串中分离出单词来,需要对strtok_s有清楚的认识。这段代码是我在写一个处理文件中单词个数时用来分离读取到的字符串中的单词时写的,亲测可用~ void ParseBuffer(CWordCounter *pCounter, CWordBuffer *buf){ char *strSrc = buf->m_buff; //缓冲块首地址 char *str... 阅读全文
posted @ 2012-03-21 18:24 kcy-666 阅读(19079) 评论(0) 推荐(0) 编辑
摘要: strcpy_s是strcpy的安全版本,它之所以安全,是因为其在拷贝字符串的时候会有越界的检查工作。以下是strcpy_s的实现代码,在tcscpy_s.inl文件可以找到: /****tcscpy_s.inl - general implementation of _tcscpy_s** Copyright (c) Microsoft Corporation. All right... 阅读全文
posted @ 2012-03-20 18:42 kcy-666 阅读(23602) 评论(1) 推荐(0) 编辑
摘要: 今天要生成一个20G的单词文件,遇到数据边界的问题,这里记下。 要生成这个20G的文件,我首先从一个文件里面读取了一定量的单词,放在缓冲区里面,然后重复把这个缓冲区写入文件。这里我需要计算出循环的次数,如果这么写: __int64 k = 20; //20GB的文件需要循环的次数k = 20 * 1024 * 1024 * 1024 / nStrLen; //nStrLen:缓冲区字符... 阅读全文
posted @ 2012-03-20 16:27 kcy-666 阅读(4608) 评论(0) 推荐(0) 编辑
摘要: 昨天帮人改一个程序,由于不知道以下的内容,走了很多弯路。。。原文可以在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 阅读全文
posted @ 2012-03-19 10:23 kcy-666 阅读(2010) 评论(0) 推荐(0) 编辑
摘要: 在《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... 阅读全文
posted @ 2012-03-18 11:33 kcy-666 阅读(697) 评论(0) 推荐(0) 编辑
摘要: 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... 阅读全文
posted @ 2012-03-17 11:40 kcy-666 阅读(3936) 评论(0) 推荐(0) 编辑
摘要: 为该程序在属性列表里面添加一条记录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 阅读全文
posted @ 2012-03-16 14:43 kcy-666 阅读(521) 评论(0) 推荐(0) 编辑
摘要: 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的值:如果不存在,... 阅读全文
posted @ 2012-03-16 09:05 kcy-666 阅读(230) 评论(0) 推荐(0) 编辑