SDK(2 note)

news2024/11/17 21:37:25

复习上一次内容:
把前一次笔记中的代码,简写一下

#include <windows.h>
#include<tchar.h>
#include <stdio.h>
#include <strsafe.h>
VOID showerrormassage()
{
	LPVOID lpMsgBuf;
FormatMessage(
	  FORMAT_MESSAGE_ALLOCATE_BUFFER |/*  分别为FORMAT_MESSAGE_ALLOCATE_BUFFER由函数分配输出缓冲区,
FORMAT_MESSAGE_FROM_SYSTEM表示程序将会在系统消息表资源中搜索所需消息,FORMAT_MESSAGE_IGNORE_INSERTS程序将会忽略搜索到消息中的插入序列。  */
      FORMAT_MESSAGE_FROM_SYSTEM |
      FORMAT_MESSAGE_IGNORE_INSERTS,
      NULL,
     GetLastError(),
     MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
     (LPTSTR)&lpMsgBuf,
     0, NULL);
	 MessageBox(NULL, (LPCTSTR)lpMsgBuf, TEXT("Error"), MB_OK | MB_ICONINFORMATION);
	 LocalFree(lpMsgBuf);
}

int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
	TCHAR* lpCmdline, //命令行参数,LPSTR可能会变成Unicode
	int nCmdShow) {
	/*MessageBoxA(NULL, "hell word ", "asm", MB_YESNO);*/\
	int res = MessageBoxW(NULL, L"hell unicode", L"asm", MB_YESNO);
	
	if (res == 0) {
	/*	MessageBoxW(NULL, L"错误", L"asm", MB_OK);*/
		showerrormassage();
		return 0;
	}
	
	return 0;
}


图形窗口

目前很多软件,为了更加好看,所以有些没有窗口
扁平化设计,希望极简,还有效率更高
例如windows10的菜单
窗口有上下遮挡的关系,当窗口变小的时候窗口会显示出来(当然还有父子关系的窗口)
要一个窗口,我们应该需要设置窗口大小
我们还会给窗口设置屏幕坐标

窗口坐标

窗口坐标,子窗口以父窗口为坐标,不应该以屏幕为坐标

可以看spy++

在这里插入图片描述我们可以看到桌面是所有窗口的父亲

窗口句柄

内核对象,你在系统建立的窗口一般油内核层记录

所以你创建的窗口,其实是内核层创建的,所以叫内核对象

内核对象保存信息

内核对象等价于》窗口等价于》句柄(索引)

当然还有权限之分

#include <windows.h>
#include<tchar.h>
#include <stdio.h>
#include <strsafe.h>
VOID showerrormassage()
{
	LPVOID lpMsgBuf;
FormatMessage(
	  FORMAT_MESSAGE_ALLOCATE_BUFFER |/*  分别为FORMAT_MESSAGE_ALLOCATE_BUFFER由函数分配输出缓冲区,
FORMAT_MESSAGE_FROM_SYSTEM表示程序将会在系统消息表资源中搜索所需消息,FORMAT_MESSAGE_IGNORE_INSERTS程序将会忽略搜索到消息中的插入序列。  */
      FORMAT_MESSAGE_FROM_SYSTEM |
      FORMAT_MESSAGE_IGNORE_INSERTS,
      NULL,
     GetLastError(),
     MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
     (LPTSTR)&lpMsgBuf,
     0, NULL);
	 MessageBox(NULL, (LPCTSTR)lpMsgBuf, TEXT("Error"), MB_OK | MB_ICONINFORMATION);
	 LocalFree(lpMsgBuf);
}

LRESULT CALLBACK WindowProc(HWND hwnd,//默认窗口过程处理
	UINT uMsg,
	WPARAM wParam,
	LPARAM lParam
) {
	if (uMsg == WM_CLOSE)
	{
		//向消息队列投递WM_QUTT消息
		PostQuitMessage(0);
	}
	return DefWindowProc(hwnd,uMsg, wParam, lParam);
}

//图形界面,窗口


int WINAPI _tWinMain(HINSTANCE hInstance,//应用程序示例句柄
	HINSTANCE hPrevInstance,//保留
	TCHAR* lpCmdline, //命令行参数,LPSTR可能会变成Unicode
	int nCmdShow) {//窗口显示方式
	//比如我们启动这个窗口,最大化,最小化
	/*MessageBoxA(NULL, "hell word ", "asm", MB_YESNO);*/\
		//int res = MessageBoxW(NULL, L"hell unicode", L"asm", MB_YESNO);
		//
		//if (res == 0) {
		///*	MessageBoxW(NULL, L"错误", L"asm", MB_OK);*/
		//	showerrormassage();
		//	return 0;
		//}
		程序》实例化》进程》多个窗口
	//1.注册窗口
	TCHAR  szWndclassName[] = { _T("chongmousyy") };
	
	WNDCLASSEX wc = { 0 };
	wc.cbSize = sizeof(WNDCLASSEX);
	wc.style = CS_VREDRAW|CS_HREDRAW;//窗口类型
	wc.lpfnWndProc = WindowProc;
	wc.hInstance = hInstance;
	wc.hIcon = LoadIcon(NULL,IDC_HAND);//图标
	wc.hCursor = LoadCursor(NULL,IDC_ARROW );//光标FDXX
	wc.hbrBackground = CreateSolidBrush(RGB(0,0,255));//窗口背景颜色刷子
	wc.lpszClassName = szWndclassName;//窗口类名,窗口名字不可以为空
	wc.lpszMenuName = NULL;//窗口菜单
	if (RegisterClassEx(&wc) == 0)
	{
		showerrormassage();
		return 0;
	};
	//2.创建窗口
	TCHAR szWndName[] = { _T("翀某人") };
	HWND hwnd = CreateWindowEx(0, 
		szWndclassName, 
		szWndName,
		WS_MAXIMIZEBOX | WS_MINIMIZEBOX | WS_VISIBLE|WS_OVERLAPPED|WS_SYSMENU,
		CW_USEDEFAULT,
		CW_USEDEFAULT,
		CW_USEDEFAULT,
		CW_USEDEFAULT,
		NULL,
		NULL,
		hInstance,
		NULL
	);
	if (hwnd == 0)
	{
		showerrormassage();
		return 0;
	}

	//3.显示跟新窗口
	ShowWindow(hwnd, SW_SHOWNORMAL);

	//4.消息循环(消息队列)
	BOOL bRET;
	MSG msg;
	while ((bRET=GetMessage(&msg, NULL, 0, 0))!=0) {
		if (bRET==-1) {
			break;
		}
		else
		{
			DispatchMessage(&msg);//派发消息
		}
	}
	//5.消息处理
	

	//资源
	return 0;
}


在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2162537.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

TS-AI:一种用于多模态个体化脑区划分的深度学习管道,并结合任务对比合成|文献速递-Transformer架构在医学影像分析中的应用

Title 题目 TS-AI: A deep learning pipeline for multimodal subject-specific parcellation with task contrasts synthesis TS-AI&#xff1a;一种用于多模态个体化脑区划分的深度学习管道&#xff0c;并结合任务对比合成 01 文献速递介绍 人类大脑在结构和功能组织上表…

nfs版本问题导致挂载失败

一、系统环境 环境版本操作系统Linux Mint 22 Wilma内核版本6.8.0-44-genericgcc 版本arm-none-linux-gnueabihf-gcc (GNU Toolchain for the A-profile Architecture 9.2-2019.12 (arm-9.10)) 9.2.1 20191025uboot 版本2020.01开发板Linux版本5.4.31 二、问题描述 内核通过…

拒绝信息泄露!VMD滚动分解 + Informer-BiLSTM并行预测模型

前言 在时间序列预测任务中&#xff0c;像 EMD&#xff08;经验模态分解&#xff09;、CEEMDAN&#xff08;完全集合经验模态分解&#xff09;、VMD&#xff08;变分模态分解&#xff09; 等分解算法的使用有可能引入信息泄露&#xff0c;具体情况取决于这些方法的应用方式。信…

通过WebTopo在ARMxy边缘计算网关上实现系统集成

随着工业互联网技术的发展&#xff0c;边缘计算成为了连接物理世界与数字世界的桥梁&#xff0c;其重要性日益凸显。边缘计算网关作为数据采集、处理与传输的核心设备&#xff0c;在智能制造、智慧城市等领域发挥着关键作用。 1. BL340系列概述 BL340系列是基于全志科技T507-…

yolov8/9关键点检测模型检测俯卧撑动作并计数【源码免费+数据集+python环境+GUI系统】

yolov89模型检测俯卧撑动作并计数【源码免费数据集python环境GUI系统】 yolov8/9关键点检测模型检测俯卧撑动作并计数【源码免费数据集python环境GUI系统】 YOLO算法原理 YOLO&#xff08;You Only Look Once&#xff09;关键点检测的算法原理主要基于YOLO目标检测算法进行改进…

R包:VennDiagram韦恩图

加载R包 library(VennDiagram)数据 # Prepare character vectors v1 <- c("DKK1", "NPC1", "NAPG", "ERG", "VHL", "BTD", "MALL", "HAUS1") v2 <- c("SMAD4", "DKK1…

VMware虚拟网络的连接模式探究与实践

VMware安装完成虚拟机后&#xff0c;大多要进行网络配置&#xff0c;实现网络的互联互联&#xff0c;初学者往往感觉与一台实体主机的网络配置不同&#xff0c;局域网中一台实体主机一个物理网卡&#xff0c;配置一个IP地址&#xff1b;或直接通过WAN上网&#xff0c;比较直观&…

基于python的django微博内容网络分析系统,实现文本划分词结构

本项目旨在开发一个基于Python的Django框架的微博内容网络分析系统&#xff0c;聚焦于微博文本的分词处理、名词提取和主成分分析。该系统通过数据收集与预处理、分词及结构化文本分析&#xff0c;为舆情监测、话题分析和用户行为研究提供了一体化的解决方案。 主要功能包括&a…

数据分析学习之学习路线

前言 我们之前通过cda认证了解到数据分析行业&#xff0c;但是获取到证书&#xff0c;并不代表着&#xff0c;我们已经拥有的数据分析的能力&#xff0c;所以通过系统的学习数据分析需要掌握的能力&#xff0c;并学习大佬们的分析经验、分析思路&#xff0c;才是成为数据分析师…

TDengine 学习与使用经验分享:业务落地实践与架构升级探索

前言 随着物联网、工业互联网等行业的快速发展&#xff0c;时间序列数据的管理和处理需求急剧增加。传统的关系型数据库在处理大规模、高频次的时序数据时性能存在瓶颈&#xff0c;而专门针对时序数据设计的数据库系统则显示出其独特优势。TDengine 是其中的佼佼者&#xff0c;…

给pycharm项目设置conda环境新

创建虚拟环境 conda create -n llama python3.11 激活虚拟环境 conda activate llama 设置Pycharm环境

【初阶数据结构】排序——插入排序

目录 前言直接插入排序希尔排序 前言 排序&#xff1a;所谓排序就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作。排序算法&#xff0c;就是如何使得记录按照要求排列的方法。   例如&#xff1a;买东西时会根据销量或价…

基于PHP+MySQL组合开发地方门户分类信息网站源码系统 带完整的安装代码包以及搭建部署教程

系统概述 随着互联网技术的飞速发展&#xff0c;地方门户分类信息网站逐渐成为城市生活不可或缺的一部分。它们涵盖了房产、招聘、二手交易、生活服务等多个领域&#xff0c;为当地居民提供了全方位的信息服务。为了满足这一市场需求&#xff0c;我们开发了这款基于PHPMySQL的…

23中设计模式,以及三种常见的设计模式demo

常见的23种设计模式 Java设计模式是软件工程中常见的解决方案&#xff0c;用于解决在软件设计中反复出现的问题。设计模式可以分为三大类&#xff1a;创建型模式、结构型模式和行为型模式。这里&#xff0c;我将简单介绍三种常见的设计模式&#xff0c;并给出相应的Java代码示例…

【车联网安全】车端网络攻击及检测的框架/模型

参考标准&#xff1a; 《汽车数据安全管理若干规定&#xff08;试行&#xff09;》ISO/SAE 21434《道路车辆 网络安全工程》威胁分析和风险评估&#xff08;TARA&#xff09;ISO/DIS 24089R155法规的国标转换&#xff1a;《汽车整车信息安全技术要求》&#xff08;UN R155&…

keil软件编写第一个c语言单片机程序并下载到单片机点亮一个发光二极管

Project-->new project-->选择文件夹-->输入工程名如&#xff1a;lession_1-->选择单片机芯片类型&#xff08;Atml的89c52&#xff09;-->newfile -->保存输入C语言文件名lession_1.c-->在左侧source Group 1右键--->选择add files to group “Source…

seaCMS v12.9代码审计学习(上半)

文章目录 CMS介绍环境搭建代码总览漏洞复现/js/player/dmplayer/player/index.php 反射性xss(详见https://github.com/HuaQiPro/seacms/issues/28)admin_ping.php 代码执行漏洞太多了&#xff0c;整理完了下半部分一次性写完 CMS介绍 海洋cms是一款经典的开源影视建站系统&…

使用celery+Redis+flask-mail发送邮箱验证码

Celery是一个分布式任务队列&#xff0c;它可以让你异步处理任务&#xff0c;例如发送邮件、图片处理、数据分析等。 在项目中和celery 有关系的文件如下&#xff1a; task.py : 创建celery.py 对象&#xff0c;并且添加任务&#xff0c;和app绑定&#xff0c;注意&#xff1…

C# CS1612 尝试修改集合中值类型的情况

在C#中&#xff0c;发现尝试直接修改集合中值类型的中的值发生报错 提示“它不是变量”&#xff0c;通过官方索引的链接可知&#xff0c;尝试修改某一值类型&#xff0c;但是该值类型作为中间表达式的结果生成但不存储在变量中&#xff0c;会发生报错。 正确做法是将其赋值给局…

网络安全-长亭雷池waf的sql绕过,安全狗绕过(5种绕过3+2)

目录 一、环境 二、讲解 三、绕过前思路整理 3.1 思路 3.1.1 入门思路 0x00截断filename 3.1.2 双写上传描述行(差异绕过&#xff09;【成功】 3.1.3双写整个 part 开头部分 3.1.4 构造假的 part 部分 1【成功】 3.1.5 构造假的 part 部分2【成功】 3.1.6 两个 bounda…