Windows 编程基础

十一、对话框 返回

 

 通过前面的学习,我们已经能够创建一个属于自己的窗口,一个温暖的小屋,接下来该怎么布置,让她充满生机、透出灵气与和谐,自然的内在流露呢?

 

 控件是组装好的一些常用Windows基本组件,就像我们房间里各种家具、各种电器,我们并不需要自己去制作,只要会精挑细选,准有最适合自己的一款;

 

 在VC中系统已经准备好了各种控件,比如各种按钮、标签、列表框、滚动条、工具栏等等都是一些常用的控件,程序中的控件将作为一个构成程序的对象,可以对它进行一些设计和修饰;

 

 控件是基于对话框的,也就是控件一般放在对话框当中,对话框(Dialog)是一种资源,它的定义放在资源文件里,

 

 当打开项目控制台的“资源”标签中的“Dialog”项,就可以看到文件区的一个对话框,同时右边还有一个工具箱,里面放了各种控件,使用时先选中,再画到对话框里头就可以了;

 

 下面我们来学习如何在资源文件中创建一个对话框,并学习最基本的控件——按钮的使用方法;

 

 1、启动VC,新建一个名为DialogWin32 Application工程,再新建一个相同名称的头文件源程序文件,在头文件中输入函数的申明,在源程序中输入窗口框架代码;

 

 2、在头文件中输入函数申明,再加入资源中各个对象的标识符申明,代码如下:

 

BOOL APIENTRY DlgWndProc(HWND,UINT,WPARAM,LPARAM);
//对话框的消息处理过程

 

HWND hWndDlg;//对话框窗口的标识句柄
BOOL btxtRed,btxtBlue;
//文本的颜色布尔值


#define ID_RED 301
#define ID_BLUE 302
//两个颜色按钮标识符

 

 3、用记事本新建一个相同文件名的资源文件Dialog.rc输入对话框的定义

 

#include "Dialog.h"

#include "afxres.h"//还需要这个头文件

 

// 定义一个对话框资源
COLORBOX DI
ALOGEX 5, 28, 162, 85//定义对话框的标识符和位置、大小


STYLE DS_
MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU//对话框风格


CAPTION "颜色对话框" 
//对话框标题


FONT 14, "仿宋"
//文本字体


BEGIN

    PUSHBUTTON "红色",ID_RED,16,61,50,14//按钮的位置、大小
   PUSHBUTTON "蓝色",ID_BLUE,77,61,50,14

END

 

 保存并关闭文件,使用工程菜单中的“添加工程”命令将资源文件Dialog.rc加入到工程中

 

 4、接下来加入主窗口的消息处理过程,我们设定在单击鼠标左键时调出对话框,代码如下:


LRESULT
APIENTRY MainWndProc(
        HWND hWnd,UINT message,
WPARAM wParam,LPARAM lParam)
{
    HDC hdc;
    P
AINTSTRUCT ps;
//用于输出文本


    switch(message)
    {
    case W
M_PAINT: //输出一行提示
      hdc=BeginPaint(hWnd,&ps);


      if(btxtRed) 
        SetTextColor(hdc,RGB(255,0,0));
//红色


      if(btxtBlue)
        SetTextColor(hdc,RGB(0,0,255));
//蓝色


      TextOut(hdc,20,20,"单击鼠标左键调出对话框",lstrlen("单击鼠标左键调出对话框"));


      EndPaint(hWnd,&ps);
      break;

    case W
M_LBUTTONDOWN://左键按下了

      DialogBox(hInst,"COLORBOX",hWnd,(DLGPROC)DlgWndProc);
     
//调用创建对话框的函数
      InvalidateRect(hWnd,NULL,TRUE);
//主窗口的提示更新一下
      break;


    case W
M_DESTROY:
      PostQuitMessage(0);
      break


    default:
      return(DefWindowProc(hWnd,message,wParam,lParam));
    }
    return (0);
}

 4、对话框本身也是一个窗口,有自己的标题栏和框架,它也有自己的消息处理过程函数,代码如下:

 

//对话框消息处理过程

BOOL APIENTRY DlgWndProc(
        HWND hDlg,UINT message,
WPARAM wParam,LPARAM lParam)
{
    switch(message)
    {
      case W
M_INITDIALOG:

        return(TRUE);//要求创建对话框

      case
WM_COMMAND://对话框的按钮消息
        switch(LOWORD(wParam))
        {
          case ID_RED:
//单击“红色”按钮
            btxtRed=TRUE;
//红色为真
            btxtBlue=FALSE;
//蓝色为假
            EndDialog(hDlg,FALSE);
//退出对话框
            break;


          case ID_BLUE:
//单击“蓝色”按钮
            btxtBlue=TRUE;
            btxtRed=FALSE;
            EndDialog(hDlg,FALSE);
//结束模式对话框
            break;

          case W
M_DESTROY://退出对话框
            EndDialog(hDlg,FALSE);
            break


          return (TRUE);
        }
        break;
    }
    return(F
ALSE);
}

 保存一下文件,单击编译条上的“构建”按钮,如果出现错误就仔细检查一下,然后单击“执行”按钮,看看包含有两个窗口的应用程序程序窗口;

 

 对话框当中也可以放置其他的控件对象,我们可以在里面绘制两个图片框,然后把图片框“属性”中的“类型”设为“Bitmap”,再在“图像”中选一个图片资源,从而加入图片,更多更详细的操作我们将会在MFC编程中学习;

 

 本节学习了在用户区输出文字的代码设计,如果你成功地完成了练习,有关Windows编程基础的学习顺利结束,我们已步入视窗程序设计的广阔天地。

 

返回

 

 蓝天白云 (在弹出的对话框中选择“运行”、“运行”)

本教程由86团学校TeliuTe制作|著作权所有

基础教程网:http://teliute.org/

美丽的校园……



转载和引用本站内容,请保留作者和本站链接。