【专业技术】如何愉快的在Windows下开发控件

在Win32环境下,怎么来创建常用的那些基本控件呢?通过MSDN可以知道,不管是创建窗口还是控件,都是通过CreateWindow或者CreateWindowEx这个函数来完成的,这两个函数除了多一个扩展风格之外,其他完全一样,下面以CreateWindow为例说明,该函数原型如下:

HWND CreateWindow(LPCTSTR lpClassName,

LPCTSTR lpWindowName,

DWORD dwStyle,

int x, int y, int nWidth, int nHeight,

HWND hWndParent,

HMENU hMenu,

HANDLE hInstance,

PVOID lpParam );

参数如下:

lpClassName:窗口或控件的类名

lpWindowName:窗口或控件的名字或者文本

dwStyle:窗口或控件风格

x,y,nWidth,nHeight:窗口或控件的坐标和宽高

hWndParent:窗口或控件的父窗口

hMenu:窗口菜单或者控件的ID

hInstance:窗口实例,控件一般为空

lpParam:窗口或控件参数,会被传递到创建消息中去

那么具体怎么实现各个基本的控件呢?下面我们来一一创建。

  1. 创建标签/静态文本: CreateWindow("STATIC", TEXT("Test Text"), WS_CHILD|WS_VISIBLE|SS_LEFT, 10, 10, 250, 30, hwnd, (HMENU)IDC_STATIC1, NULL, NULL); 通过该调用,就创建了一个静态文本。
  2. 创建button: CreateWindow("BUTTON", TEXT("Open(&O)"), WS_CHILD|WS_VISIBLE, 170, 110, 90, 30, hwnd, (HMENU)IDC_BUTTON1, NULL, NULL);
  3. 创建编辑框: CreateWindow( "Edit", NULL, WS_CHILD|WS_VISIBLE|WS_BORDER, 10, 50, 250, 30, hwnd, (HMENU)IDC_EDIT1, NULL, NULL);
  4. 创建控件容器Frame CreateWindow("BUTTON", TEXT("颜色"), WS_CHILD|WS_VISIBLE|BS_GROUPBOX, 360, 90, 130, 140, hwnd, (HMENU)IDC_FRAME, NULL, NULL);
  5. 创建列表框: CreateWindow("LISTBOX", NULL, WS_CHILD|WS_VISIBLE|LBS_STANDARD, 170, 150, 180, 100, hwnd, (HMENU)IDC_LISTBOX, NULL, NULL);
  6. 创建组合框:

CreateWindow("COMBOBOX", NULL, WS_CHILD|WS_VISIBLE|WS_VSCROLL|CBS_SIMPLE,

500, 10, 190, 150, hwnd, (HMENU)IDL_ComboBoxSpl, NULL, NULL);

这些控件创建出来的效果如下:

这些控件可是不用MFC中的方式创建,纯手工打造,怎么样?是不是很简单,赶快去试试吧。

事实上,windows的所有控件都是用这个函数创建的,只是不同的控件的类不一样,更多的控件可以查MSDN。

原文发布于微信公众号 - 程序员互动联盟(coder_online)

原文发表时间:2015-05-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏HTML5学堂

随心所欲的滚动条,远离产品汪(二)

还记得上周咱们说的“随心所欲滚动条,远离产品汪”一文吗?当中介绍了自定义滚动条的基本原理与实现方法,在自定义滚动条实现后,可以通过对滚动条的上下拖动来控制内容区...

3168
来自专栏H2Cloud

Embeding Python & Extending Python with FFPython

Introduction ffpython is a C++ lib, which is to simplify tasks that embed Python...

3559
来自专栏MasiMaro 的技术博文

菜单的使用

2)弹出式菜单:一般在顶级菜单上都有很多菜单项,单击这些菜单项时会弹出一个下拉式的菜单项,我们点击的这个菜单称为弹出式菜单

784
来自专栏前端那些事

多栏布局与JS实现瀑布流

css3属性之多栏布局与JS实现瀑布流    背景:之前打算自己总结一下flex布局的知识点,发现自己无从下手,原因在何处:我反思了一下,其实原因很简单,使用的...

1919
来自专栏前端架构

CSS深入理解流体特性和BFC特性下多栏自适应布局

by zhangxinxu from http://www.zhangxinxu.com 本文地址:http://www.zhangxinxu.com/wor...

722
来自专栏HansBug's Lab

USACO全部月赛及GateWay数据

月赛: 以07年open为例,网站如下 http://contest.usaco.org/OPEN07 其他的格式是http://contest.usaco.o...

3395
来自专栏Android先生

RecyclerView 自定义ItemDecoration从入门到实现吸顶效果

RecyclerView性能和自由度相比ListView强大很多,但很恼人的是它没有像ListView一样默认提供分割线。

291
来自专栏码匠的流水账

聊聊Selenium不同webdriver的构造

Selenium 2,又名 WebDriver,它的主要新功能是集成了 Selenium 1.0 以及 WebDriver(WebDriver 曾经是 Sele...

252
来自专栏熊二哥

Html与CSS快速入门01-基础概念

Web前端技术一直是自己的薄弱环节,经常为了调节一个简单的样式花费大量的时间。最近趁着在做前端部分的开发,果断把这部分知识成体系的恶补一下。内容相对都比较简单,...

1897
来自专栏林德熙的博客

wpf 使用 Dispatcher.Invoke 冻结窗口

如果使用Dispatcher.Invoke实际上会有一个坑,在执行Dispatcher.Invoke刚好拖动窗口就会出现窗口冻结,这时使用 Alt+Tab 可以...

331

扫描关注云+社区