Win32基础知识整理
1、定义字符串
在资源新建String table,增加新字符串;
(win32加载)
TCHAR tcIDName[255]=_T("");
LoadString(hInstance,IDS_NAME,tcIDName,255);
2、窗口居中
在WM_CREATE消息中增加如下代码:
int scrWidth,scrHeight;
RECT rect;
//获得屏幕尺寸
scrWidth = GetSystemMetrics(SM_CXSCREEN);
scrHeight = GetSystemMetrics(SM_CYSCREEN);
//取得窗口尺寸
GetWindowRect(hwnd,&rect);
//重新设置rect里的值
rect.left = (scrWidth-rect.right)/;
rect.top = (scrHeight-rect.bottom)/;
//移动窗口到指定的位置
SetWindowPos(hwnd,HWND_TOP,rect.left,rect.top,rect.right,rect.bottom,SWP_SHOWWINDOW);
3、TChar字符串格式化
TCHAR tcText[255] = _T("");
_stprintf(tcText,_T("数字为%d"),1111);
4、键盘字符捕捉
case WM_KEYDOWN:
switch (wParam)
{
case VK_CONTROL:break;
}
break;
注意:如果点击按钮之后,或者其他控件,焦点就会被夺走,此时则需要通过SetFocus函数重新设置该窗口焦点。
5、创建按钮步骤(创建控件的方法)
(1)、定义资源ID,#define ID_BUTTON_CLOSE 100001
(2)、在WM_COMMAND消息中,添加以下代码:
HWND hButton = CreateWindow(_T("button"),
_T("退出"),//按钮上显示的字符
WS_CHILD | WS_VISIBLE,
50,100,70,30, //按钮在界面上出现的位置
hwnd,(HMENU)ID_BUTTON_CLOSE, //设置按钮IDIDC_BUTTON_CONTINUE = 131自己定义ID
((LPCREATESTRUCT)lParam)->hInstance,NULL);
(3)、在WM_CREATE消息中处理对子控件的点击处理
WORD wID = LOWORD(wParam);
WORD wEvent = HIWORD(wParam);
switch(wID)
{
case ID_BUTTON_CLOSE:
PostQuitMessage(0);
break;
}
6、加载资源图标
LoadIcon(hInstance,MAKEINTRESOURCE(IDI_ICON_APP));
7、绘制矩形并填充颜色
HBRUSH hbrush = CreateSolidBrush (RGB());
HBRUSH oldhBrush = (HBRUSH)SelectObject(hdc,hbrush);
Rectangle(hdc,lx,ty,rx,by);
SelectObject(hdc,oldhBrush);
DeleteObject(hbrush);
8、设置static文本背景颜色
case WM_CTLCOLORSTATIC:
{
if ((HWND)lParam == GetDlgItem(hwnd,ID_TEXT_SORCE))//获得指定标签句柄用来对比
{
SetTextColor((HDC)wParam,RGB(,,));//设置文本颜色
SetBkMode((HDC)wParam,TRANSPARENT);//设置背景透明
}
return (INT_PTR)GetStockObject((NULL_BRUSH));//返回一个空画刷(必须)
}
break;
9、设置win32窗口一直在最上面
SetWindowPos函数第二个参数设置为HWND_TOPMOST;
10、获得透明画刷
HBRUSH hBrush = (HBRUSH)GetStockObject(NULL_BRUSH);
其返回的是一个标识,所以不需要delete或者release。
11、在win32中使用GDI+
1、头文件中加入以下内容,宏可以改变
#ifndef AFXSTD_H
#define AFXSTD_H
#include <comdef.h>
#include <Windows.h> // must be inluded before gdiplus.h, otherwise compile error
#include <gdiplus.h>
#pragma comment(lib, "gdiplus.lib")
#endif
2、定义变量 ULONG_PTR m_gdiplusToken;
3、初始化
Gdiplus::GdiplusStartupInput gdiplusStartupInput;
Gdiplus::GdiplusStartup(&m_gdiplusToken, &gdiplusStartupInput, NULL);
4、使用(根据具体情况而定)
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hwnd,&ps);
Gdiplus::Graphics graphics(hdc);
Gdiplus::Pen myPen(Gdiplus::Color(,,,),);
graphics.DrawEllipse(&myPen,,,,);
graphics.DrawLine(&myPen, , , , );
EndPaint(hwnd,&ps);
5、释放GDI+ Gdiplus::GdiplusShutdown(m_gdiplusToken);
Win32基础知识整理的更多相关文章
- Kali Linux渗透基础知识整理(四):维持访问
Kali Linux渗透基础知识整理系列文章回顾 维持访问 在获得了目标系统的访问权之后,攻击者需要进一步维持这一访问权限.使用木马程序.后门程序和rootkit来达到这一目的.维持访问是一种艺术形式 ...
- Kali Linux渗透基础知识整理(二)漏洞扫描
Kali Linux渗透基础知识整理系列文章回顾 漏洞扫描 网络流量 Nmap Hping3 Nessus whatweb DirBuster joomscan WPScan 网络流量 网络流量就是网 ...
- 【OGG】OGG基础知识整理
[OGG]OGG基础知识整理 一.GoldenGate介绍 GoldenGate软件是一种基于日志的结构化数据复制软件.GoldenGate 能够实现大量交易数据的实时捕捉.变换和投递,实现源数据库与 ...
- java部分基础知识整理----百度脑图版
近期发现,通过百度脑图可以很好的归纳总结和整理知识点,本着学习和复习的目的,梳理了一下java部分的知识点,不定期更新,若有不恰之处,请指正,谢谢! 脑图链接如下:java部分基础知识整理----百度 ...
- wifi基础知识整理
转自 :http://blog.chinaunix.net/uid-9525959-id-3326047.html WIFI基本知识整理 这里对wifi的802.11协议中比较常见的知识做一个基本的总 ...
- JavaScript基础知识整理
只整理基础知识中关键技术,旨在系统性的学习和备忘. 1.在 JScript 中 null 和 undefined 的主要区别是 null 的操作象数字 0,而 undefined 的操作象特殊值NaN ...
- C#基础知识整理
年时,北风吹雁雪纷纷,一条秋裤冻上头.冷的连手都懒得动,就随便翻翻书,也没有更新博客,如今年已过,开始投入到正常的工作状态中,趁现在需求还没有来,把C#基础知识梳理一下,其实一直以来就想这样做的,对于 ...
- Oracle ASM 磁盘组基础知识整理(收藏版)
转至:https://cloud.tencent.com/developer/article/1494403 为什么要写这么一篇基础知识呢?还是有那么一点点原因的,不是胡编乱造还真是有真实存在的事件的 ...
- Linux基础知识整理
一.基础知识 1.Linux简介 Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户.多任务.支持多线程和多CPU的操作系统.它能运行主要的UNIX工具软件 ...
随机推荐
- [luoguP1134] 阶乘问题(数论)
传送门 我直接用 long long 暴力,居然过了 ——代码 #include <cstdio> int n; long long x, ans = 1; int main() { in ...
- vue.js定义一个一级的路由 ----由浅入深
#### 定义一个路由- 实例化一个路由并设置路由映射表 - 实例化里面第一个参数 routes 路由映射表 - routes 里面参数 - path 路由的路径 - component 路由对应的组 ...
- PostGIS学习相关术语
POI 兴趣点(英语:point of interest,通常缩写成POI)乃是电子地图上的某个地标.景点,用以标示出该地所代表的政府部门.各行各业之商业机构(加油站.百货公司.超市.餐厅.酒店.便利 ...
- qscoj Round 1(div 2)
卿学姐OJ……很休闲啊……? A 分析:枚举/exgcd B 分析:栈模拟 弄个栈模拟配对过程,将能够配对的()位置染色,最后最长的一段染色区间就是答案 C 分析:dp f[i][j]表示前i个物品, ...
- Ubuntu中PPA源是什么
以下内容转自https://imcn.me/ppa: PPA是Personal Package Archives首字母简写.翻译为中文意思是:个人软件包文档 只有Ubuntu用户可以用,而所有的PPA ...
- 晶振虚焊导致TI 28335 DSP 烧写FLASH后,连接仿真器时正常工作,拔掉仿真器却不能启动运行
遇到个诡异的问题,28335的DSP,之前程序调试一切正常,但是烧写FLASH后,拔掉仿真器却始终部工作. 解决思路: 1) 检查配置文件貌似没什么问题,复制到其他工程,在开发板上拔掉仿真器启动正常. ...
- da,da_driver
daSet=session.query(da).all() for da in daSet: da.mount_list=map(lambda x:x.mount_point , x for x in ...
- ci 在阿里云访问的时候404
最近想把ci 弄到阿里云去,结果发现,本地好好的,到了阿里云就404了.网上查了下 原来是 配置文件的问题. 配置文件就是 vhost下面的 **.conf文件 要有这个才行 location / ...
- 【转】 vsftp上传文件出现553 Could not create file解决方法
因工作需要,需要搭建一个ftp服务器,我使用ubuntu 10.04操作系统,下载vsftpdy源代码, 进行了编译,安装,然后按照INSTALL文件,创建了用户等操作. 因为时间比较紧,我采用 ...
- 'IOKING' TCP Transmission Server Engine ('云猴'©TCP通讯server引擎)(预告版)
关键词: IOKING IOCP TCP Transmission Server Engine Lock Free Interlocked 云猴完毕portTCP通讯server引擎 无锁 原子锁( ...