TOP

Visual C++中建立滚动视窗
2014-11-23 20:10:50 】 浏览:9244
Tags:Visual 建立 滚动 视窗

  滚动视窗在应用程序中十分有用,它可以使用户看到比显示器屏幕还

大的窗口。下面有一个建立滚动视窗的实例,在该例中,不仅滚动条会与

视窗相连,而且HOME、PAGE DOWN、PAGE UP和END方向键会与视窗相连。现

将本例中需用到的函数和类作一些必要的说明。

CscrollView类: 它是从Cview类派生出来的,可以支持窗口的滚动。

GetsystemMetrics函数: 它是Window中的函数,可以返回Windows显示屏幕

的高度和宽度。

OnCreate函数: 若Windows发送调用。每次应用要求创建一个窗口时,

WM-CREATE消息都会被发送。在本例中,Onc WM-CREATE消息,在本例中,

Oncreate函数完成一些字初始化操作,如:设置窗口的大小,页的大小和滚

动行的大小。

SetScrollSizes 它是滚动视窗在初始阶段必要的CscrollView类的成员函数。

  该程序的目的是建立一个三倍于屏幕的宽度和高度的大窗口,且有视窗

的中央显示出一个大的矩形,视窗最大化时,用户只能看到矩形的1/9。通

过滚动条或方向键,用户寸可以见到它的全貌,以下是建立滚动视窗的步骤:

  1、运行AppWizard来创建EX例程,其中的Options选项设为lnital Toolbar

Generate Source Comments。

  2、替换CEXCView类,用Visual Workbench的编辑器将ExView.h和ExView.cpp

中所有的CVIEW替换成CScrollView。

  3、利用ClassWizard来加进对WM-CREATE和WM-KEYDOWN消息进行控制的函数,

CLassWizard能够自动地生成Oncreate和OnkeyDown成员函数。

  4、对消息控制函数进行编辑。因为ClassWizard已经自动地为我们生成了函

数的框架,因此,用户只需找到这些框架加入代码即可。

  在OnCreate函数的returm-1语句后中加入代码:

CSize totalSize=CSize(::GetSystemMetrics(SM-CXSCREEN)*3,

::GetSystemMetrics(SM-CYSCREEN)*3);

CSize pageSize=CSize(totalSize.cx/3,totalSize.cy/3);

CSize lineSize=CSize(totalSize.cx/100,totalSize.cy/100);

SetScrollSizes(MM-TEXT,totalSize,pageSize,lineSize);

  在OnKeyDowm函数中加入代码:

switch(nChar){

case VK-HOME:

OnScroll(SB-VERT,SB-TOP,0);

OnScroll(SB-HORZ,SB-TOP,0);

break;

case VDK-END:

OnScroll(SB-VERT,SB-BOTTOM,0);

break;

case VK-UP:

OnScroll(SB-VERT,SB-LINEUP,0);

break;

case VK-DOWN:

OnScroll(SB-VERT,SB-LINEDOWN,0);

break;

case VK-PRIOR;

OnScroll(SB-VERT,SB-PAGEUP,0);

break;

case VK-NEXT;

OnScroll(SB-VERT,SB-PAGEDOWN,0);

break;

case VK-LEFT;

OnScroll(SB-HORZ,SB-PAGEUP,0);

break;

case VK-RIGHT;

OnScroll(SB-HORZ,SB-PAGEDOWN,0);

break;

default:

break;

}

  在OnDraw函数中加入以下代码来代替OnDraw函数中原来的代码:

int x=::GetSystemMetrics(SM-CXSCREEN);

int y=::GetSystemMetrics(SM-CYSCREEN);

pDC->SelectStockObject(GRAY-BRUSH);

pDC->Rectangle(CRect(x-300,y-300,x+300,y+300));

  5、创建,执行程序,在Visual Workench中,在Project菜单中选择Build,然

后再选择Execute,程序就会在滚动视窗中显示一个大的正方形,用户可以通过滚

动条和HOME等方向键来观察它。


Visual C++中建立滚动视窗 https://www.cppentry.com/bencandy.php?fid=55&id=16841

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇用VC++实现异形窗口 下一篇VC6中两个对话框的同时显示