C++ Programmer's Cookbook

{C++ 基础} {C++ 高级} {C#界面,C++核心算法} {设计模式} {C#基础}

MESSAGE MAP相关即ondrow()消息调用顺序

MESSAGE MAP

1 Messagemap 是宏定义,不是与虚函数相关联。

2 当改变变量时需调用InValidateRect(),此函数触发onpaint(),然后调用ondraw().调用ondraw()时,可现调用GetclipBox()减少重绘的区域。Frame第一次调用ondraw()时先调用OnInitialUpdata()。

3 CRect 类,中ptInRect()可判断点是否在rect内,但是rect必须用device模式,LPCRECT为指向rect结构的指针,但CRect有向LPCRECT的转化函数,可以隐式的转化。GetClientRect()可以得到客户Rect的大小。

4 映射模式 MM_TEXT 是用logic模式,屏幕象素为单位。FixedScale 模式 Device模式,大小不随viewpoint即客户窗口的大小改变。Variblescale模式,大笑可以随viewpoint即客户口的大小改变。

5 可以在消息WM_CLOSE 中判断文档是否已经保存。

6  cscrollview中设置滚动条

void CEx06cView::OnInitialUpdate()

{

    CScrollView::OnInitialUpdate();

    CSize sizeTotal(800, 1050); // 8-by-10.5 inches

    CSize sizePage(sizeTotal.cx / 2, sizeTotal.cy / 2);

    CSize sizeLine(sizeTotal.cx / 50, sizeTotal.cy / 50);

    SetScrollSizes(MM_LOENGLISH, sizeTotal, sizePage, sizeLine);

}

或用SetScaleToFitSize(sizeTotal);代替最后一行。

7            cview中图像跟windows大小改变

void CMyView::OnDraw(CDC* pDC)
{
CRect rectClient;
GetClientRect(rectClient);
    pDC->SetMapMode(MM_ANISOTROPIC);
    pDC->SetWindowExt(1000, 1000);
    pDC->SetViewportExt(rectClient.right, -rectClient.bottom);
    pDC->SetViewportOrg(rectClient.right / 2, rectClient.bottom / 2);
    pDC->Ellipse(CRect(-500, -500, 500, 500));
}

posted on 2006-02-20 12:50 梦在天涯 阅读(1198) 评论(0)  编辑 收藏 引用 所属分类: CPlusPlusMFC/QT


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


公告

EMail:itech001#126.com

导航

统计

  • 随笔 - 461
  • 文章 - 4
  • 评论 - 746
  • 引用 - 0

常用链接

随笔分类

随笔档案

收藏夹

Blogs

c#(csharp)

C++(cpp)

Enlish

Forums(bbs)

My self

Often go

Useful Webs

Xml/Uml/html

搜索

  •  

积分与排名

  • 积分 - 1795685
  • 排名 - 5

最新评论

阅读排行榜