MFC技术积累——基于MFC对话框类的那些事儿2

3. 绘图

3.1 对话框资源编辑

  首先通过添加控件的方式来创建一个简单的绘图对话框如图所示,创建步骤为:

第一、在VC++6.0软件环境的灰色空白区域右击,选中Controls,然后会弹出一个控件对话框;

第二、点击需要的控件,鼠标箭头类型就会变成十字形,然后在主对话框里通过点击、拖拽绘制出需要的控件,这里也可以通过鼠标调整控件大小直到满意为止。

第三、在主对话框里右击打开属性对话框(一般情况下可以点击属性对话框左上角的形如大头针样式的小按钮来锁定属性对话框,解锁也是点击同样的按钮,只是按钮样式会变),然后选中控件,属性对话框也相应地显示该控件的属性。在控件属性对话框里来修改控件的标题、类型、ID等。

总之,以后在创建对话框工程时,就这样按部就班地先编辑主对话框资源,修改主对话框的属性(ID、大小、类型等)及其中控件的标题、类型、大小、ID等属性。

3.2 消息关联(使用画笔)

  接下来就是为对话框进行消息关联,比如图3.1中,在运行对话框程序后,通过鼠标左键点击画图按钮,系统能响应按钮控件的鼠标左击消息,然后能在静态文本控件区域绘制一条红色直线。

  第一、如何为画图按钮控件关联消息?简单的方法是仍然停留在刚才资源编辑状态,通过双击画图按钮控件,然后会弹出如图3.2的一个增加成员函数编辑框。输入函数名称,点击确定,系统就将按钮控件和该成员函数关联起来。

  另一种方法就是通过类向导(MFC Class Wizard)进行控件与消息响应函数的关联,如图3.3所示:

  当把ID句柄为IDB_DROW的画图按钮控件和OnDrow()成员函数关联起来后,系统就生成如下代码:

void CFDlg::OnDrow() 
{
    // TODO: Add your control notification handler code here
}

  此时运行程序后点击画图按钮,那么系统就响应上述函数。因此想在静态文本区域绘制一条红色直线,就是在OnDrow()函数体内进行编辑绘图代码,示例代码如下:

void CFDlg::OnDrow() 
{
    // TODO: Add your control notification handler code here
    CWnd* mywnd = GetDlgItem(IDC_DROWREGION);
    CClientDC dc(mywnd);
    CPen mypen;
    CPen* oldpen;
    RECT rc;
    mywnd->GetClientRect(&rc);
    mypen.CreatePen(PS_SOLID,2,RGB(255,0,0));
    oldpen = dc.SelectObject(&mypen);
    dc.MoveTo(rc.left,rc.top);
    dc.LineTo(rc.right,rc.bottom);
    dc.SelectObject(oldpen);
}

3.3 加载位图

3.3.1 通过Picture控件来导入位图

   利用Picture控件来导入一幅位图,操作步骤如图3.4:

 

posted @ 2015-12-05 12:21  奔跑在湘边  阅读(1153)  评论(0编辑  收藏  举报