⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 untitled-14.txt

📁 mfc 教程
💻 TXT
字号:
      CRect rect(O, O, 352, 352);
      CalcW。ndowRect(&rect);
      SetwindowPos(NULL, 0, 0, rect.Width(), rect.Height(),
            SWP.NOZORDER  SWP.NOMOVE  SWPNOREDRAW);
    第一个语句创建了一个 CRect对象,它保存着窗口客户区理想的尺寸 352 x 352像素大
小。由于CreateEx的尺寸参数指定的是全部窗口的大小,而不是客户区,因此不会直接把这
些值传递给CreateEx。因为窗口非客户区中许多元素的尺寸(例如,标题栏的高度)随视频
驱动程序和显示器图形分辨率的不同而不同,所以必须根据客户区矩形的大小计算窗口矩
形的尺寸,并使两者匹配。
    MFC的  CWnd:: CalcwindowRect是完成此工作的最佳工具。给定一个指向包含窗口客
户区坐标的CRect对象的指针,Calcwind。wRect将计算出相应的窗口矩形。矩形的宽度和高
度然后被传递给 CWnd:: SetwindowPos,进而得到合适的窗口大小。唯一值得注意的是,
CalcwindowRect必须在窗口创建之后被调用,以便它在窗口非客户区尺寸中生效。
PostNcDestroy函数
    从CWnd派生自己的窗口类时您必须考虑到,一旦它被创建以后,窗口对象最终必须被
删除。正如在第2章描述的那样,窗口在被销毁之前接收的最后一个消息是WM.NCDE-
STROY。MFC的CWnd类包括一个默认onNcDestroy处理程序,它执行一些例程来清除杂务,
然后作为最后一次操作,将调用名为PostNcDestroy的虚函数。当它们所附属的窗口销毁时,
CFramewnd对象会删除自己,覆盖 PostNcDestroy函数并执行一个 delete this语句。  CWnd::
PostNcDestroy并不执行 delete this语句,因此从 CWnd派生的类应该提供自己的 P0stNcDestroy
来执行。TicTac包括一个小型PostNcDestroy函数,它在程序终止以前销毁CMainwindow
对象:
      vo。d CMa。nw。ndow:: PostNcDestroy()
      Z
            delete this;
      Z
    无论何时从CWnd派生一个窗口类都应该考虑“到底是谁来删除它”这个问题。除了覆
盖CWnd::PostNcDest。y以外,还可以覆盖CWinApp::Exitlnstance并用在。pMainwnd中存
储的指针来调用delete。
3.1.3非客户区鼠标消息
    当鼠标在窗口的非客户区上单击或移动时,Windows就会给窗口发送一个非客户区鼠
标消息。表3.6中列出了非客户区鼠标消息。

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -