正在阅读:VC++学习:用SDK实现分隔条VC++学习:用SDK实现分隔条

2004-02-14 09:34 出处:CSDN 作者:titilima 责任编辑:linjixiong
Windows中的分隔条是一种被广泛使用的控件,绝大多数Explorer式样的应用程序都使用了这种控件。然而却很少有相关的资料对它的完整实现进行介绍,于是我自己实现了一个,希望对SDK的爱好者们有所帮助。

  事实上,分隔条也是一个很普通的窗口,它也拥有自己的窗口类、自己的窗口过程——就像所有的预定义控件一样。也就是说,要创建一个分隔条,也需要进行窗口类的注册和窗口的创建。以下的示例代码示范了如何注册一个分隔条的窗口类:

  WNDCLASS wc;
  wc.cbClsExtra = 0;
  wc.cbWndExtra = 0;
  wc.hbrBackground = (HBRUSH)COLOR_BTNSHADOW; // 1
  wc.hCursor = LoadCursor(NULL, IDC_SIZEWE); // 2
  wc.hIcon = NULL;
  wc.hInstance = hInstance;
  wc.lpfnWndProc = (WNDPROC)ProcSplitter; // 3
  wc.lpszClassName = "MySplitter"; // 4
  wc.lpszMenuName = NULL;
  wc.style = 0;
  RegisterClass(&wc);

  这段代码相信大家已经很熟悉了,所以在此我只简要说明四点:1、分隔条的背景颜色,这里我取默认的对话框背景色;2、分隔条的鼠标指针,这里我取水平的调整大小指针;3、这是分隔条的窗口过程,所有的秘密都在这个回调函数之中;4、分隔条的窗口类名称,你可以随便取一个你喜欢的名字。

  在成功地注册窗口类之后,就可以创建分隔条了。以下是我的示例界面,它由一个树形视图、一个分隔条、一个列表视图以及一个状态栏组成,下文的所有代码都是以这个界面为基础的。

  在编写分隔条的窗口过程之前,我先来处理对话框的WM_SIZE消息作为分隔条窗口过程的一个热身。代码如下(你会发现在整个的代码中我没有对hTree、hStatus、hSplitter以及hList做任何的声明,那是因为对于这个简单的示例,我将所有的这些东西都声明为了全局变量):

察看评论详细内容 我要发表评论
作者笔名 简短内容 发表时间
:
键盘也能翻页,试试“← →”键

关注我们

最新资讯离线随时看 聊天吐槽赢奖品