Win32+API学习笔记:创建基本的窗口控件

创建一个标签

CreateWindowEx(0, "static", "姓名:",
                                            WS_CHILD | WS_VISIBLE | SS_NOTIFY,
                                            12, // xpos
                                            414, // ypos
                                            90, //width
                                            21, //height
                                            hwnd_frame, (HMENU)id_lbl_name, g_hInstance,  NULL) ;

1. 如果一个Static控件带上了SS_NOTIFY属性,则会在父窗口里响应STN_CLICKED、STN_DBLCLK、STN_DISABLE 和STN_ENABLE四种消息。

2. id_lbl_name 是一个整型数字,起到标识符的作用。

创建一个单行文本框

hwnd_t_name = CreateWindowEx(WS_EX_CLIENTEDGE, "edit", "这里可以输入初始内容",
                                          WS_CHILD | WS_VISIBLE | ES_AUTOHSCROLL,
                                          100,   // xpos
                                          410,  // ypos
                                          461, //width
                                          21, //height
                                          hwnd_frame, (HMENU)id_t_name,   g_hInstance,   NULL);

1. 加上 ES_AUTOHSCROLL 属性,才能确保文本内容宽度超过文本框的宽度时,可以按键盘向右移动,达到显示全部内容的目地。

2. 更新文本框内容
SetWindowText(hwnd_t_name, "abcdefg");

3. 获取文本框内容
char name[1024];
GetWindowText(hwnd_t_name, name1024);

创建一个按钮

hwnd_b_source_folder =  CreateWindowEx(0, "button", "选择...",
                                           WS_CHILD | WS_VISIBLE, // | WS_DISABLED
                                           571, // xpos
                                           8, // ypos
                                           96, //width
                                           25, //height
                                           hwnd_frame, (HMENU)id_b_source_folder, g_hInstance,  NULL) ;

创建一个复选框

hwnd_ck_quality = CreateWindowEx(0, "button", "高",
                                     WS_CHILD | WS_VISIBLE | BS_AUTOCHECKBOX,
                                     21,   // xpos
                                     128,  // ypos
                                     68, //width
                                     19, //height
                                     hwnd_frame, (HMENU) id_ck_quality,   g_hInstance,   NULL);

1. 其中 "button" + BS_AUTOCHECKBOX 表示为一个复选框

2. 判断一个复选框是否选中
   IsDlgButtonChecked(hwnd_frame, id_ck_quality)

创建一个下拉列表框

hwnd_c_image_quality = CreateWindowEx(0, "combobox", "Text",
                                          WS_CHILD | WS_VISIBLE |  CBS_DROPDOWNLIST,
                                          300,   // xpos
                                          69,  // ypos
                                          130, //width
                                          300, //height
                                          hwnd_frame, (HMENU)id_c_image_quality,   g_hInstance,   NULL);

1. 给 combobox 添加一项
void combobox_add_item(HWND hwnd_combobox, char *text)
{
    int index = (int)SendMessage(hwnd_combobox, CB_ADDSTRING, -1, (LPARAM)text);

if(index == 0)
    {
        SendMessage(hwnd_combobox, CB_SETCURSEL, index, 0);
    }
}
 
2. 添加一项到下拉列表框
combobox_add_item(hwnd_c_image_quality, "高");
combobox_add_item(hwnd_c_image_quality, "中");
combobox_add_item(hwnd_c_image_quality, "低");

3. 设置当前选择的index
SendMessage(hwnd_c_image_quality, CB_SETCURSEL, 1, 0);

4. 获取选择的index
LRESULT  quanlity =  SendMessage(GetDlgItem(hwnd_frame, id_c_image_quality), CB_GETCURSEL, 0, 0);

创建进度条

hwnd_progressbar =  CreateWindowEx(0, "msctls_progress32", "",
                                       WS_CHILD | WS_VISIBLE , // | WS_DISABLED
                                       12, // xpos
                                       451, // ypos
                                       549, //width
                                       21, //height
                                       hwnd_frame, (HMENU)id_progressbar, g_hInstance,  NULL) ;

1. 初始化进度条的最小值和最大值
SendMessage(hwnd_progressbar, PBM_SETRANGE, 0, MAKELPARAM(0, 100));

2. 更新进度
SendMessage(hwnd_progressbar, PBM_SETPOS, 80, 0L);

3. 重置进度条位置为0
SendMessage(hwnd_progressbar, PBM_SETPOS, 0, 0L);

创建一个WS_EX_TOOLWINDOW样式的窗口

hwnd_log_frame = CreateWindowEx(
                         WS_EX_TOOLWINDOW,                   /* Extended possibilites for variation */  
                         "CodeBlocksWindowsApp",         /* Classname */
                         "日志",       /* Title Text */
                         WS_SYSMENU | WS_SIZEBOX, /* default window */
                         CW_USEDEFAULT,       /* Windows decides the position */
                         CW_USEDEFAULT,       /* where the window ends up on the screen */
                         460,                 /* The programs width */
                         168,                 /* and height in pixels */
                         hwnd_parent,        /* The window is a child-window to desktop */
                         NULL,                /* No menu */
                         hThisInstance,       /* Program Instance handler */
                         NULL                 /* No Window Creation data */
                     );

WS_EX_TOOLWINDOW,带有这个属性的窗口有以下特点:
1. 不在任务栏显示。
2. 不显示在Alt+Tab的切换列表中。
3. 在任务管理器的窗口管理Tab中不显示。
4. 标题栏没有图标,标题栏的高度很小,很特珠的一个窗口

创建一个无边框的窗口

hwnd_ad_window = CreateWindowEx(
                         0,                   /* Extended possibilites for variation */
                         "CodeBlocksWindowsApp",         /* Classname */
                         "ad_window",       /* Title Text */
                         WS_CLIPCHILDREN | WS_CLIPSIBLINGS | WS_POPUP, /* default window */
                         CW_USEDEFAULT,       /* Windows decides the position */
                         CW_USEDEFAULT,       /* where the window ends up on the screen */
                         400,                 /* The programs width */
                         16,                 /* and height in pixels */
                         hwnd_parent,        /* The window is a child-window to desktop */
                         NULL,                /* No menu */
                         hThisInstance,       /* Program Instance handler */
                         NULL                 /* No Window Creation data */
                     );

2012-09-13

时间: 2024-10-29 19:11:19

Win32+API学习笔记:创建基本的窗口控件的相关文章

Silverlight学习笔记(三):控件布局管理

简介: 学习Silverlight控件在页面上是如何进行布局,实现多种复杂布局 一.常见的三种布局方式 1. Silverlight学习笔记(三):控件布局管理,码迷,mamicode.com

Android学习笔记(七)——常见控件

//此系列博文是<第一行Android代码>的学习笔记,如有错漏,欢迎指正! Android 给我们提供了大量的 UI控件,下面我们简单试试几种常用的控件. 一.TextView 在布局文件中加入TextView元素: 1 <TextView android:text="This is TextView!" 2 android:gravity="center" 3 android:layout_width="match_parent&qu

Excel开发学习笔记:界面交互与控件的布局

除了业务逻辑之外,比较耗时耗力的就是人机交互了.在编写excel定制程序的过程中,这次用到了以下几种交互方式: 通过excel工作表(worksheet)获取用户输入 通过按钮控件触发功能代码执行 通过TreeView控件显示内容摘要及导航 通过自定义的windows窗体提供交互 工作表的操作放到后面再说,讲一下按钮控件button和Treeview控件的布局. 放置控件的方法: 无非可视化放置和运行时代码加载两种.可视化放置比较直观,通过visual studio的toolbox工具栏拖动需要

cocos2d-x学习笔记(六)TextBMFont控件显示中文乱码或者无法显示

今天用cocos studio加了一个TextBMFont控件,然后需要动态修改TextBMFont控件显示的字符串,用来显示中文的,结果一直无法修改TextBMFont控件的值,最后原来是写到xml文件的中文字符串没有保存成UTF-8格式. ===================================================================================== 记录一下完整实现步骤 一.制作BMFont字体 1.下载并安装BMFont软件 2.

C#学习笔记(20140910)-单选控件和单选组控件、复选控件、复选组控件

晚上学习了一下单选控件和单选组控件.复选控件.复选组控件. 稍微动了点脑筋,做了一个小小的网页程序.主要功能是相互赋值已经设置标签的字体大小和颜色已经前后背景色. 主要功能: 1. 在文本输入框中输入文字,提交后可以对标签赋值: 2. 选择单选框可以给标签赋值: 3. 选择单选组控件时可以给标签设置颜色: 4. 选择单选组控件时可以给字体设置大小. 最后的效果如下: 分块设置就不多说了,看看用到了哪些模块吧: 1. 自定义了一个方法,把标签的值赋值给输入框.使得输入框中的内容和标签的内容一致.

C#学习笔记(20140909)-按钮控件:单击事件和command事件

在 Web 应用程序和用户交互时,常常需要提交表单.获取表单信息等操作.在这其间,按钮控件是非常必要的.按钮控件能够触发事件,或者将网页中的信息回传给服务器.在 ASP.NET 中,包含三类按钮控件,分别为 Button.LinkButton.ImageButton. Click 单击事件 在Click 单击事件中,通常用于编写用户单击按钮时所需要执行的事件,这种事件很简单,用户单击一个按钮,就会执行按钮中的代码. Command 命令事件 按钮控件中,Click 事件并不能传递参数,所以处理的

.net core 学习笔记(1)-分页控件的使用

最近有个小项目,用.net core开发练练手,碰到的第一个问题就是分页控件的问题,自己写太费时间,上网查了下,发现有人已经封装好了的,就拿过来用了,分页控件github:https://github.com/sgjsakura/AspNetCore/blob/master/PagerDemo.md 使用方法也很简单 后台代码如下:期中list是数据返回的数据,pagesize是每页的数量,page是当前页数,totalcount-总条数,pagenum-总页数 var model= new P

《Windows程序设计》读书笔九 子窗口控件

第九章 子窗口控件 子窗口可以作为控制屏幕图形显示,响应用户输入,以及在有重要输入事件的时候通知另一窗口. 标准子窗口控件,按钮,复选框,编辑框,列表框,组合框,文本字符串和滚动条. 可以使用CreateWindow来创建子窗口控件,或者在程序的资源脚本里编辑好各种属性. 使用预定义控件不需要再注册相应的子窗口类,这些类已经存在于windows中并且已经有了预定义的名称. 在调用CreateWindow时,只需要使用该名称作为窗口类的参数即可. 在窗口表明直接创建子窗口,所涉及的任务比使用对话框

TCP协议和socket API 学习笔记

本文转载至 http://blog.chinaunix.net/uid-16979052-id-3350958.html 分类: 原文地址:TCP协议和socket API 学习笔记 作者:gilbertjuly  • TCP包头 ACK为1时,确认序号有效,表示期望收到的下一个序号,是上次成功收到的字节序加1. SYN, FIN都占用一个序号. • TCP连接的建立 client通过connect()来建立TCP连接,connect()会发送SYN报文: server通过bind().list