<<技术内幕>>十九章开始讲切分窗口的问题,老弟我有两个问题想请教1、在EX19A的例子中,出现CLogScrollView类和CStringView类。我不知道它们的头文件和实现文件是怎样创建的?
CLogScrollView类的.cpp表明该类是派生于CView类,而在CLassWizard中却看不到CLogScrollView类,为什么?
CStringView类派生于CLogScrollView,而它在CLassWizard中能看见?
2、在讲解EX19B时,作者说“我们对EX19A进行了扩充,在其中定义了第二个视图类,并且允许对窗口进行静态切分,以便在其中显示两个视图”。难道EX19A的CLogScrollView类和CStringView类中的CLogScrollView类不是视图类吗?为什么?
一团浆糊、一团浆糊!大伙儿救救我吧!
CLogScrollView类的.cpp表明该类是派生于CView类,而在CLassWizard中却看不到CLogScrollView类,为什么?
CStringView类派生于CLogScrollView,而它在CLassWizard中能看见?
2、在讲解EX19B时,作者说“我们对EX19A进行了扩充,在其中定义了第二个视图类,并且允许对窗口进行静态切分,以便在其中显示两个视图”。难道EX19A的CLogScrollView类和CStringView类中的CLogScrollView类不是视图类吗?为什么?
一团浆糊、一团浆糊!大伙儿救救我吧!
解决方案 »
- 打印与打印预览模块--基于对话框中的打印预览上面的“打印”按钮不可用?
- 3D游戏场景管理
- 如果电脑没有安装Excel 2003,能否引用Excel Com库??
- 我想在自己创建的Button按钮上既有位图或图标,又有标准的文字!不知怎么处理?
- 请教:打印时字体的小问题,大侠们帮小弟一下。
- LPCTSTR 类型的变量怎么定义和付值?
- 如何使用CHtmlView
- 请问能在两个线程中分别同时对一个Socket进行Send和Receive操作吗?这样会有问题吗?
- 请问,怎么可以给程序加点SKIN功能啊?
- 求助大神们,MFC,bmp图像显示出问题,在线等
- 关于帮助文件——关于vc中运行chm文件[求助]
- vc 和oracle的oci编程?
所有类都应该在CLassWizard看见,如果没出现的话,教你个方法。
先关闭项目,然后到工程目录下,删除一个管理类的临时文件就OK了,文件后缀忘了,VC创建工程后会生成4个临时文件,自己找找吧!反正不是CPP,C,H后缀的文件。删除后,在打开项目,会弹出一个对话框,应该是问你有关本工程类的情况,选全部加入就行了。在CLassWizard中就可以找到全部的类了!
里面有{{//afx_xxx之类的。而且CStringVeiw类能看见,该怎么办?欢迎大家讨论!
class A
{
public:
int i;
};
然后存成一个cpp文件。
在用project->add to project->files加入某一个工程,你会在classview中看到有A这个类,但是class wizard里却没有
至于你说的第二个问题,我在我的书中没找到你以用的那句话,我看的是第五版
CStringView类的文件是appwizard生成的,所以 .....
CLogScrollVierw中有象{{//afx_xxx之类的东西!
CStringView类的文件是appwizard怎样生成的呢?
你若有兴趣,给我你EMAIL。我把源码发给你!
[email protected]
你删除.clw,重新添加CLogScrollView试试,应该是这样问题呀
不错!你若在workspace中能看见这两个类。但你用classwizard只能看不见
CStringView,却看不见CLogScrollView.
不错!你若在workspace中能看见这两个类。但你用classwizard只能看见
CStringView,却看不见CLogScrollView.
你可以这样做(1)新建一个项目,然后在这个项目中Insert new class(添加新类)CLogScrollView类,它的基类为CView类,完成这个基类的定义与实现。上面这些对你来说应很容易做到。(2)下面做的很简单了,在你需要的项目中(比如你上面的这个例子程序)Add File To Folder(添加文件到项目中)将你要的CLogScrollView类的源文件添加到项目中,即后缀为.cpp和.h的文件。CStringView类为你用wizard添加的类,其基类为CLogScrollView类。
(3)完成上述操作后,你就会看到你的问题中的现象了!
class A
{
public:
int i;
};
然后存成一个cpp文件。
在用project->add to project->files加入某一个工程,你会在classview中看到有A这个类,但是class wizard里却没有
至于你说的第二个问题,我在我的书中没找到你以用的那句话,我看的是第五版
CStringView类的文件是appwizard生成的,所以 .....
1、把*.clw,*.ncb,*.aps删掉,重新打开工程,可以看到CLogScrollView类,Visual Studio的问题
2、CLogScrollView和CStringView,你把它叫做视图类也好,视图的派生类也好,文字而已
不错,这样做了以后,我的CLogScrollView类在classwizard里能看见了。问cnwww:
好的,我听你的。我先把classwizard生成的和工程文件名一样的视类文件给删掉。然后添加CLogScrollView类。按上面的解说1,我也能在classwizard中看见该类了。
但是CStringView是CLogScrollView类的派生类,我在classwizard中添加新类时,在base class栏却揪不出CLogScrollView类,我怎么生成CStringView呢?
再问大伙:
.ncb,.aps,.opt分别是什么样的后缀名呢?
欢迎各位赐教!
下面的这个,麻劳各位帮帮忙。很快就结贴的!
.ncb,.aps,.opt分别是什么样的后缀名呢?
virtual void OnDraw(CDC* pDC) = 0; // pass on pure virtual。
可怜,complie又出问题了。
error C2259: 'CStringView' : cannot instantiate abstract class due to following members:
e:\luof\myvc\444\stringview.h(13) : see declaration of 'CStringView'
为什么?
我们来模拟那个CLogScrollView的.cpp文件,因它是由CView派生来的,我们依葫芦画瓢,把该.cpp文件的虚函数OnDraw也删除。然后,在其头文件添加protected:
virtual void OnDraw(CDC* pDC) = 0; // pass on pure virtual。
可怜,complie又出问题了。
error C2259: 'CSLogScrollView' : cannot instantiate abstract class due to following members:
e:\luof\myvc\444\LogScrollView.h(13) : see declaration of 'CLogScrollViewView'
为什么?
//
/////////////////////////////////////////////////////////////////////////////
#ifndef _LOG_TWIPS_SCROLL_VIEW
#define _LOG_TWIPS_SCROLL_VIEW #define CX_BORDER 1
#define CY_BORDER 1class CLogScrollView : public CView
{
DECLARE_DYNAMIC(CLogScrollView)// Constructors
protected:
CLogScrollView();public:
void SetLogScrollSizes(SIZE sizeTotal); // in logical units// Attributes
public:
CPoint GetScrollPosition() const; // upper corner of scrolling
CSize GetTotalSize() const; // logical size // for device units
CPoint GetDeviceScrollPosition() const;// Operations
public:
void ScrollToPosition(POINT pt); // set upper left position
void FillOutsideRect(CDC* pDC, CBrush* pBrush);
void ResizeParentToFit(BOOL bShrinkOnly = TRUE);// Implementation
protected:
CSize m_totalLog; // total size in logical units (no rounding)
CSize m_totalDev; // total size in device units
CSize m_pageDev; // per page scroll size in device units
CSize m_lineDev; // per line scroll size in device units BOOL m_bCenter; // Center output if larger than total size
BOOL m_bInsideUpdate; // internal state for OnSize callback
void CenterOnPoint(CPoint ptCenter);
void ScrollToDevicePosition(POINT ptDev); // explicit scrolling no checkingprotected:
virtual void OnDraw(CDC* pDC) = 0; // pass on pure virtual void UpdateBars(); // adjust scrollbars etc
BOOL GetTrueClientSize(CSize& size, CSize& sizeSb);
// size with no bars
void GetScrollBarSizes(CSize& sizeSb);
void GetScrollBarState(CSize sizeClient, CSize& needSb,
CSize& sizeRange, CPoint& ptMove, BOOL bInsideClient);public:
virtual ~CLogScrollView();
#ifdef _DEBUG
virtual void Dump(CDumpContext&) const;
#endif //_DEBUG
virtual void CalcWindowRect(LPRECT lpClientRect,
UINT nAdjustType = adjustBorder);
virtual void OnPrepareDC(CDC* pDC, CPrintInfo* pInfo = NULL); // scrolling implementation support for OLE
virtual BOOL OnScroll(UINT nScrollCode, UINT nPos, BOOL bDoScroll = TRUE);
virtual BOOL OnScrollBy(CSize sizeScroll, BOOL bDoScroll = TRUE); //{{AFX_MSG(CLogScrollView)
afx_msg void OnSize(UINT nType, int cx, int cy);
afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
#endif _LOG_TWIPS_SCROLL_VIEW 再问,既然SLogScrollView是CView的派生类,它的OnDraw函数的处理我实在是不明白。请赐教!
File Extension Description APS Supports ResourceView
BSC Browser information file
CLW Supports ClassWizard
DEP Dependency file
DSP Project file*
DSW Workspace file*
MAK External makefile
NCB Supports ClassView
OPT Holds workspace configuration
PLG Builds log file
* Do not delete or edit in a text editor.
CStringView是在用appwizard时指定的view类名称,把appwizard指定的默认类名改了.在哪里改呀?
马上就结,我要吃饭去了。
>>问YINX:
>>CStringView是在用appwizard时指定的view类名称,把appwizard指定的默>>认类名改了.在哪里改呀?
在application wizard生成框架的最后一步中的class name...
但是CStringView是CLogScrollView类的派生类,我在classwizard中添加新类时,在base class栏却揪不出CLogScrollView类,我怎么生成CStringView呢?
xiaozhou66,生成CStringView类的方法如下:
从菜单中选择Insert new class,在弹出的new class对话框中class type一栏中选择Generic Class,在name一栏中输入CStringView,在Derived From下的一栏中输入CLogScrollView就可以了。
还有不明白的可以再讨论。