
杂项笔记
mfmfmmf1
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
MFC GetChildItem(NULL)什么意思
void CLeftView::OnInitialUpdate(){ CTreeView::OnInitialUpdate(); if(this->m_Tree.GetChildItem(NULL)) return; //这句是用来做什么的?...}//m_Tree就是this->GetTreeCtrl()这句话翻译过来,就是:如果获取第一个原创 2015-04-28 17:43:20 · 1029 阅读 · 0 评论 -
assert在release版本中仍可生效
ssert在程序的release版本中仍然有效(不要与VC中的ASSERT混淆),要使assert失效,只有在包含assert头文件(assert.h)的语句前定义NDEBUG宏或在编译器参数中添加-DNDEBUG参数。********************************************************相关文章转载************************转载 2015-04-28 06:52:15 · 1219 阅读 · 0 评论 -
MFC 结构体SData 转化为DWORD 是什么意思
struct SData { //存储下拉列表的图标和文字信息 UINT nImage; CString szText; };//CComboBox自定义派生类中一个成员函数内DWORD x=(DWORD)pData; this->SetItemData(i,x);DWORD_PTR就是DWORD,DWORD就是LONG,或ULONG。你可以这样:student原创 2015-04-28 06:56:29 · 726 阅读 · 0 评论 -
变量的生命周期
void CMYDlg::OnBnClickedButton1(){ int x=123;int *y=new int;int *z=new int;y=&x;*z=x;m_dwordA=(DWORD)&x;m_dwordB=(DWORD)y;m_dwordC=(DWORD)z; //m_dwordA B C都是类的成员变量}m_dword A B C哪个成员变量能成功原创 2015-04-28 06:58:16 · 649 阅读 · 0 评论 -
MFC ON_NOTIFY_EX消息是干什么用的?
BEGIN_MESSAGE_MAP(CtpDlg, CDialogEx) ON_NOTIFY_EX(TTN_NEEDTEXT,0,SetTipText) //这一条是干什么的 (SetTipText是一个自定义成员函数)END_MESSAGE_MAP()ON_NOTIFY_EX用来处理控件通知消息WM_NOTIFY 的宏。 形式是:ON_NOTIFY_EX(n原创 2015-04-28 07:08:25 · 2276 阅读 · 0 评论 -
MFC OnCmdMsg函数是干什么用的?
BOOL CMainFrame::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo){ CWnd* pWnd=this->GetFocus();if(pWnd && pWnd!=this && pWnd->OnCmdMsg(nID, nCode, pExtra, pHandlerInfo)原创 2015-04-28 17:45:57 · 2278 阅读 · 0 评论 -
字符型指针为什么不能修改单个字符?
char *p="hello";*p='k'; //编译能通过,但是运行到这里会出错因为p指向的是一个字符串常量. 所以运行时发现要改常量区就会报错.改成:char* p = (char*)malloc(6);strcpy(p,"hello");*p='k';....free(p);原创 2015-04-28 17:48:52 · 679 阅读 · 0 评论 -
MFC中 CCmdUI类是干什么用的?
CCmdUI。它仅在一个CCmdTarget派生类的ON_UPDATE_COMMAND_UI处理程序中使用。当用户在应用的下拉菜单时,要确定每个菜单项的显示状态——允许存取或禁止存取。菜单命令的目标通过实现一个ON_UPDATE_COMMAND_UI处理来提供这些信息。可以使用ClassWizard来浏览定位应用中的命令用户接口对象,然后为它建立一个消息映射入口,并为每个消息处理函数提供函原创 2015-04-28 17:55:53 · 1096 阅读 · 0 评论 -
MFC 可不可以用CTime 代替 COleDataTIme?
COleDataTIme精度更高,表达的年份更多。CTime使用的是一个32位整数time_t记录的时间,可表达1970~2038年之间的精确到秒的信息。在64位版本的VS之后,可以表达3000年,但精度还是秒。COleDataTIme使用结构体记录时间,冗余多,精度高。在不需要高精度和更多年份的情况下,可以使用CTime,这个用起来更方便,运算效率更高。追问:20原创 2015-04-28 18:29:41 · 464 阅读 · 0 评论 -
MFC Navigate2是做什么的
对于MFC的类,源码在C:\Program Files\Microsoft Visual Studio\VC98\MFC\路径下,你要查看的OnBeforNavigate2是CHtmlView的一个虚函数,它的定义在AFXHTML.H,和VIEWHTML.CPP中,你在上面的路径下搜索这两个文件就可以了。void CHtmlView::BeforeNavigate2(LPDISPATCH原创 2015-04-28 18:14:25 · 1793 阅读 · 0 评论 -
MFC中, WM_MEASUREITEM 和WM_DRAWITEM 分别是干什么的?
一般用于列表控件、组合框或树形控件,在控件的每个记录被重绘时调用的消息,第一个是用于响应重绘时单一记录的尺寸调整,第二个用于每个单一记录区域内的绘制。原创 2015-04-28 07:03:17 · 726 阅读 · 0 评论 -
MFC 控件richedit
用SetSel时 如果 m_Rrich.SetSel(10,-1);这里的-1是什么意思?CRichEditCtrl::SetSel设置此 CRichEditCtrl 对象中选择。void SetSel( long nStartChar, long nEndChar );void SetSel( CHARRANGE& cr );参数nStartChar原创 2015-04-27 20:53:57 · 463 阅读 · 0 评论 -
函数形参为什么要const+引用
引用的目的是修改,const的目的是不许修改,形参用const &不是自相矛盾么?引用的目的是作为形参的别名,用引用来传递参数不会有副本存在,const的目的是常量,不希望改变形参的别名帮你总结一下:为了避免调用拷贝构造函数原创 2015-04-20 19:25:25 · 1065 阅读 · 0 评论 -
对字符指针使用 scanf,运行时出错是为什么.(对字符数组使用scanf运行不出错)
#include "stdafx.h"#includeint _tmain(int argc, _TCHAR* argv[]){ char *pstr="nice to meet you!"; scanf("%s",pstr); getch(); return原创 2015-04-20 19:20:37 · 785 阅读 · 0 评论 -
MFC中 dc.DrawText()与dc.TextOut()从功能上讲有什么区别?
这根本是两个函数,dc.TextOut(x,y,str)调用的是MFC中CClientDC类的成员函数TextOut,而TextOut(dc,x,y,length)是WIN32的API函数,其中的dc也不是CClientDC而是hdc即指向设备上下文的句柄。就是说前面那个是 类的成员函数,后面那个是 全局函数。原创 2015-04-26 07:15:26 · 2905 阅读 · 0 评论 -
FromHandle与Attach。
通过HDC句柄创建CDC类,有两个方法,一个是FromHandle,一个是Attach。FromHandle用于创建一个临时对象(类),没有独占性,MSDN上的说法是“临时的瞬态对象,不应在外部存储使用”,这种方法消耗小,通常用于临时绘制并且不改变DC属性的情况下。Attach是一个独占的强制方法,创建一个长期使用的对象,通过Map的SetPermanent函数,完成了对象和句柄的捆绑,在释放原创 2015-04-26 20:17:11 · 1101 阅读 · 0 评论 -
vector.capacity()
vector是系统内部管理其长度的。其默认规则是,先申请一片内存,当需要增加元素时,如果元素个数超过已有内存可存放的个数时,再申请一批内存。这里很明显就有了两个长度,一个是元素个数,一个是可以存放元素的个数。其中第一个就是size,第二个就是你问的capaity。在vector初始化的时候是可以给长度的,这个时候就可以将长度设置为20。提问者评价初始化给长度后要接一个clea原创 2015-04-26 20:26:25 · 819 阅读 · 0 评论 -
MFC invalidate FALSE和TRUE的区别
这个函数的说明中,说的很明确:void Invalidate( BOOL bErase = TRUE );参数: bErase 决定了是否要在WM_PAINT消息前发送WM_ERASEBKGND也就是,在默认情况下(TRUE),先发送背景刷新消息,再刷新前景。而FALSE只刷新前景,也就是只触发OnPaint函数。一般来说,这个参数没有太大意义,只有在极个别的透明、优化技巧中才会使用,原创 2015-04-26 20:27:37 · 670 阅读 · 0 评论 -
MFC CComboBox 选择项是空的
高度没设置好原创 2015-04-26 20:29:19 · 1014 阅读 · 0 评论 -
MFC 为按键设置图片怎么不行
在.h中public: CBitmap m_bitmap;在dlg的initiate里CButton *p2=(CButton*)this->GetDlgItem(IDC_BUTTON2); this->m_bitmap.LoadBitmapA(IDB_BITMAP2); p2->SetBitmap(this->m_bitmap);运行效果是这个大按键完全看不见 ( 按键属性O原创 2015-04-27 20:50:58 · 668 阅读 · 0 评论 -
MFC ComboBox怎么设置默认项
这是在类的OnInitDlg()中this->m_Combo.AddString("A"); this->m_Combo.AddString("B"); this->m_Combo.AddString("O"); this->m_Combo.AddString("AB"); this->m_Combo.AddString("其他");那么问题来了 现在程序运行时能进行血型选择但是默认原创 2015-04-27 20:55:37 · 22086 阅读 · 1 评论 -
C++ delete的问题
char *p=new char[20];delete []p; //这句话写成 delete p; 行不行?为什么?当然不行,如果写成那样,20个的char的空间只有第一个被释放原创 2015-04-27 20:48:29 · 381 阅读 · 0 评论 -
这是我的第一篇优快云博客
这是我的第一篇优快云博客我说来复习一下老生常谈的const int 和int sonst 的问题吧!const int *p; //p指向的对象不可改变 p可以改变int * const p; //p指向的对象可以变 p不可以变程序员是我脱离地狱的最佳路径我体验了人间底层的艰苦,与麻木我不喜欢麻木,不喜欢头脑停滞流水线工作在我看来是完全不可原创 2015-03-19 18:53:47 · 407 阅读 · 0 评论