请问如何设置CScrollView的背景颜色

westfish_wu 2004-01-02 10:39:32
请问如何设置CScrollView的背景颜色
...全文
81 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
dennis80 2004-01-14
  • 打赏
  • 举报
回复
BOOL CView2::OnEraseBkgnd(CDC* pDC)
{
CBrush br(RGB(0, 255, 0));

CBrush* pOldBrush = pDC->SelectObject(&br);

CRect reClip;

pDC->GetClipBox(&reClip);
pDC->PatBlt(reClip.left, reClip.top, reClip.Width(), reClip.Height(), PATCOPY);
pDC->SelectObject(pOldBrush);

return TRUE;
// return CScrollView::OnEraseBkgnd(pDC);
}
zhaohuiguang 2004-01-02
  • 打赏
  • 举报
回复
在ondraw 中
CRect rect;
GetClientRect(rect);
pDC->FillRect(rect,&CBrush(RGB(0,0,0)));
upuper 2004-01-02
  • 打赏
  • 举报
回复
up
最近做了一个类似Windows画图板的小程序,拿来和大家分享一下。功能和界面全部模仿于Windows自带的画图板,界面如截图。功能主要有: 手绘线、简单图形、文字输入、图块拖放、重复撤销、画面缩放、打开保存图片文件,另外为了直接从数据库或者XML中存取图片,另外还提供了从Base64编码存取图片的接口,其他还实现了和画图板同样效果的工具箱及颜料盒。 1、 绘图: 绘制功能主要在OnLButtonDown、OnMouseMove、OnLButtonUp中实现,根据当前选择的工具和工具的样式进行绘制。程序中每种工具的绘制都是通过一个图元对象实现,比如钢笔、画刷因为本质上都是手绘线所以都通过CDrawPen来实现、直线和矩形等都通过CDrawShape来实现,所有的图元对象都放在文件DrawObject.h中,具体的实现请参见代码。 另外为了避免屏幕的闪烁,程序中做了两个处理:一、把视图自己的重绘背景代码屏蔽掉,即响应视图的WM_ERASEBKGND消息,直接返回TRUE,并在Ondraw中程序自己绘制背景就可以了;二,在Ondraw中绘制的时候,先绘制到内存DC中,然后再贴回视图的DC。这样就基本上就可以避免屏幕的闪烁了。 2、 撤销重做: 由于整个程序较为简单,就没有采用把动作记录下来的方式,只是采取了一个较简单的方法,在每当一个图元绘制动作结束时就把画布的内容存到bmp中以备撤销,这些历史画面存放在一个bmp数组中,并定义了一个Stack类来管理该数组(此实现方式参考了在线杂志21期《类似画笔的绘图控件-卫琳》,在此表示感谢!),然后在屏幕上绘制的时候就是把当前位图贴到屏幕上,并把还没存取位图的图元绘上就行了。 3、 缩放: 一般视图缩放的实现是通过DC的两个函数来实现:SetViewportExt和SetWindowExt,但是这两个函数只在MM_ISOTROPIC和MM_ANISOTROPIC这两种映射模式下有效果,而常用的带滚动条的视图类CScrollView却不支持这两种模式(参见CScrollView::SetScrollSizes)的实现。所以只好把MFC的CScrollView的代码拿过来改了一下以支持MM_ISOTROPIC映射模式,如下所示,具体参见程序文件“ADMMScrollView.h”: ::SetMapMode(hdc,MM_ISOTROPIC); int XLogMm = ::GetDeviceCaps(hdc, HORZSIZE); int YLogMm = ::GetDeviceCaps(hdc, VERTSIZE); int XLogPix = ::GetDeviceCaps(hdc, HORZRES); int YLogPix = ::GetDeviceCaps(hdc, VERTRES); ::SetWindowExtEx(hdc,XLogMm*100,YLogMm*100,NULL); ::SetViewportExtEx(hdc,(int)(XLogPix*fZoomScale), (int)(YLogPix*fZoomScale),NULL); 4、 工具箱: 首先为了实现工具箱的按钮分两列显示的效果,需要设置一下按钮的TBBS_WRAPPED,参见程序中的CToolPaletteBar类;然后,选择不同工具时展现出工具的样式,比如选择“直线”时列出可用的直线宽度样式,该功能通过在ToolBar上放一个CListCtrl实现,当前的工具样式通过图标的方式展现,效果和画图板的类似。 5、 颜料盒: 从CDialogBar类继承了一个类,然后在WM_PAINT响应函数里面绘制一个个小颜色矩形,并重写其OnLButtonDown、OnRButtonDown、OnLButtonDblClk来和用户交互,实现出来的效果还不错,看上去和画图板的颜料盒一样。 6、 鼠标光标样式: 首先在资源文件中增加需要的光标资源,然后在视图的OnSetCursor消息函数中调用SetCursor函数来设置光标样式就可以了,注意要判断HitTest参数是否为HTCLIENT,不然的话鼠标移到了滚动条上的时候光标还是画笔的样式就让人觉得怪怪的了。
VC++经验技巧宝典配套代码06章 包括: 6.1窗体标题栏应用 0332闪烁标题栏的窗体 0333隐藏和显示标题栏 0334拖动没有标题栏的窗体 0335获取标题栏的内容 0336滚动的窗体标题栏 0337无标题对话框的拖动方法 6.2窗体的位置和大小控制 0339不可移动的窗体 0340始终在最上面的窗体 0341跟随鼠标移动的窗体 0342控制窗体的最大化最小化 0343判断窗体是否最小化在任务栏 0345限制窗体的大小 0346使用鼠标按键调整窗体大小 0347根据图片大小显示的窗体 0348获取当前鼠标点处的控件 6.3个性化窗体 0350半透明窗体 0351透明窗体 0352字型窗体 0353圆角窗体 0354以图片的形状显示窗体 0355应用程序背景与桌面融合 0356立体窗口阴影效果 6.4动画窗体界面 0357动画显示窗体 0358淡入淡出的窗体 0359如qq般隐藏的窗体 0360可横向伸展的对话框 0361可纵向伸展的对话框 0362调用office助手 0363屏幕滚动 0364在窗体中显示彩虹文字字幕 0365在窗体中实现文字横拉效果 0366在窗体中实现万花筒效果 0367在窗体中实现动画效果 6.5实用窗体技术 0368随即更换背景的窗体 0369显示欢迎窗体 0370显示关于窗体 0371不使用ESC键关闭窗体 0372关闭窗体前弹出确认对话框 0373在窗体显示前弹出登录对话框 0374设置对话框背景色 0375使用话刷绘制背景色 0376设置窗体颜色渐变 0377将对话框以位图形式保存到磁盘中 0378在对话框中显示HTML文件 0379在对话框中创建视图 0380如何共享对话框资源 0381如何实现窗体继承 0384在对话框中使用CDialogBar 6.6光标应用 0386十字光标定位 0387获得光标的位置坐标 0388限制光标的移动范围 6.7菜单应用 0392在系统菜单中添加菜单项 0393带历史信息的菜单 0394设置菜单是否可用 0395为菜单添加核对标记 0396浮动的菜单 0397单击右键弹出菜单 0398可以下拉的菜单 0399任务栏图盘弹出菜单 0400绘制渐变效果的菜单 0401将菜单项的字体设置为粗体 6.8工具栏和状态栏应用 0402带背景的工具栏 0403在工具栏中添加编辑框 0404具有提示功能的工具栏 0405工具栏按钮的热点效果 0406定义XP风格的工具栏 0407带进度条的状态栏 0408显示系统时间的状态栏 0409显示滚动字幕的状态栏 0410显示动画的状态栏 0411使状态栏随对话框的改变而改变 6.9文档视图结构应用 0412向视图中放置控件 0413分割窗口 0414视图窗口的任意分割 0417滚动视图CScrollView类应用 0418树形视图CTreeView类应用 0419列表视图CListView类应用 0420HTML视图CHtmlView类应用 共78个例子

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧