WEB开发网
开发学院软件开发VC Visual C++ MFC 简明教程(3) 阅读

Visual C++ MFC 简明教程(3)

 2007-03-18 21:27:56 来源:WEB开发网   
核心提示: CTestWindow::CTestWindow() { CRect r; // Create the window itself 1 Create(NULL,"CStatic Tests", WS_OVERLAPPEDWINDOW, CRect(0,0,200,200
  CTestWindow::CTestWindow()
   {
   CRect r;
   // Create the window itself
   1 Create(NULL,
  "CStatic Tests",
   WS_OVERLAPPEDWINDOW,
   CRect(0,0,200,200));
   // Get the size of the client rectangle
   2 GetClientRect(&r);
   3 r.InflateRect(-20,-20);
   // Create a static label
   4 cs = new CStatic();
   5 cs->Create("hello world",
   WS_CHILD|WS_VISIBLE|WS_BORDER|SS_CENTER,
   r,
   this);
   }

首先在单击1行中调用CTestWindow::Create函数。它是CFrameWnd对象的Create函数,因为CTestWindow从CFrameWnd继承了其行为。所以第一行中的代码指定了窗口大小应该为200×200个象素,窗口的左上角被初始化在屏幕的0,0位置处。常数rectDefault可用CRect参数来替代。

在第2行,调用了CTestWindow::GetClientRect,向它传递了&r参数。GetClientRect函数是从CWnd类继承来的。变量r是CRect类型的,并且在函数的开头部分被说明为局部变量。

理解这段代码时可能会有两个问题 1) GetClientRect函数是干什么的? 2) CRect变量是干什么的? 让我们先回答第一个问题。当你查看MFC文档中的CWnd::GetClientRect函数时,你会发现它返回一CRect类型,它包含了指定窗口的用户区域矩形。它保存的是参数的地址&r。该地址指向CRect的位置。CRect类型是在MFC中定义的。用它处理矩形是非常方便的。如果你看以下MFC文档,就会看到其中定义了30多种处理矩形的成员函数和操作符。

在我们的情况下,我们要在窗口中间显示“Hello World”。因此,我们用GetClientRect来获取用户区域的矩形坐标。在第3行中调用了CRect::InflateRect,同时还可以增大或减少了矩形的尺寸(参见CRect::DeflateRect)。这里我们对矩形的各边减少了20个象素。如果不这样的话,标签周围边界就会超出窗口框架。

上一页  1 2 3 4 5 6  下一页

Tags:Visual MFC 简明教程

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接