MFC Windows程序设计读书笔记

这是一篇关于MFC Windows程序设计的读书笔记,涵盖了非模式对话框创建、属性表使用、鼠标命中测试、CScrollView优化、CListView创建、工具栏创建与管理、计时器、窗口标题栏处理、调色板管理和公共控件等内容,详细记录了各个知识点的实现和应用技巧。
摘要由CSDN通过智能技术生成

 前言:

        这个笔记是去年看这本书的时候记下的,一直仍在电脑里,后来也没看过,今天春节后上班无意间发现了,遂整理出来,方便以后查阅.

 

 

第8章:

 

非模式对话框创建 显示 销毁:
1.m_pDlg=new CMyDlg;
pDlg->Create(IDD_MYDLG);
pDlg->ShowWindow(SW_SHOW);

2.销毁时在PostNcDestroy中调用delete this;


属性表的使用:
1.创建对话框模版,添加类,继承自CPropertyPage
2.由CPropertySheet派生一个属性表类,利用CPropertySheet::AddPage添加属性页
3.由DoModal显示属性表

class CFirstPage::Public CPropertyPage
{
 public:
  CFirstPage():CPropertyPage(IDD_FIRST_PAGE){};
};

class CMyPropertySheet:public CPropertySheet
{
 public:
  CFirstPage m_wndFirstPage;
  
  CPropertySheet(LPCTSTR pszCaption,CWnd *pParant=NULL):
   CPropertySheet(pszCaption,pParentWnd,0)
  {
   AddPage(&m_wndFirstPage);
  }
};

 

响应OnApply:
1.在CMyPropertySheet中添加消息 afx_msg void OnApply
2.映射 ON_BN_CLICK(ID_APPLY_NOW,OnApply)
3.消息定义
void OnApply()
{
 GetActivePage()->OnOK();
 GetActivePage()->SetModified(FALSE);
}

 

 

第12章:

在做鼠标命中测试时,要先通过CDC::DPtoLP

OnDraw函数的自动识别:
当滚动事件发生,CScrollView用OnVScroll和OnHScroll来处理消息,调用::ScrollWindow来水平或垂直滚动试图。视图的OnPaint函数被调用,绘制失效部分。在调用OnDraw之前,CView::OnPaint调用虚OnPrepareDC函数,CScrollView覆盖OnPrepareDC并在其中调用CDC::SetMapMode来设置应设模式,调用SetViewportOrg将原点转换为等于水平和垂直滚动位置的值

在OnDraw以外执行CSCrollView窗口中绘制操作时要先将设备描述表传递给OnPrepareDC
CClientDC dc(this);
OnPrepareDC(&dc);

测试单击位置处于逻辑视图的上部还是下部:
void CMyView::OnLButtonDown(UINT nFlags,CPoint point)
{
 CPoint pos=point;
 CClientDC dc(this);
 OnPrepareDC(&dc);

 dc.DPtoLP(&pos);

//
//CSize GetTotalSize( ) const; 
//Call GetTotalSize to retrieve the current horizontal and vertical sizes of the scroll view.
//
 CSize size=GetTotalSize();
 {
  if( ::abs(pos.y)<(size.cy/2) )
  {}//Upper
  else
  {}//Lower
 }
}


SetScaleToFitSize实现Zoom To Fit,将整个逻辑视图所放在物理视图中

优化OnDraw,CDC::GetClipBox(CRect)传递给OnDraw的设备描述表对象中被调用,GetClipBox用无效区域矩形的逻辑坐标下的尺寸和位置来初始化CRect

 

 


//------------------------------------------------------------------------------------------------------
创建CListView:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值