nFrm.h 中修改: public: CStatusBar m_wndStatusBar;//默认为私有,这里改为公有 C、 在 CmyTestView.cpp 中加入#include “MainFrm.h” D、 在视类中的消息响应函数中添加: CSize sz = dc.GetTextExtent(str); CMainFrame *pFrame = (CMainFrame*)AfxGetMainWnd(); pFrame->m_wndStatusBar.SetPaneInfo(1, IDS_STATE, SBPS_NORMAL, sz.cx);
pFrame->m_wndStatusBar.SetPaneText(1, str);
VC++头文件的包含顺序问题。 头文件的包含顺序
问题。 头文件的包含顺序问题
如果顺序不对会有以下错误: error C2143: syntax error : missing ';' before '*' error C2501: 'CMyTestView' :
missing storage-class or type specifiers error C2501: 'pv' : missing storage-class or type specifiers 在任何 cpp 文件的开头都应该以这样的顺序: #include "MyTestDoc.h" #include "MyTestView.h" #include "MainFrm.h" 注意,Doc 的头文件一定要在最前面。这样你的 CDemoView 和 CMyView 也可以共享 一个 CDemoDoc。 一般在 Cpp 中包含文件是要注意类的包含关系,被包含的类定义应该在前面。如果实在 有冲突,可以在一个类的头文件中加:class CXXXDoc;之类的空定义。这样定义过的头 文件中可以用 CXXXDoc 申明指针,但是不能申明实际对象。
几种 DC 之间的区别
CDC 及其派生类的继承视图: Cobject public |------CDC public |------|------CClientDC pub
lic |------|------CpaintDC public |------|------CwindowDC public |------|------CMetaFileDC CClientDC: (客户区设备上下文)用于客户区的输出,与特定窗口关联,可以让开发者 访问目标窗口中客户区,其构造函数中包含了 GetDC,析构函数中包含了 ReleaseDC: 用法是:CClientDC dc(this);//this 一般指向本窗口或当前活动视图 dc.TextOut(10,10,str,str.GetLength());//利用 dc 输出文本,如果是在 CScrollView 中使用, 还要注意调用 OnPrepareDC(&;dc)调整设备上下文的坐标。 CPaintDC 用于响应窗口重绘消息(WM_PAINT)是的绘图输出。CPaintDC 在构造函数 中调用 BeginPaint()取得设备上下文,在析构函数中调用 EndPaint()释放设备上下文。 EndPaint()除了释放设备上下文外,还负责从消息队列中清除 WM_PAINT 消息。因此,在处 理