![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
windows编程
发如雪-ty
一个工作7年的程序员,一直从事C++开发方面的工作,曾有幸在安防行业深耕4年,并有幸在工业检测行业工作至今已有3年,主要负责系统软件的设计与开发,个人编程的信仰:不要盲目学习酷炫的东西,最重要的依然是内功。
展开
-
如何获取屏幕的坐标信息
屏幕坐标信息原创 2023-04-07 22:41:35 · 174 阅读 · 0 评论 -
windows编程35-windows标准控件之组合框
原创 2021-07-21 23:09:55 · 182 阅读 · 0 评论 -
windows编程34-windows标准控件之列表框
下面看实际代码:case WM_CREATE: { LPCREATESTRUCT ps = (LPCREATESTRUCT)lParam; HWND hlist = CreateWindow(L"listbox", L"列表控件", WS_CHILD | WS_VISIBLE, 30, 100, 200, 100, hWnd, (HMENU)1111, ps->hInstance, NULL); SendMessage(hlist, LB_ADDSTRING, 0, WPAR...原创 2021-07-20 23:18:00 · 310 阅读 · 0 评论 -
windows编程33-窗口超类化
原创 2021-07-18 14:59:01 · 123 阅读 · 0 评论 -
windows编程32-窗口子类化
原创 2021-07-18 14:14:01 · 116 阅读 · 0 评论 -
windows编程32-常用的几个控件相关的API
注意:此接口只能查找顶层窗口,不能用于查找控件。原创 2021-07-18 12:52:56 · 238 阅读 · 0 评论 -
windows编程之官方文档
https://docs.microsoft.com/en-us/windows/win32/controls/ttm-updatetiptext原创 2021-07-18 12:07:22 · 214 阅读 · 0 评论 -
windows编程31-Windows标准控件之提示框
需要添加如下的代码,否则编译不通过:#include<CommCtrl.h> #pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"") ...原创 2021-07-17 00:04:55 · 203 阅读 · 0 评论 -
windows编程30-Windows标准控件之编辑框
其中密码和多行不能同时存在;如果要显示滚动条需要ES_AUTOVSCROLL同时给控件指定WS_VSCROLL.编辑框如何选中文本,可以使用EM_SETSEL,如下case WM_CREATE: { LPCREATESTRUCT lp = (LPCREATESTRUCT)lparam; HWND hedit = CreateWindow(L"edit", L"这是一个编辑框", WS_CHILD | WS_VISIBLE|WS_BORDER, 10, 20, 100, 45, hwn..原创 2021-07-15 22:06:20 · 368 阅读 · 1 评论 -
windows编程之如何获取控件的ID
原创 2021-07-15 21:54:51 · 1265 阅读 · 0 评论 -
windows编程29-Windows程序的菜单下
case WM_RBUTTONDOWN: { //创建顶层菜单 HMENU htopx = CreatePopupMenu(); AppendMenu(htopx, MF_STRING, 1111, L"新建"); AppendMenu(htopx, MF_STRING, 1112, L"打开"); AppendMenu(htopx, MF_STRING, 1113, L"保存"); //在指定位置弹出菜单 POINT p{ LOWORD(lpa...原创 2021-07-14 23:59:55 · 72 阅读 · 0 评论 -
windows编程28-Windows程序的菜单中
加载代码:case WM_CREATE: { //创建顶层菜单 HMENU htopx = LoadMenu(GetModuleHandle(NULL), MAKEINTRESOURCE(IDR_MENU1)); SetMenu(hwnd, htopx); //调用时机:窗口创建成功,CreateWindow返回前调用 LPCREATESTRUCT pc = (LPCREATESTRUCT)lparam; HWND hstatic = CreateWindow(L"st...原创 2021-07-14 23:36:56 · 121 阅读 · 0 评论 -
windows编程27-Windows程序的菜单上
示例:部分代码://创建顶层菜单 HMENU hTop = CreateMenu(); AppendMenu(hTop, MF_STRING, 520, L"文件"); AppendMenu(hTop, MF_STRING, 521, L"工具"); //创建弹出菜单 HMENU hPopup = CreatePopupMenu(); AppendMenu(hPopup, MF_STRING, 522, L"打开"); AppendMenu(hPopup, MF_SEPAR...原创 2021-07-14 23:14:56 · 146 阅读 · 0 评论 -
windows编程26-Windows标准控件之静态文本的美化
case WM_CTLCOLORSTATIC:{ HDC hdc = (HDC)wparam; HWND hwndstatic = (HWND)lparam; SetTextColor(hdc, COLORREF(RGB(255, 0, 0)));//设置文字的颜色 SetBkColor(hdc, RGB(0,255, 0));//设置文字的背景 //return (LRESULT)GetStockObject(BLACK_BRUSH);//设置控件的背景 HBRUSH hbrush ...原创 2021-07-14 22:02:51 · 195 阅读 · 1 评论 -
windows编程26-Windows标准控件之静态文本
示例:case WM_CREATE: { //调用时机:窗口创建成功,CreateWindow返回前调用 LPCREATESTRUCT pc = (LPCREATESTRUCT)lparam; HWND hstatic = CreateWindow(L"static", L"这是一个静态文本", WS_CHILD | WS_VISIBLE|SS_BITMAP, 10, 10, 150, 35, hwnd, (HMENU)111, pc->hInstance, 0);...原创 2021-07-13 23:41:36 · 166 阅读 · 0 评论 -
windows编程25-补充之GetModuleHandle函数获取进程、dll等的句柄
该函数被声明为:HMODULE GetModuleHandle(PCTSTR pszModule);如果调用参数pszModule为NULL,则该函数返回当前调用进程的句柄。如果指定了一个以0结尾的字符串,那么函数返回该字串指定的可执行文件或者DLL的句柄。...原创 2021-07-11 11:11:36 · 676 阅读 · 0 评论 -
windows编程24-Windows资源文件.rc
那么如何加载这些资源到应用程序中呢?但是windows建议使用loadimage下面举个例子,下面是我导入的一个资源:然后加载它,代码如下:static HBITMAP hbmp;case WM_DESTROY: PostQuitMessage(0); if (hbmp) { DeleteObject(hbmp); } break;case WM_CREATE: { //调用时机:窗口创建成功,CreateWindow返回前调用 H...原创 2021-07-11 11:07:30 · 319 阅读 · 1 评论 -
windows编程23-windows标准控件之美化
那如何加载图标呢?比如:示例:case WM_CREATE: { //调用时机:窗口创建成功,CreateWindow返回前调用 HWND btn = CreateWindow(L"button", L"普通按钮", WS_CHILD | WS_VISIBLE | BS_BITMAP, 15, 15, 80, 40, hwnd, (HMENU)1001, ((LPCREATESTRUCT)lparam)->hInstance, NULL); HBITMAP hbmp =..原创 2021-07-10 23:39:30 · 196 阅读 · 0 评论 -
window编程22-windows标准控件之按钮
部分代码:case WM_CREATE: { //调用时机:窗口创建成功,CreateWindow返回前调用 CreateWindow(L"button", L"普通按钮", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 15, 15, 80, 40, hwnd, (HMENU)1001, ((LPCREATESTRUCT)lparam)->hInstance, NULL); } case WM_COMMAND: { switch ...原创 2021-07-10 23:05:36 · 232 阅读 · 1 评论 -
windows编程21-获取鼠标键盘消息
注意如果要使用双击事件,需要在注册类中使用CS_DBLCLKS。下面是一个例子。#include <windows.h>//typedef LRESULT (CALLBACK* WNDPROC)(HWND, UINT, WPARAM, LPARAM); int(*Pmyf)(int a, int b);LRESULT CALLBACK MywinPorc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam);in...原创 2021-07-09 23:24:31 · 738 阅读 · 1 评论 -
windows编程20-之WM_PAINT、WM_ERASEBKGND
两个函数发出了WM_PAINT结果:结果:结果:其实加了UpdateWindow就相当于立马到了窗口过程,没有走消息队列的流程。原创 2021-07-09 00:26:36 · 185 阅读 · 0 评论 -
windows编程19-之消息驱动机制
原创 2021-07-08 23:43:04 · 184 阅读 · 0 评论 -
windows编程18-补充之字符集
原创 2021-07-08 23:08:09 · 105 阅读 · 0 评论 -
windows编程17-补充之常见的数据类型
原创 2021-07-08 22:42:35 · 84 阅读 · 0 评论 -
windows编程16-补充之窗口类
原创 2021-07-08 22:14:36 · 89 阅读 · 0 评论 -
windows编程15-其他控件的事件处理
其他控件的事件处理在实际开发中,我们往往需要知道哪个按钮被选中了,才能进行下一步的操作。例如对于一组单选按钮,只有一个选项能被选中,最好的办法是将这组按钮作为参数传入一个函数,通过函数返回值判断哪个按钮被选中了。但遗憾的是,在Windows中不能一次性获得一组按钮的选中状态,只能一个一个地遍历。复选框也是如此。可以通过SendMessage函数发送BM_GETCHECK消息来获取按钮的选中状...原创 2020-02-23 19:51:52 · 172 阅读 · 0 评论 -
windows编程14-其它常用控件
其它常用控件单选按钮(Radio Button)和复选框(Check Box)是常见的Windows控件,用于从给出的选项中选择一项或多项单选按钮是互斥的,只能选择其中一项;而复选框没有限制,可以选择一项或多项。单选按钮和复选框都是一种特殊的按钮,窗口类名称都是button,只不过增加了一些特殊的窗口样式罢了。单选按钮的样式为BS_AUTORADIOBUTTON,复选框的样式为BS_AUTO...原创 2020-02-23 17:48:42 · 302 阅读 · 0 评论 -
windows编程13-WM_CTLCOLORSTATIC
修改字体颜色和static的背景当 static 控件或具有 ES_READONLY 风格的 edit 控件被绘制时,会向父窗口发送 WM_CTLCOLORSTATIC 消息。如果我们在窗口过程中处理该消息,就必须返回一个画刷句柄,Windows 会使用该画刷来绘制控件背景(子窗口背景)。也就是说,改变 static 控件的背景颜色只有这一种方式,就是处理 WM_CTLCOLORSTATIC ...原创 2020-02-23 15:54:33 · 1619 阅读 · 0 评论 -
windows编程12-edit和消息传递
edit 和消息传递编辑框控件的窗口类名是edit。除了子窗口常用的风格 WS_CHILD、WS_VISIBLE、WS_BORDER 外,edit 控件也有自己的风格,都是以ES开头。风格说明ES_AUTOHSCROLL当输入文字超出横向显示范围时自动滚动(一般必选)。ES_AUTOVSCROLL当输入文字超出纵向显示范围时自动滚动。ES_CENTER文本...原创 2020-02-23 15:15:23 · 277 阅读 · 0 评论 -
windows编程11-button
button按钮既是标准控件,也是子窗口,窗口类名是button。Button 控件样式以BS开头,常用的有:类型说明BS_LEFT文本居左。BS_RIGHT文本居右。BS_CENTER文本水平居中(默认为 BS_CENTER)BS_BOTTOM文本位于按钮底部。BS_TOP文本位于按钮顶部BS_VCENTER文本垂直居中(默认为...原创 2020-02-23 13:32:52 · 480 阅读 · 2 评论 -
windows编程10-换字体
字体前面无论是使用文本输出函数还是 static 控件,字体都是默认的,比较丑陋,我们完全可以自己创建更加炫酷的字体。创建字体使用 CreateFont 函数,它的原型是:HFONT CreateFont( int cHeight, //字体的逻辑高度 int cWidth, //字体的逻辑宽度 int cEscapement, //指定移位向量相对X轴的偏转角...原创 2020-02-23 12:54:37 · 440 阅读 · 0 评论 -
windows编程09-static textbox control
static textbox control实际开发中一般使用静态文本框控件来输出文本。静态文本框是Windows 的一种标准控件,可以用来在窗口上显示一段文本,并且文本容易受到控制。除了静态文本框,Windows的标准控件还有很多种,例如按钮、下拉菜单、单选按钮、复选框等。其实,控件也是一种窗口,也使用 CreateWindow 函数来创建。但是它们使用的窗口类的名字比较特殊,是由Windo...原创 2020-02-23 12:34:04 · 191 阅读 · 0 评论 -
windows编程08-GDI
GDIGDI 是 Graphics Device Interface 的缩写,称为图形设备接口,主要用来绘图,由动态链接库 GDI32.DLL 提供支持。GDI 就是一个函数库,提供了很多绘图函数(也就是GDI32.DLL 中的导出函数),上节使用的 TextOut 就是其中之一。GDI 非常重要,不但应用程序使用它来绘图,Windows 本身也使用GDI来显示用户界面,比如菜单、滚动条、图标...原创 2020-02-23 00:14:20 · 341 阅读 · 0 评论 -
windows编程07-DC
DC设备环境(DC)在Windows中,一切能在显示器上看到的都是图形,不但包括点、线、矩形、圆等,也包括文字、字体。对用户来说文字和图片是不同的,但它们在本质上都是图形,都需要在显示器上画出来。这也是Windows被称作图形操作系统的原因。Windows不允许我们直接访问硬件,如键盘、显示器、打印机等,在与这些硬件通信前要获得设备环境(Device Context,简称 DC),进而间接的...原创 2020-02-22 23:40:47 · 655 阅读 · 0 评论 -
windows编程06-重绘
重绘当用户在屏幕移动其他程序的窗口时,可能会遮住当前程序的部分窗口。Windows 不会保存被遮住的那部分窗口,当其他程序的窗口被移开时,Windows 会要求你的程序重新绘制刚才被遮住的部分区域。如果你自己不重绘,Windows 是不会管的。Windows 是一个消息驱动的系统,它使用两种方式把各种事件通知给应用程序:1.把消息放到应用程序的消息队列中,让程序自己通过 GetMessage...原创 2020-02-22 23:17:14 · 471 阅读 · 0 评论 -
Windows编程05-一个完整的Windows程序结构
一个完整的Windows程序结构需要注意几点:1.win32项目2.文件格式为.c,不是.cpp#include <windows.h>LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);//窗口过程int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevIn...原创 2020-02-22 20:29:49 · 369 阅读 · 0 评论 -
Windows编程04-一些重要的基本概念
基本知识一些重要的基本概念窗口窗口的概念很容易理解,就是我们使用软件时看到的界面。Windows 的核心就是窗口,它是Windows一统PC操作系统市场的杀手锏,如下图所示:我们使用的软件都有自己的窗口,比如 QQ、计算器、记事本等。这些窗口可以包含输入框、下拉菜单、单选按钮、多选按钮、文本区域等各种各样的控件(Controls),有的甚至还有动画!窗口、控件、图像、音频视频等都称为资...原创 2020-02-22 19:50:12 · 216 阅读 · 0 评论 -
windows编程03-HelloWorld
windows编程03-HelloWorld编写Windows程序,首先要包含 windows.h 头文件。windows.h 还包含了其他一些Windows头文件,例如:windef.h:基本类型定义winbase.h:内核函数wingdi.h:用户接口函数winuser.h: 图形设备接口函数这些头文件定义了Windows的所有数据类型、函数原型、数据结构和符号常量,也就是说,所有...原创 2020-02-22 19:36:56 · 372 阅读 · 2 评论 -
windows编程02-宽字符与Unicode
宽字符与Unicode在C语言中,我们使用char来定义字符,占用一个字节,最多只能表示128个字符,也就是ASCII码中的字符。计算机起源于美国,char 可以表示所有的英文字符,在以英语为母语的国家完全没有问题。但是世界上存在很多不同的语言,例如汉语、汉语、日语等有成千上万个字符,需要用多个字节来表示,称之为宽字符(Wide Character)。Unicode 是宽字符编码的一种,已经被...原创 2020-02-21 15:05:41 · 261 阅读 · 0 评论 -
windows编程01-Windows数据类型
windows编程01-Windows数据类型 Windows使用typedef或#define定了很多新的数据类型,前面几节中我们已经领略到了。它们虽然多,但是都有规律可循,很多都是对C/C++中数据类型的简单加工,而且很容易“见名知意”。要想学习Windows编程,必须要了解常用的数据类型。值得注...转载 2020-02-20 15:46:12 · 395 阅读 · 0 评论