
MFC
文章平均质量分 63
enjolras
这个作者很懒,什么都没留下…
展开
-
MFC遍历目录
<br />很久之前就用到了,今天再次用到遍历目录,记录如下:<br />若用*.jpg或者类似的,不能找到子文件夹,因为目录不在*.jpg的范围内。<br />isdot是用来判断是否./或者../,每个文件夹都有这样两个隐藏的目录,代表当前目录与上级目录,若不排除这两种情况将导致死循环。<br /> <br />void CTestDlg::ergodicDir(CString strDir)<br />{<br /> CFileFind tempFind; <br /> TCHAR sTempFil原创 2010-12-28 18:09:00 · 1135 阅读 · 0 评论 -
获得窗口指针
<br /><br />获得CWinApp: <br /> <br />-在CMainFrame,CChildFrame,CDocument,CView中直接调用AfxGetApp()或用theApp <br /> <br />-在其它类中只能用AfxGetApp() <br /> <br /> <br /> <br />获得CMainFrame: <br /> <br />-在CMinApp中用AfxGetMainWnd()或者m_pMainWnd <br /> <br />-在CChildFrame中可转载 2010-11-21 19:41:00 · 1015 阅读 · 0 评论 -
AfxBeginThread和AfxEndThread
<br /><br />启动线程:<br /> <br />CWinThread* AfxBeginThread( 线程函数,this );<br /> <br />线程的退出:<br /> <br />在刚刚使用的时候,退出线程的方法有问题,导致退出的时候异常。<br /> <br />下面说线程退出的方法:<br /> <br />1.线程函数返回<br /> <br />线程都在死循环中,当满足一定条件时,return,也会将线程结束。<br /> <br />2.AfxEndThread<br />转载 2010-11-21 19:43:00 · 2425 阅读 · 0 评论 -
设置窗口类名
<br /><br /> 在DOC/VIEW结构的应用程序中,要修改主窗口(CMainFrame)的类名,可以利用超类化技术。关于超类化还可以参考浅谈MFC中超类化技术的实现。但是超类化技术对基于对话框基础的应用程序是没有效果。如何修改呢?先看看用超类化改DOC/VIEW结构形式。超类化技术一般有如下几个步骤:<br /> 1. 通过调用 GetClassInfoEx 来获得想要进行超类化操作的窗口类的信息。函数GetClassInfoEx 需要一个指向 WNDCLASSEX 结构的指针,用于当成转载 2010-11-21 19:43:00 · 1791 阅读 · 0 评论 -
启动程序进程不显示程序窗口
<br /><br />工作中遇到的问题。<br />对这种简单的烂大街东西了,百度百科还是蛮好用的。不过对自己解决问题的思路与效率还是满意的。代码如下:<br />void CtestHideDlg::OnBnClickedButton1()<br />{<br />// TODO: 在此添加控件通知处理程序代码<br />//MessageBox(_T("1111"));<br />CString strFilePath;<br />strFilePath=GetModulePath (_T("hfs.原创 2010-11-21 20:04:00 · 4079 阅读 · 0 评论 -
VC 查找进程,关闭进程
<br /><br />比较简单的东西,不管怎么做个记录,本来是想通过发消息的方法关闭,因为是控制台程序,所以就直接 TerminateProcess了。<br />//<br />// FindProcess<br />// 这个函数唯一的参数是你指定的进程名,如:你的目标进程<br />// 是 "Notepad.exe",返回值是该进程的ID,失败返回0<br />//<br />DWORD FindProcess(char *strProcessName)<br />{<br /> DWORD转载 2010-11-21 20:05:00 · 1030 阅读 · 1 评论 -
内存泄露解决记录——BSTR字符串释放与VARIANT类型的释放
发现的内存泄露有两种,一种是上篇提到的,某些窗口没有用DestroyWindow来释放资源,而是自己写的一个ForceClose函数,这导致了某些函数没被调用,比如PostNcDestroy。另外就是一个内嵌浏览器中使用到的BSTR字符串没有释放造成的问题。String Manipulation Functions Descriptions SysAllocStringCreates and initializes a string.SysAllocStringByteLenCreates a zero-t原创 2011-01-19 11:58:00 · 3048 阅读 · 0 评论 -
string头文件与cstring头文件
首先说string的头文件1、包装了std的C++头文件2、旧的C头文件3、旧C头文件的std版本,切记,这不是cstring的头文件原创 2011-01-28 21:34:00 · 14736 阅读 · 0 评论 -
Windows消息大全
消息,就是指Windows发出的一个通知,告诉应用程序某个事情发生了。例如,单击鼠标、改变窗口尺寸、按下键盘上的一个键都会使Windows发送一个消息给应用程序。消息本身是作为一个记录传递给应用程序的,这个记录中包含了消息的类型以及其他信息。例如,对于单击鼠标所产生的消息来说,这个记录中包含了单击鼠标时的坐标。这个记录类型叫做TMsg,它在Windows单元中是这样声明的:typeTMsg = packed recordhwnd: HWND; / /窗口句柄message: UINT; / /消息常量标识符转载 2010-11-21 11:39:00 · 407 阅读 · 0 评论 -
调试用函数:用对话框显示LastError
网上有几个都不太对,下面的代码已经测试通过inline void ShowErrMsg() { TCHAR errorBuffer[1024];memset(errorBuffer, 0, 1024*sizeof(TCHAR));LPVOID lpMsgBuf;DWORD dw = GetLastError();FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,NULL,dw,MAKELANGID(LANG_N原创 2011-01-05 13:00:00 · 2402 阅读 · 0 评论 -
Technical Notes 17 : Destroying Window Objects(销毁窗口对象)
MSDN连接:http://msdn.microsoft.com/en-us/library/5zba4hah.aspx转帖连接:http://blog.youkuaiyun.com/badboyfind/archive/2007/11/28/1906298.aspxDestroying Window Objects(销毁窗口对象)[1]TN017: Destroying Window Objects销毁窗口对象This note describes the use of the CWnd::PostNcDestroy转载 2011-01-05 12:50:00 · 1308 阅读 · 0 评论 -
内存泄露解决记录——窗口资源释放
前段时间在解决代码的内存泄露问题,解决了部分内存泄露问题。http://blog.youkuaiyun.com/enjolras/archive/2011/01/05/6117628.aspx这篇文章起到了很好的指引作用,让我对MFC里宏观方面的释放有了一定了解。总结一下就是:1、推荐用DestroyWindow来销毁窗口(或者从窗口派生的对象)。2、重载PostNcDestroy函数通过调用基类的PostNcDestroy函数,如:Cwnd::PostNcDestroy,以及通过delete th原创 2011-01-07 13:09:00 · 2930 阅读 · 0 评论 -
MFC字符串类型
<br /><br />MFC支持有很多种字符和字符串数据类型,在此将他们整理一下以便记忆。<br /> <br />1. char wchar_t<br />char 这个不用说了是标准c的字符类型,8bit<br /> <br />wchar_t 用来保存UNICODE字符集的类型,16bit<br /> <br />2. CHAR WCHAR TCHAR<br />CHAR 与小写的char等价<br /> typedef char转载 2010-11-21 11:35:00 · 2878 阅读 · 2 评论 -
WPARAM 和 LPARAM
<br />WPARAM常常代表一些控件的ID或者高位底位组合起来分别表示鼠标的位置,如果消息的发送者需要将某种结构的指针或者是某种类型的句柄时,习惯上用LPARAM来传递。转载 2010-11-21 11:38:00 · 567 阅读 · 0 评论 -
ID--HANDLE--HWND三者之间的互相转换
<br />id->句柄hWnd = ::GetDlgItem(hParentWnd,id);<br />id->指针CWnd::GetDlgItem();<br />句柄->idid = GetWindowLong(hWnd,GWL_ID);<br />句柄->指针CWnd *pWnd=CWnd::FromHandle(hWnd);<br />指针->IDid = GetWindowLong(pWnd->GetSafeHwnd,GWL_ID);<br /> id = pWn转载 2010-11-21 11:42:00 · 1121 阅读 · 0 评论 -
DISP_FUNCTION
<br /> <br /><br />DISP_FUNCTION<br /> <br />DISP_FUNCTION( theClass, pszName, pfnMember, vtRetVal, vtsParams )<br /> <br />#include <afxdisp.h><br /> <br />参数:<br />theClass类的名字。<br />pszName函数的外部名字。<br />pfnMember成员函数的名字。<br />vtRetVal指定了函数返回类型的值。<br />v转载 2010-11-21 11:42:00 · 8768 阅读 · 1 评论 -
CMutex CSingleLock
如下为CMutex的类定义class CMutex : public CSyncObject{ DECLARE_DYNAMIC(CMutex)// Constructorpublic: /* explicit */ CMutex(BOOL bInitiallyOwn = FALSE, LPCTSTR lpszName = NULL, LPSECURITY_ATTRIBUTES lpsaAttribute = NULL);// Implementationpublic:原创 2011-05-31 22:02:00 · 5856 阅读 · 3 评论