窗口控件

WINDOW控件

什么是控件?

控件是常见的窗口上的交互元素.例如:一个按钮,一个复选框,一个列表框等。当控件的特定功能被触发后,会主动发送消息通知父窗口,父窗口可以通过发送消息给控件控制控件的行为。
***控件的本质也是一个窗口。***也可以说在Windows中万物皆窗口
Windows窗口风格

Windolws 窗口从其特点是主要分为两大类

1、一类是表明窗口和其他窗口关系的包括:
WS_OVERLAPED(重叠窗口样式)
  一个重叠窗口是顶层窗口有一个标题栏,边框和客户区,它的目的是作为一个应用程序的主窗口。 它也可以有一个窗口菜单,最小化和最大化按钮和滚动条。 重叠的窗口作为主窗口使用通常包括所有这些组件。
WS_POPPUP(弹出窗口)
 弹出窗口是顶级窗口,并连接到桌面窗口的子窗口的列表。 应用程序通常使用对话框弹出窗口。 主要的区别弹出和重叠的窗口是弹出式窗口不需要有标题和重叠的窗口必须有标题。
WS_CHILD(子窗口)
  子窗口必须有一个父窗口,并只限于其父窗口内。 这是在子窗口和重叠和弹出窗口的主要区别。

2、一类是表明窗口自身外观特征的 WS_BORDER(边框) WS_CAPITON(标题栏)

Windows标准控件

Windows通用控件

  • wC_LISTVIEW列表框控件
  • wC_TREEVIEW 树控件
  • wC_TABCONTROL Tab控件

控件的响应

子控件通知父窗口一些事件,例如子控件被点击,需要通过以下两类消息。
标准控件的消息:WM_COMMAND
通用控件的消息:WM_NOTIFY

创建窗口实现按钮及文本控件

#include<Windows.h>
#include<CommCtrl.h>LRESULT CALLBACK WindowProc(_In_ HWND hwnd,_In_ UINT uMsg,_In_ WPARAM wParam,_In_ LPARAM lParam
)
{static HINSTANCE hInstance = GetModuleHandle(NULL);//获取当前程序的实例句柄switch (uMsg) {case WM_CREATE://添加控件CreateWindowW(WC_BUTTON,//窗口类名,标准控件点击后触发32行代码L"按钮1",//窗口名WS_CHILD | WS_VISIBLE,//窗口在父窗口的关系名|自身外观特征名10, 10, 120, 40,//xy坐标及宽高hwnd,//父窗口句柄(HMENU)0x100,//控件的ID,控件之间的ID不要重复hInstance,//获取的实例句柄0);CreateWindowW(WC_BUTTON, L"按钮2", WS_CHILD | WS_VISIBLE, 10, 80, 120, 40, hwnd, (HMENU)0x101, hInstance, 0);CreateWindowW(WC_EDIT, L"文本框内容", WS_CHILD | WS_BORDER | WS_VISIBLE, 10, 150, 120, 40, hwnd, (HMENU)0x102, hInstance, 0);break;case WM_CLOSE:MessageBoxW(hwnd, L"窗口关闭了", L"提示", MB_OK);DestroyWindow(hwnd);PostQuitMessage(0);break;case WM_COMMAND://标准控件的消息{WORD ControlId = LOWORD(wParam);if (ControlId == 0x100){MessageBoxW(hwnd, L"按钮1被点击了", L"提示", MB_OK);}else if(ControlId == 0x101){MessageBoxW(hwnd, L"按钮2被点击了", L"提示", MB_OK);} break;} }return DefWindowProcW(hwnd, uMsg,wParam,lParam);
}int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPreInstance, LPSTR lpCmdLine, int nCmdShow)
{//1、创建窗口类WNDCLASSW myWndClass{ 0 };myWndClass.lpfnWndProc = WindowProc;myWndClass.lpszClassName = L"dsdWindows";//2、注册窗口类RegisterClassW(&myWndClass);//3、创建窗口HWND hwnd = CreateWindowW(myWndClass.lpszClassName,L"dsdWindows",WS_OVERLAPPEDWINDOW,//重叠窗口样式,其他窗口写在该窗口上方即16行代码CW_USEDEFAULT,0,CW_USEDEFAULT,0,NULL,NULL,hInstance,0);//4、显示窗口ShowWindow(hwnd, SW_SHOWNORMAL);//SHOWWINDOWS展示样式MSG msg{ 0 };while (GetMessageW(&msg,0,0,0)) {DispatchMessageW(&msg);}return 0;
}

对不同控件进行实现


【免杀前置课——Windows编程】五、窗口控件——什么是控件、Windolws 窗口两大类、Windows标准控件/通用控件、控件响应的接收、创建窗口制作不同控件相关推荐

  1. 【免杀前置课——Windows编程】十、进程间通信(COPY_DATA通信,邮槽通信)、实现两进程通信(附代码)

    进程间通信 进程间通信 1.COPY_DATA方式 2.邮槽的方式 实现两进程通信 进程接收端 进程发送端 错误调试小技巧 进程间通信 每个进程都有自己独立的4G内存空间,彼此是不能直接互相访问的.如 ...

  2. 【免杀前置课——Windows编程】十四、异步IO——什么是异步IO、API定位问题、APC调用队列

    异步IO 异步IO 异步I/0注意事项: 定位问题 总解决方案 APC调用队列 异步IO 当我们读取一个文件时,一般情况下,线程是阻塞的,也就是说,当前线程在等待文件读取操作结束,这种方式叫同步IO. ...

  3. 【免杀前置课——Windows编程】十三、事件与信号量——事件与互斥体区别、操纵信号量实现游戏多开访问控制(附代码)

    事件 事件可以完全控制,其他无法控制线程的执行顺序,但是事件对象可以做到. ***事件(Event)***是在线程同步中最常使用的一种同步对象,事件包含一个使用计数,一个是用来表示自动重置/手动重置的 ...

  4. 麦语言和python区别_麦语言编程教程之二:解决两大类问题

    所有的编程都可以归结为以下三类: 第一,表达式问题.以当前视角,给出变量的计算公式.所谓的当前视角,就是不考虑位置关系,把那个位置当作是当前位置.事实上,前面那张表中任何一个方格的数据,都是把这个方格 ...

  5. [从零开始学习FPGA编程-29]:进阶篇 - 基本时序电路-时序电路的两大基本特征(状态记忆与时钟触发)

    作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客 本文网址:https://blog.csdn.net/HiWangWenBing/article/detai ...

  6. 使用计算机制作的数字文本若根据,使用计算机制作的数字文本若根据它们是否具有排版格式来分,可分为简单文本和丰富格式文本两大类。用Wor...

    _ 斜盘式柱塞泵中的柱塞完成的是转动和往复运动的复合运动 4. 5个月患儿,低热,咳嗽,呼吸急促,呼气延长,双肺可闻及大量哮鸣音及中小水泡音,应诊断为( ) 已知系统的激励e(t)与响应r(t)的关系 ...

  7. Windows编程-创建窗口

    窗口创建的基本步骤是: 设计窗口类 注册窗口类 创建窗口 显示更新窗口 消息循环 编写回调函数 ----------帅气的分割线---------– 下面我们一步一步进行讲解: 1.设计窗口类WNDC ...

  8. 远控免杀专题(9)-Avet免杀(VT免杀率14/71)

    本专题文章导航 1.远控免杀专题(1)-基础篇:https://mp.weixin.qq.com/s/3LZ_cj2gDC1bQATxqBfweg 2.远控免杀专题(2)-msfvenom隐藏的参数: ...

  9. 远控免杀专题(24)-CACTUSTORCH免杀

    转载:https://mp.weixin.qq.com/s/g0CYvFMsrV7bHIfTnSUJBw 免杀能力一览表 几点说明: 1.上表中标识 √ 说明相应杀毒软件未检测出病毒,也就是代表了By ...

最新文章

  1. (四十七)Quartz2D引擎初步
  2. Tensorflow— saver_save
  3. Nessus提示API Disabled错误
  4. 成功解决AttributeError: type object 'scipy.interpolate.interpnd.array' has no attribute '__reduce_cython
  5. 解决MySQL报错ERROR 2002 (HY000)【转】
  6. kafka 丢弃数据_Kafka史上最详细原理总结下
  7. 通过Nginx反向代理,实现远程调试本机代码
  8. MapGISK9安装
  9. iPhone开发逻辑分辨率
  10. 安卓view.getMeasuredHeight()得到的高度单位以及dp和px的转换
  11. blowfish算法c语言,blowfish-c源代码(简陋).doc
  12. rust大量科技零件_20世纪的黑科技有上万个零件,复杂程度10个人9个看不懂!
  13. 使用canvas 绘制象棋棋盘
  14. Numpy库及ndarrary基础知识
  15. uploadifive struts2实现图片上传
  16. gnuplot下载安装使用
  17. 中国三大运营商3G工作频率/频点及速率
  18. 算法设计与分析股民解套问题
  19. 为什么必须执行前端测试?
  20. 64位环境中使用SQL查询excel的方式解决

热门文章

  1. colcon 单独编译某个功能包
  2. golang kv存储引擎
  3. 搜索引擎免费登陆入口
  4. intval()很重要
  5. Integer.valueOf、intValue、Integer.parseInt使用
  6. 数据结构习题集之魔王语言解释
  7. (原创)通过DrawingCache截取View图片
  8. Linux监控平台搭建Zabbix(资源)
  9. Blender遇到的一些莫名其妙的问题
  10. [转]JavaScript格式化代码程序