1> 当使用LoadToolBar的时候,决定工具栏大小(高度)的是工具栏资源button大小 2> 使用CEdit::SetCurBanner 设置其未获得输入焦点时的提示信息 3> 控制ComboBox下拉列表长度: a,在设计界面里,点击一下Combo Box的下拉箭头,此时出现的调整框就是Combo Box的下拉调整框。 b,属性里有个 No integral height 钩选项, 4> MessageBox对话框置顶并使用模态风格: 指定第一个参数(父窗口)为程序主窗口,并使用MB_APPMODAL标志 MessageBox(AfxGetMainWnd()->GetSafeHwnd(),pszMsg,pszCaption,MB_OK|MB_ICONERROR|MB_APPLMODAL); 5> 响应对话框的WM_PAINT消息的时候,要使用CPaintDC,或者使用其他DC但是要调用基类对话框的Paint函数 CBaseDlg::OnPaint(); 6> StrCmpLogicalW 用于比较带数字的字符串, 例如 com10 > com2 7> 对话框OnOK() 中会调用一次UpdateData(true),所以关联于控件的变量值都会得到更新,有时候这可能不是自己想要的结果. 8> CDHTMLDialog 显示滚动条: SetHostFlags(DOCHOSTUIFLAG_NO3DBORDER); 9> 配置工程build后事件copy文件的时候要使用/路径符号,而不是/符号 copy Debug/FreeImaged.dll ../bin 这是正确的. ../bin 是错误的, 而且bin目录必须存在,否则bin将会被当做文件写入,而不是拷贝到bin目录下 10> 单实例模式的类设计要将内置析构器类的成员定义为静态的 class QUIMgr:public IQUIBase { private: static QUIMgr* sm_pSelf; class MgrDeletor { public: ~MgrDeletor() { if (QUIMgr::sm_pSelf != NULL) delete QUIMgr::sm_pSelf; } }; // 此成员一定要是静态的,否则它不会产生析构行为 static MgrDeletor sm_MgrDeletor; } 11>c++内存泄露调试的几个函数: _CrtSetDbgFlag(_CrtSetDbgFlag(_CRTDBG_REPORT_FLAG) | _CRTDBG_LEAK_CHECK_DF); _CrtSetBreakAlloc(543); 12> 防失真的CImageList 加载Bitmap m_ImageList.Create(32,32,ILC_COLOR32|ILC_MASK,8,8); CBitmap bmp; bmp.LoadBitmap(IDB_BAR_COLOR); m_ImageList.Add(&bmp,RGB(239,239,239));
13> 使用API BOOL MakeSureDirectoryPathExists( PCSTR DirPath); 能够一次创建全路径