创建一个标签

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

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

  1. COCOS学习笔记--Button类及其相关控件属性

    一.Button介绍 Button就是button.Cocos中提供了Button类对button进行相关的操作.我们看一下Button类继承关系图: 能够看到.Button是继承自Widget类,W ...

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

    //此系列博文是<第一行Android代码>的学习笔记,如有错漏,欢迎指正! Android 给我们提供了大量的 UI控件,下面我们简单试试几种常用的控件. 一.TextView 在布局文 ...

  3. Android学习笔记50:使用WebView控件浏览网页

    在Android中,可以使用Webview控件来浏览网页.通过使用该控件,我们可以自制一个简单的浏览器,运行效果如图1所示. 图1 运行效果 1.WebView 在使用WebView控件时,首先需要在 ...

  4. Java学习笔记——可视化Swing中JTable控件绑定SQL数据源的两种方法

    在 MyEclipse 的可视化 Swing 中,有 JTable 控件. JTable 用来显示和编辑常规二维单元表. 那么,如何将 数据库SQL中的数据绑定至JTable中呢? 在这里,提供两种方 ...

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

    遇到一个数据处理自动化的问题,于是打算开发一个基于excel的小工具.在业余时间一边自学一边实践,抽空把一些知识写下来以备今后参考,因为走的是盲人摸象的野路子,幼稚与错误请多包涵. , ).value ...

  6. C# 学习笔记 三层架构系列(控件一)

    下面是我两周的学习总结:这是我写给自己的,如果哪位朋友有幸看到这篇文章就是缘分.如果所说的内容不对,就请纠正.勿喷!!! 想要将两周的学习知识通过文字.通过代码.通过图片储备起来,以防自己那天思维短路 ...

  7. 【jQuery UI 1.8 The User Interface Library for jQuery】.学习笔记.10.Button 和 Autocomplete控件

    Button ,可以使用 <button> <input> <a>. <input> 中的不同类型,submit , radio , checkbox ...

  8. Unity3D学习笔记(一)GUI控件的调用

    GUI控件:1.在Start中初始化,在OnGUI中调整.2.公有变量才会出现在Inspector面板.3.GUI控件的初始化和处理在OnGUI内完成.4.JavaScript的中文为UTF-8编码可 ...

  9. Tornadofx学习笔记(2)——FxRecyclerView控件的打造

    Tornadofx是基于javafx的一个kotlin框架,用来写些电脑版的小程序 基于Scroll Pane控件,仿造Android中的RecyclerView,实现的一款tornadofx的控件 ...

随机推荐

  1. WPF编程,TextBlock中的文字修饰线(上划线,中划线,基线与下划线)的使用方法。

    原文:WPF编程,TextBlock中的文字修饰线(上划线,中划线,基线与下划线)的使用方法. 版权声明:我不生产代码,我只是代码的搬运工. https://blog.csdn.net/qq_4330 ...

  2. C# Language Specification 5.0 (翻译)第二章 词法结构

    程序 C# 程序(program)由至少一个源文件(source files)组成,其正式称谓为编译单元(compilation units)[1].每个源文件都是有序的 Unicode 字符序列.源 ...

  3. Markdown 入门指南

    导语: Markdown是一种轻量级的标记语言,语法简单,学习成本不算太高,但确实可以让你专注于文字,不用太分心与排版等等. Markdown 官方文档 这里可以看到官方的Markdown语法规则: ...

  4. 10、Dockerfile实战-PHP

    一.镜像制作步骤 安装编译依赖包 编译安装 配置 二.编写Dockerfile FROM centos:7 MAINTAINER QUNXUE RUN yum install -y gcc gcc-c ...

  5. 架构师修炼 III - 掌握设计原则

    关于软件的设计原则有很多,对于设计原则的掌握.理解.实践及升华是架构师的一项极为之必要的修炼. 记得在12年前第一次阅读<敏捷开发>时,五大基本设计原则就深深地植入到我的脑海中一直影响至今 ...

  6. oracle创建用户和角色、管理授权以及表空间操作

    show user 显示当前用户connect username/password@datebasename as sysdba 切换用户和数据库 和用户身份 Oracle登录身份有三种: norma ...

  7. PTA (Advanced Level) 1002 A+B for Polynomials

    1002 A+B for Polynomials This time, you are supposed to find A+B where A and B are two polynomials. ...

  8. We're Chronos! ----- Meet the team 团队作业 #1

    Meet Us —————————————————La ligne de séparation————————————————— Kane Lim [林珣玙] < PM, Programmer ...

  9. 使用不同的namespace让不同的kafka/Storm连接同一个zookeeper

    背景介绍: 需要部署2个kafka独立环境,但是只有一个zookeeper集群. 需要部署2个独立的storm环境,但是只有一个zookeeper集群. ----------------------- ...

  10. iOS-copy与mutableCopy浅析

    iOS-copy与mutableCopy浅析 iOS 浅谈:深.浅拷贝与copy.strong 总结:当不可变类型对象调用copy拷贝后,不会产生新的对象,属于浅拷贝,其他类型对象不管调用copy亦或 ...