随笔分类 -  C++ MFC

MFC
2010.10.20
摘要:一、关于鼠标的双击 今天遇到了一个问题,view中,单击一个图形没有问题,双击则崩掉。事件的处理是这样的,LBUTTONDOWN的时候,产生一个对象;WM_LBUTTONUP 的时候,根据up时的point,判断如果处理前面生成的对象;所以这是一个匹配操作。但是双击就会崩溃。 后来通过计数发现,在双击时,程序只进入了1次Down,2次up,导致前面的操作没有匹配进行,从而使数据错误。 引用: 如果... 阅读全文

posted @ 2010-10-20 17:55 pjh123 阅读(173) 评论(0) 推荐(0)

2010.10.14 CTypedPtrList 做为参数传递的问题
摘要:例如下定义,typedef CTypedPtrList<CObList, CPnrDrawObject*> CDrawObjList;如果把CDrawObjList做为参数传递,声明没问题,但是调用会报错如void GetExpObjFromDB(CDrawObjList m_expObj)调用就会报错!Error1error C2248: 'CObject::CObject' : c... 阅读全文

posted @ 2010-10-14 17:43 pjh123 阅读(228) 评论(0) 推荐(0)

2010.10.14 如何设置小数点有效位数
摘要:1、console程序中,cout<<setprecision(9);cout<<"pi="<<pi<<endl;2、如果要将浮点数/double,转换成字符串,并设置小数点后位数,如下:float a;str.format("%.6f",a); // .6表示保留小数点后6位。 阅读全文

posted @ 2010-10-14 08:50 pjh123 阅读(389) 评论(0) 推荐(0)

2010.10.13
摘要:1、关于CDC在OnDraw中的使用如下代码://重绘前,重新计算所有图形的位置信息AdjustAllDisplayObj(pDC);//pDC的TextOut在此不发生作用,为什么?AdjuxtAllExpObj(pDC);pDoc->Draw(pDrawDC, this);if (pDrawDC != pDC){pDC->SetViewportOrg(0, 0);pDC->S... 阅读全文

posted @ 2010-10-13 17:54 pjh123 阅读(184) 评论(0) 推荐(0)

2010.9.30
摘要:1、CTypedPtrList、CPtrList的用法2、 阅读全文

posted @ 2010-09-30 17:38 pjh123 阅读(119) 评论(0) 推荐(0)

2010.9.29 今日问题
摘要:1、CDC,如果自己获得了一个CDC,要注意释放。所以最好使用OnDraw传入的DC,由调用者管理2、重画界面后,要及时Invalidate(); 否则会发现没有变化,只有下次触发时,才能看到结果3、当在函数中返回一个map之类的结构时,最好map<int,int>(m_map),什么好处呢?4、typedef CTypedPtrList<CObList, CPnrDrawObj... 阅读全文

posted @ 2010-09-29 17:49 pjh123 阅读(114) 评论(0) 推荐(0)

2010.9.29 DrawArrow画箭头
摘要:引用自:http://wupei.j2megame.org/blog.php/myblog/vc/2008/01/12/arrow-in-mfcMFC中实现的画箭头算法 (Arrow in MFC)在以前做的程序中,曾经需要使用程序来画出一个箭头 但是自己想出的算法又不是太通用 所以在codeproject中寻找到一个这样的算法,在这里介绍一下 可以改变三角形大小,顶点角度,是否填充和填充颜色等 ... 阅读全文

posted @ 2010-09-29 17:45 pjh123 阅读(357) 评论(0) 推荐(0)

2010.9.16
摘要:关于CDockablePane的记忆功能1、VS2008能够记忆CDockablePane的位置和状态,当程序下次启动时,能够以上次关闭之前的状态启动,这些位置信息等是写在注册表里面的。2、程序关闭时,应用程序类调用BOOL CWinAppEx::SaveState(LPCTSTR lpszSectionName /*=NULL*/, CFrameImpl* pFrameImpl /*= NULL... 阅读全文

posted @ 2010-09-16 17:18 pjh123 阅读(438) 评论(1) 推荐(0)

2010.9.16 MFC常用控件用法
摘要:一、CheckBox 1、通过id ,判断一个checkBox是否被选中 int ncheck=((CButton*)GetDlgItem(IDC_CHECK13))->GetCheck(); 返回结果:1/0 阅读全文

posted @ 2010-09-16 13:31 pjh123 阅读(231) 评论(0) 推荐(0)

2010.9.10 周末任务
摘要:一、实验一下资源拷贝 1、Copy对话框对应类: 将对话框对应的类文件(.h,.cpp)拷贝到另一个工程。 这时,在类的.h文件中,会发现有“enum { IDD = IDD_DIALOG1 };”未定义的错误, 需要在目标工程中添加: (1)、#define IDD_DIALOG1 129 (2)、在对话框类的.h文件中,添加 #include "resource.h" ... 阅读全文

posted @ 2010-09-10 17:21 pjh123 阅读(163) 评论(0) 推荐(0)

2010.9.9
摘要:1、如果在程序启动时,调整主框架、View大小,显示合适大小? 可以计算view 中边缘控件的位置,然后在其基础上,加上适当大小,做为主框架的大小。 CRect rect; this->GetWindowRect(rect); //GetParentFrame()->MoveWindow(rect,TRUE); CRect rect2; m_btn_Update.GetWindow... 阅读全文

posted @ 2010-09-09 17:50 pjh123 阅读(165) 评论(0) 推荐(0)

2010.9.8 CView的绘图(OnEraseBkgnd、OnCtlColor、OnPaint)
摘要:函数:OnPaint()函数:BOOL CPnrNavCtrlView::OnEraseBkgnd(CDC* pDC)函数:HBRUSH CPnrNavCtrlView::OnCtlColor(CDC* pDC,CWnd* pWnd,UINT nCtlColor)1、OnEraseBkgnd()可以用于绘制背景色COLORREF m_crBackground; CBrush m_wndbkBrus... 阅读全文

posted @ 2010-09-08 17:49 pjh123 阅读(854) 评论(0) 推荐(0)

2010.9.6 OnPaint/OnDraw
摘要:一、假如我在一个表中的单文档应用程序中,重载了OnPaint()、OnDraw() 为什么窗口无效时,只调用了OnDraw()?而没有调用到本地View(即应用程序view )中的OnPaint()呢?跟踪发现直接调用的是CView的OnPaint,为什么呢?二、这几天使用了VS2008的一些新控件,有如下: CMFCMenuButton、CMFCButton,请注意其用法,程序完成之后需要总结。... 阅读全文

posted @ 2010-09-07 18:28 pjh123 阅读(266) 评论(0) 推荐(0)

2010.9.6
摘要:一、如果在程序中涉及Socket,那么需要在应用程序的BOOL CPnrNavCtrlApp::InitInstance()函数中,做Socket初始化工作,如下: if (!AfxSocketInit()){AfxMessageBox(_T("初始化socket失败"));return FALSE;}仅仅如上是会报错的,还需要在stdafx.h中加入头文件信息:#include <afxs... 阅读全文

posted @ 2010-09-06 17:45 pjh123 阅读(124) 评论(0) 推荐(0)

2010.9.4
摘要:9.1-9.3周三到周五主要研究了VS2008里面Office 2007风格的框架设计1、Office2007风格框架主要用了新类库 CMFCRibbonBar,就是上面的工具条带型地带,继承于一个CPane; CMFCRibbonCatalogy,一个菜单对应的,就像一个tab CMFCRibbonPanel,一个组合区域 CMFCRibbonButton等按钮控件。 主要是想研究一下,是否可... 阅读全文

posted @ 2010-09-04 08:00 pjh123 阅读(213) 评论(0) 推荐(0)

2010.9.4 周末解决如下疑问
摘要:1、MFC中重绘的意义,(OnDraw OnPaint),何时重绘? 什么情况需下重绘? 比如在View中create了一个控件,需不需要重绘? 在Dialog中拖入控件,或Create控件,为什么不需要重绘? 在FormView上拖入控件,为什么也不需要重绘? CDC和CBrush什么区别、分别怎么用?(CDC、CWindowsDC、CClientDC、CPaintDC) 文档数据发生变化时,会... 阅读全文

posted @ 2010-09-04 07:51 pjh123 阅读(316) 评论(0) 推荐(0)

2010.8.31
摘要:1、关于函数返回对象 在函数内部声明一个对象,是在栈上声明了给对象,当函数退出时,会释放对象,如下:class A{}void fun1(){ A m_Aobj;}m_Aobj的作用于仅限于fun1();2、如果想把函数内部声明的对象返回到函数外面,容易范如下错误A* fun1(){ A m_Aobj; return &m_Aobj;}这样是不对的,当fun1()结束时,m_Aobj已经销... 阅读全文

posted @ 2010-08-31 18:00 pjh123 阅读(120) 评论(0) 推荐(0)

2010.8.30 MFC消息的传递路线图
摘要:见图片菜单消息被View捕获.JPG菜单消息被Doc捕获.JPGOnNodify消息捕获.JPG 阅读全文

posted @ 2010-08-30 18:01 pjh123 阅读(247) 评论(0) 推荐(0)

2010.8.30
摘要:两个计时的函数:1、getLocaltime()2、getTickcount()都是WIN API的 阅读全文

posted @ 2010-08-30 17:57 pjh123 阅读(119) 评论(0) 推荐(0)

2010.8.21 一定要弄明白
摘要:看下面这个流程:1、BOOL CtestDlgApp::InitInstance(){pDocTemplate = new CSingleDocTemplate(IDR_MAINFRAME,RUNTIME_CLASS(CtestDlgDoc),RUNTIME_CLASS(CMainFrame), // 主 SDI 框架窗口RUNTIME_CLASS(CtestDlgView));if (!pDoc... 阅读全文

posted @ 2010-08-21 08:48 pjh123 阅读(372) 评论(0) 推荐(0)