远飞

导航

2014年3月13日

内存泄露导致的原因总结

摘要: 最近再查内存泄露,总结一下自己发现的问题:1.new的东西一定要delete,delete后要将指针指到NULL.且不能有隐式泄露,即中间报错,或者函数return退出时都要释放比如:CFont My_Font=new CFont;delete My_Font;My_Font=NULL;View Code 2.new出的数组也要释放1 char *BlobMsg = new char[lengthRes];2 BlobMsg= (char*)(record[2]);3 4 delete[] BlobMsg;//删除数组时需要delete[],不能只是delete5 BlobMsg=NULL;. 阅读全文

posted @ 2014-03-13 11:25 菲 阅读(480) 评论(0) 推荐(0) 编辑

2013年8月8日

判断多线程是否退出,再创建这个线程。

摘要: 今天做多线程,想实现断网自动重连的功能原来的写法是CWinThread* ptimerThread;if(ptimerThread==NULL){ptimerThread=AfxBeginThread(threadFunTimer,NULL);}发现这样的写法多线程只能调用一次,线程结束后ptimerThread并不跟着变成NULL,再想创建这个线程就不行了。后来问别人才知道,可以通过WaitForSingleObject来判断线程是否结束。加代码如下DWORD m_ret=WaitForSingleObject(ptimerThread->m_hThread,0);if (m_ret= 阅读全文

posted @ 2013-08-08 17:49 菲 阅读(1170) 评论(0) 推荐(0) 编辑

2013年5月14日

c++ 分割字符串存入数组

摘要: 今天做分割字符串想了好多种办法,存入MAP也试过了(MAP按索引取其中内容时不如vector方便),存入动态符串数组也想过了,都很麻烦,后来看了一个人的帖子,可以不用动态数组,用vector容器,用起来很方便CString recvBuffer;//被分割的字符串char * charpoint;charpoint=recvBuffer.GetBuffer(recvBuffer.GetLength()); const char * split = ","; //分割符号char * p;p = strtok (charpoint,split); //分割字符串vector& 阅读全文

posted @ 2013-05-14 17:32 菲 阅读(2903) 评论(0) 推荐(0) 编辑

2013年5月3日

CMFCOutlookBarTabCtrl 不显示了

摘要: 今天修改了一下CMFCOutlookBarTabCtrl中的内容,结果运行时就不显示了,后来查了一下网上,说注册表里写东西了,按CMFCOutlookBarTabCtrl中添加的内容搜的,或者按exe的名称搜都可以,下面都删了就好了 阅读全文

posted @ 2013-05-03 17:40 菲 阅读(710) 评论(0) 推荐(0) 编辑

c++ 获取控件ID

摘要: 今天写MFC程序时,自定义类CViewTree继承至CTreeCtrl,在CViewTree里加双击事件,在主界面动态创建几个CViewTree,在双击事件里根据不同的CViewTree触发的不同的代码,本来以为获取CViewTree的ID或者NAME会很难,后来发现很简单,只需要GetDlgCtrlID()就可以了if (GetDlgCtrlID()==IDD_AdminTree){::MessageBox(NULL, _T("111"), _T("def"), MB_OK);})//IDD_AdminTree在resource.h中定义#define 阅读全文

posted @ 2013-05-03 17:36 菲 阅读(1332) 评论(0) 推荐(0) 编辑

2013年4月19日

c++用CreateWindow画listview

摘要: RECT rcl; //画listview位置 CWindow myWindow; HWND hWndParent = m_hWnd;//本窗口句柄 HINSTANCE HInstance = GetModuleHandle(0);//当前exe实例 myWindow.Attach(hWndParent); myWindow.GetClientRect(&rcl);可以将下面的数字变成rcl对应的x,y,宽,高 hWndListViewB =CreateWindow(WC_LISTVIEW,"",WS_CHILD|LVS_REPORT|LVS_ALIGNLEFT | 阅读全文

posted @ 2013-04-19 09:42 菲 阅读(1383) 评论(0) 推荐(0) 编辑

2013年4月18日

对话框上如何创建视图

摘要: 作者:朱金灿来源:http://www.cnblogs.com/clever101之前有网友问我在对话框上如何创建视图,晚上总结了一些方法。在VS 2005上创建一个基于对话框的工程:CreateView。然后新建一个视图类:CMyView,派生自CView。然后在对话框类CCreateViewDlg上定义一个视图类指针:CMyView *m_pView;为了使得视图创建在指定的区域,在对话框上放一个静态文本控件,资源ID为IDC_STATIC_VIEW。方法一:在对话框的OnInitDialog函数里添加如下代码: BOOL CCreateViewDlg::OnIni... 阅读全文

posted @ 2013-04-18 16:48 菲 阅读(213) 评论(0) 推荐(0) 编辑

在对话框上创建视图的报错-》ASSERT(pParentFrame == pDesktopWnd || pDesktopWnd->IsChild(pParentFrame))

摘要: 作者:朱金灿来源:http://blog.csdn.net/clever101本文拙文《在对话框上创建视图的方法总结》,有网友朋友来邮件反映:在对话框上可以成功创建视图,但是用鼠标单击视图的时候,就会出现Assert错误,说ViewCore.cpp 252行中有错。具体是:CView类的onmouseActive函数中ASSERT(pParentFrame == pDesktopWnd || pDesktopWnd->IsChild(pParentFrame)),出错!下班回家我决心亲自试验一番,我在我的对话框程序上添加了各种鼠标消息,包括WM_LBUTTONDOWN、WM_MOUSEM 阅读全文

posted @ 2013-04-18 16:39 菲 阅读(724) 评论(0) 推荐(0) 编辑

使用自绘控件详细步骤---转

摘要: -->本文的焦点更多地偏重于控件绘制技术而非高级的绘制技术,我们将演练一个简单的示例,其中列表视图控件是一个自定义的绘制,因此项的文本将在创建拼接外观的交替单元中显示为不同的颜色。 创建一个基于 Visual C++ 2005 对话框的项目,名为 ListCtrlColor。从 Class View 中选择 Project 菜单选项,并单击 Add Class 调用 Add Class 对话框。从分类列表中选择 MFC,然后从模板列表中选择 MFC Class。单击 Add 按钮,调用 MFC Class Wizard 对话框。对于 Class name,键入值 CListCtrlWit 阅读全文

posted @ 2013-04-18 16:32 菲 阅读(273) 评论(0) 推荐(0) 编辑

2013年3月19日

MYSQL创建外键时报err-150

摘要: 今天在创建mysql外键时,总报不能创建表,err-150,后来研究发现有以下几个问题/*学院DROP TABLE IF EXISTS `Department`;*/CREATE TABLE `Department` ( `DepartmentID` int(11) NOT NULL AUTO_INCREMENT,----------学院表中的主键类型int(11) `DepartmentName` varchar(32) DEFAULT NULL, PRIMARY KEY (`DepartmentID` )-----------------学院表中的DepartmentID在系表中是外键,则 阅读全文

posted @ 2013-03-19 16:06 菲 阅读(328) 评论(0) 推荐(0) 编辑