第10章 常用控件的应用

特殊说明:版权归个人所有,请勿转载,谢谢合作。

在Win32 SDK编程中,常用控件有静态文本框、编辑框、按钮、列表框、滚动条等。另外,还有一些按钮的子集控件,如:复选框、单选按钮等。对于这些控件,在应用中有一定的共性,精通其中一个控件,其它控件学习起来就会相对简单。除了Richedit控件以外,其他控件的可执行代码都在comctl32.dll库中。Richedit控件可执行代码存放在Riched20.dll库中。

 

10.1         静态控件

静态控件(Static Text)可以说是日常应用中最为广泛的一种控件,它主要用于文本显示、矩形框、位图、光标等可视化对象的显示,但它不能接受输入,也不提供任何输出。在日常应用中,以文本显示的应用最为广泛,其他功能很少用到。静态控件通过CreateWindow或CreateWindowEx函数创建,下面以CreateWindow函数为列,创建一个静态实现文本功能的控件。

g_hStaticWnd = CreateWindow("STATIC", "MyStatic", 
  WS_CHILD | WS_VISIBLE, 50, 50, 80, 20, hWnd, NULL, g_hIns, NULL);

 

返回值g_hStaticWnd,用来存放静态控件的句柄,方便以后使用。如果只是为了显示文本内容,也可以不接受返回值。CreateWindow函数中各个参数的含义可以参见3.2.3章节,在那里有详细的介绍。这里只针对功能进行说明。

第一个参数“STATIC”,说明创建的窗口控件为静态控件;

第二个参数“MyStatic”,静态控件显示的文字;

第三个参数“WS_CHILD | WS_VISIBLE”,此控件为子窗口模式,创建完成后并且可见;

第四、五个参数“50, 50”,窗口的X、Y位置分别为50;

第六、七个参数“80, 20 ”,静态控件的宽为80,高为20;

第八个参数“hWnd”,指定父窗口句柄;

第九个参数“NULL”,窗口无菜单;

第十个参数“g_hIns”,进程句柄,静态控件属于当前进程;

第十一个参数“NULL”,附加参数。

 

静态控件创建过程相对简单,原因是只作为文本显示,无控制要求。静态控件创建时,需要先定义一个HWND的句柄类型的变量,用来存放CreateWindow函数的返回值,目的是再次控件进行控制时,需要用到句柄。同时在WM_CREATE消息处,通过CreateWindow函数创建即可。具体代码如【例10-1】所示。

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
  PAINTSTRUCT ps;						// 结构体包含了用于绘制
// 窗口客户区的信息
  HDC  hdc;						// 设备环境句柄
  int wmId, wmEvent;
  char szContext[20] = { 0 };

  // 消息处理
  //
  switch (message) 
  {
    // 创建窗口时响应的事件
  case WM_CREATE:
    // 创建静态文本控件
    g_hStaticWnd = CreateWindow("STATIC", "MyStatic", 
      WS_CHILD | WS_VISIBLE, 50, 50, 80, 20, hWnd, NULL, g_hIns, NULL);
    break;

    // 菜单响应事件
  case WM_COMMAND:
    wmId    = LOWORD(wParam); 
    wmEvent = HIWORD(wParam); 

    // Parse the menu selections:
    switch (wmId)
    {
    default:
      return DefWindowProc(hWnd, message, wParam, lParam);
    }//end switch

    break;

    // 图形绘制事件
  case WM_PAINT:
    hdc = BeginPaint(hWnd, &ps);

    EndPaint(hWnd, &ps);
    break;
  
    // 窗口销毁消息,关闭窗口时响应。
  case WM_DESTROY:
    PostQuitMessage(0);
    break;

  default:
    // 调用系统默认消息处理,即交给系统处理。
    return DefWindowProc(hWnd, message, wParam, lParam);
  }//end switch

  return 0;
}

 

程序执行结果如图10.1所示。

  • 图10.1 静态控件创建结果

 

如果静态控件的内容,准备在代码中进行设置,可以使用SetWindowText函数来设置显示的内容,使用GetWindowText函数来实现获得显示的内容。

 

转载请附上原文出处链接及本声明
李老师的博客 » 第10章 常用控件的应用

发表评论

提供最优质的文章集合

立即查看 了解详情