【专业技术】如何愉快的在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 条评论
登录 后参与评论

相关文章

来自专栏大前端_Web

js对象属性的getter和setter

版权声明:本文为吴孔云博客原创文章,转载请注明出处并带上链接,谢谢。 https://blog.csdn.net/wkyseo/articl...

1005
来自专栏有趣的Python

Scrapy分布式爬虫打造搜索引擎 - (三)知乎网问题和答案爬取Python分布式爬虫打造搜索引擎

Python分布式爬虫打造搜索引擎 基于Scrapy、Redis、elasticsearch和django打造一个完整的搜索引擎网站 三、知乎网问题和答案爬取 ...

43210
来自专栏章鱼的慢慢技术路

浅谈单片机中C语言与汇编语言的转换

1673
来自专栏androidBlog

Android 代码混淆语法讲解及常用模板

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/gdutxiaoxu/article/de...

1052
来自专栏difcareer的技术笔记

Android平台inline hook实现[转载]

Inline Hook在之前文章有较多概念性描述,本文则侧重介绍如何去实现一个Inline Hook,并且关注一些实现过程中会遇到的困难与挑战。

714
来自专栏飞扬的花生

JQuery常用方法总结

1.json的创建方式 <script> $(function () { //第一种 var my = new Peop...

1957
来自专栏猫哥学前班

微信小程序 base64 图片 canvas 画布 drawImage 实现

在微信小程序中 canvas drawImage 传入的第一个参数是 imageResource 图片资源路径,这个参数通常由从相册选择图片 wx.choose...

1695
来自专栏Hongten

python开发_python代码风格(coding style)

781
来自专栏菩提树下的杨过

Silverlight如何与JS相互调用

1.sl调用js 比如我们在页面中定义一个js函数: <script type="text/javascript">         function fnTe...

1817
来自专栏跟着阿笨一起玩NET

PropertyGrid中的枚举显示为中文

本文转载:http://www.cnblogs.com/yank/archive/2011/09/17/2179598.html

752

扫码关注云+社区