封装第一个window应用程序

系统总裁---系统封装工具---封装windows7系统实操 1:如果Win7系统封装母盘是Administrator账户,可以直接封装,如果使用的是其他账户,需要先启用Administrator账户,然后注销账户进入Administrator账户中删除其他账户后再封装。注:如果点击【断开连接】出现如图所示错误弹框,也可以点击【取消】,然后再次点击【断开连接】,可以正常断开连接,一般不会再出现错误弹框。注:这里点击封【装体检】进行封装体检,会极低概率的出现封装报错,如果出现封装报错,一切只能从头再来,重新封装,建议不进行封装体检。保存配置文件,这样就会静默安装驱动。 阅读详情

创建windlg.h

#include <windows.h>
#include <tchar.h>
#ifndef WINDLG_H
#define WINDLG_H

#define mystyle CS_HREDRAW   |   CS_VREDRAW   

class windlg
{
public:
//***********************************
//构造函数声明
    windlg(); //构造函数


//***********************************
//析构函数声明
	~windlg();


//***********************************
//类内静态回调函数声明
static LRESULT  CALLBACK WndprocMine(  
		HWND   hwnd,  
		UINT message ,  
		WPARAM wParam,  
		LPARAM lParam ); 

//***********************************
//类内c创建函数声明
bool createwin(   HINSTANCE hInstance,
				  WNDPROC   lpfnWndProc=windlg::WndprocMine);
		             
	 
//***********************************
//类内测试函数声明
void test();
HWND getHwnd();

private: 
	HWND hwnd; //窗口句柄
	

	
};

#endif


创建windlg.cpp

#include "windlg.h"


//**************************************
//构造函数
windlg::windlg():
        hwnd(NULL){ }


//**************************************
//析构函数
windlg::~windlg(){}


//**************************************
//创建窗口函数
bool windlg::createwin(
			HINSTANCE hInstance,
			WNDPROC   lpfnWndProc )
{


	TCHAR className[]=L"你好";  
	TCHAR winName[]=L"大家好!!!";  

	WNDCLASSEX wndclass;  

	wndclass.style=CS_HREDRAW   |   CS_VREDRAW   ;   
	wndclass.lpfnWndProc=lpfnWndProc;  
	wndclass.cbClsExtra=0;  
	wndclass.cbWndExtra=0;  
	wndclass.hInstance=hInstance;  
	wndclass.hIcon=LoadIcon   (NULL,   IDI_APPLICATION)   ;   
	wndclass.hCursor=LoadCursor   (NULL,   IDC_ARROW)   ;   
	wndclass.hbrBackground   = (HBRUSH) GetStockObject( WHITE_BRUSH );             
	wndclass.lpszMenuName     =   NULL   ;             
	wndclass.lpszClassName   = className  ;  
	wndclass.cbSize = sizeof( WNDCLASSEX );  
	wndclass.hIconSm = NULL;  


	//注册窗口
	if (RegisterClassEx(&wndclass)==NULL){
		MessageBox(NULL,TEXT("失败信息"),TEXT("窗口注册失败!!!"),MB_OKCANCEL);
		return false;
	}
	else {
		MessageBox(NULL,TEXT("成功信息"),TEXT("窗口注册成功!!!"),MB_OKCANCEL);
	}
	
	//创建窗口
	hwnd=CreateWindowEx(
		WS_EX_CLIENTEDGE,  
		className ,  
		winName,  
		WS_OVERLAPPEDWINDOW,  
		100,100,600,400,  
		NULL,NULL,hInstance,NULL);  

	if (hwnd==NULL){  
		MessageBox(NULL,L"创建主窗口时发生错误qq群!",L"错误信息",MB_OK|MB_ICONSTOP);  
		return false;  
	} 

	//显示窗口
	ShowWindow(hwnd,SW_SHOW);
	UpdateWindow(hwnd);

	//寄存当前对象指针
	SetWindowLongPtr(hwnd,GWL_USERDATA,(DWORD)this);

	return true;
}

//**************************************
//测试函数
void windlg::test()
{
	::MessageBox(NULL,L"成功调用",L"类内回调函数调成功!!!",MB_OKCANCEL);
}


//**************************************
//静态回调函数定义
LRESULT  CALLBACK windlg::WndprocMine(
	           HWND   hwnd,  
			  UINT message ,  
			  WPARAM wParam,  
			  LPARAM lParam )
{
	windlg *pObject=(windlg*)GetWindowLongPtr(hwnd,GWL_USERDATA);
	switch (message)
	{
	case WM_RBUTTONDOWN:
		pObject->test();
		break;
	case WM_DESTROY:
		
		PostQuitMessage(0);
	
	default:
		 return DefWindowProc(hwnd,message,wParam,lParam);
	}

	return 0;

}
//**************************************
//获得当前窗口句柄
HWND windlg::getHwnd()
{
	return hwnd;
}


创建winmain.cpp

#include "windlg.h"

//普通回调函数声明
LRESULT CALLBACK wndproc(HWND hwnd,   
	UINT message ,   
	WPARAM wParam,   
	LPARAM lParam )  ;


int WINAPI WinMain( __in HINSTANCE hInstance,
	                __in_opt HINSTANCE hPrevInstance,
					__in LPSTR lpCmdLine, 
					__in int nShowCmd )
{
	windlg winFirst;

	//这段代码调用类内静态回调函数
	if (winFirst.createwin(hInstance)==false){
	return 0;
	}

	//消息循环
	MSG msg;  
	while(GetMessage(&msg,NULL,0,0)){  
		TranslateMessage(&msg);  
		DispatchMessage(&msg); 
	}

	return 0;
}

//普通回调函数
LRESULT CALLBACK wndproc(HWND hwnd,   
	UINT message ,   
	WPARAM wParam,   
	LPARAM lParam )  
{  
	windlg *pObject=(windlg*)GetWindowLongPtr(hwnd,GWL_USERDATA);
	switch (message)  
	{  
		
	case WM_LBUTTONDOWN:  
		MessageBox(NULL,L"  ",L"外函数!!!",MB_OKCANCEL); 
		pObject->test();
		break;  
	case WM_DESTROY:
		
		PostQuitMessage(0);
		
	default:  
		return DefWindowProc(hwnd,message,wParam,lParam);  
	}  
	return 0;  
}


 

Android全面解析Window机制 先假设如果没有window,会发生什么:我们看到的界面ui是view,如我们的应用布局,更简单是一个button。假如屏幕上现在有一个Button,如图1,现在往屏幕中间添加一个TextView,那么最终的结果是图2,还是图3:在上图的图2中,如果我要实现点击textView执行他的监听事件逻辑,点击不是textView的区域让textView消失,需要怎么实现呢? 阅读详情

相关推荐

基于Qt封装window service服务程序

基于Qt封装window service服务程序下载   1: 封装window服务应用流程:程序入口继承QtService,重写start pause resume方法,实现服务的启动,暂停,恢复功能。 class MyWindowServiceAPP : public QtService&lt;QApplication&gt; { public: MyWindowServi...

You never know your luck 1万+

从零开始封装windows10 1803 超详细图文分享 第三篇:程序的安装与优化

第三篇:程序的安装与优化 本篇分为两大块: 一、安装软件必要的程序 二、系统优化 正文部分: 一、安装软件必要的程序 将程序放入虚拟机磁盘 然后关闭所有打开的窗口!...

Angelo的自留地 4684

用EasySysprep封装Win7系统

前面我介绍了使用Dism++封装Windows 7系统,不过最后还是没达到我想要的效果。不过经过一番查阅之后,我发现我想要的效果好像没办法简单的使用单一工具达到。我希望做成的效果是类似于Win10,一个ISO镜像内置各种驱动及最新的更新,安装完成之后什么事情都不用做。不过现在看来这个要求比较高,所以得使用一些第三方工具才能比较方便的达成。 话说回来Dism++这个工具确实很好用,不过研究下来感觉

乐百川 11万+

MFC学习笔记(3)——Windows程序类的封装 中

派生类的应用 如果把窗口类CFrameWnd和应用程序类CWinApp预先定义后并内置在一个类库中,那么我们就可以使用这些类来定义对象,没有必要再由自己来声明类了。可是,直接调用的话,其代价就是程序设计的灵活性将会变差,很难实现应用程序的一些个性化要求。为解决这个代价,可以利用C++类的继承性和多态性来解决,即程序员可以找现有类的基础上派生自己的类。这样,程序员就可以在派生类中通过添加成员,或对

zjfuyuyang的博客 1084

Windows应用程序打包工具

常用的打包工具要么过于复杂,要么需要注册,实际上通常 的应用程序打包无需复杂的脚本,基本的作用是复制执行文件到客户端、建立程序菜单、快捷方式、控制面板删除连接,这几个作用,其他初始化、脚本等完全是应用程序的任务,安装程序无需干涉。

window应用程序打包工具

可以用c/s结构的windows应用程序打包工具。比pb,dephi等编译以后程序可以打包。

第三章—Windows程序

这一章我都不知道该如何写了,呵呵~~ 毕竟,Win32是一个非常深奥的系统,目前还容不得我这种 小辈在这儿说三道四,不过,我既然是要写给那些入门阶段的朋友们看的,又不是写给那些搞程序设计老鸟看的,所以,我也犯不着怕被人背后指着骂 本章的名字就叫《Windows程序》而不是《Windows程序设计》所以,我只是讲一些关于Windows程序运作的原理: Windows 为什么叫Windows,...

weixin_34396103的博客 134

SDR实战(五)-AD9361多芯片同步技术详解

本文详细解析了AD9361多芯片同步技术在SDR系统中的实现方法,涵盖硬件连接方案、软件配置流程及同步验证技巧。通过等长时钟走线、低抖动时钟分配和精确的SYNC信号控制,解决MIMO系统中多AD9361芯片的时钟同步难题,提升系统性能与稳定性。

weixin_30952535的博客 761

Windows应用程序的封装

在本文中,我们将讨论Windows应用程序的封装,此处的封装是用函数来封装函数,而不是用类来封装函数(MFC是这样做的)。那么,我们为什么要用函数来封装函数呢?因为这对理解MFC有很大好处。 先看没有封装的程序: #include // 回调函数 LRESULT CALLBACK MyFun( HWND hwnd, UINT uMsg, WPARAM wParam,

认知 行动 坚持 9090

Bootloader详解,理解Bootloader看这篇就够了

这里写目录标题一、Bootloader作用(目的)二、完成Boot最终目的的前提条件三、对前提条件的详细说明3.1、对前提条件(1)的说明:3.2、对前提条件(2)的说明:3.3、对前提条件(3)的说明:3.4、对前提条件(4)的说明:3.4、对前提条件(5)的说明:四、loader是干啥的 一、Bootloader作用(目的) Bootloader=Boot + loader Boot的目的: 最终目的:跳到C语言中;为了C语言运行程序会进行一系列的初始化,系统一上电后如何通过一系列的设置让软件程序员

iduuigdg的博客 11万+

【系统架构设计师-2025上半年真题】综合知识-参考答案及详解(75题完全回忆版)

【系统架构设计师-2025上半年真题】案例分析-参考答案及部分详解

数据知道的博客 1万+

封装window.sessionStorage,window.localStorage,并且可以设置过期时间

封装window.sessionStorage,window.localStorage,并且可以设置过期时间封装window.sessionStorage封装window.localStorage,并且可以设置过期时间 封装window.sessionStorage export const session = { set(key, val) { if (typeof val !== 'string') { val = JSON.stringify(val);

weixin_42952665的博客 1433

使用R包PreMSIm预测微卫星不稳定的标题:基于基因表达量的微卫星不稳定性预测

在本文中,我们将介绍如何使用R语言中的PreMSIm包来根据基因表达量进行微卫星不稳定性的预测。需要注意的是,本文仅介绍了使用PreMSIm包进行微卫星不稳定性预测的基本流程和代码示例。在实际应用中,还需要考虑数据的质量控制、模型优化以及结果的解释和验证等因素,以确保预测结果的准确性和可靠性。预测结果将返回一个包含微卫星不稳定性指数的向量,其中每个元素对应一个样本的预测结果。在有了输入数据后,我们可以使用PreMSIm包中的函数进行微卫星不稳定性的预测。函数生成一个包含所有样本的微卫星不稳定性信息的表格。

2301_79330511的博客 382

Javascript中封装window.open的例子

对window.open进行封装, 使其更好用, 且更兼容, 很多人说window.open不兼容,其实不是, 因为不能直接执行, 必须通过用户手动触发才行;看代码: 代码如下 复制代码 var openWindow = function(url, options) { var str = ""; if (options) { options.height ...

abc20041012的博客 206

C#解析基恩士(KEYENCE)PLC数据:KV协议通信与实时监控实现

KV协议是基恩士PLC使用的一种专用通信协议,通常用于与上位机进行数据交换。KV协议通过RS-232C、RS-485、Ethernet等接口与上位机通信,支持多种数据类型的读写,包括但不限于位、字、双字、浮点数等。简洁易用:KV协议的通信格式简单,易于实现。支持多种数据类型:支持位数据、字数据、定长字符串等。高效实时性:能够提供较高的实时数据交换性能,适合实时监控应用。本文介绍了如何通过C#与基恩士KV系列PLC进行通信,实现数据的解析和实时监控功能。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1806

Cursor自动生成测试用例

或者把你已有的规则直接复制粘贴到这个文档内(这里我用的是Markdown格式和CSV格式的测试用例生成规则,可以同时生成Markdown和CSV格式的测试用例)。在AI对话框这里,我们可以看到Cursor会逐步来帮我们生成测试用例,先分析识别需求文档,然后生成测试用例,最后会进行质量检查,确保生成的用例符合规范。生成的Markdown格式,可直接导入Xmind,生成思维导图,对应到具体的功能模块看具体的测试点,逻辑会更直观一些。(1)选中规则文档和需求文档:@你的测试用例规则文档@你的需求文档。

十二测试录 2432

window10封装之路

应公司业务需要,封装win10来玩玩。一、使用EasySysprep_4.5进行系统封装的第一阶段1.在workstation安装原版win10;并安装所有需要的软件如输入法、QQ、微信等2.把封装工具(IT天空下载的win10万能驱动-EasyDrv7_win10.x64.iso和封装软件EasySysprep)提前拷贝到虚拟机D盘;3.拷贝所有工具到虚拟机后,为保证兼容性卸掉虚拟机网卡;4.打...

weixin_33724059的博客 2681

腾讯音乐 QQ音乐商业化客户端开发工程师:岗位深度解析与面试攻略

腾讯音乐QQ音乐商业化客户端开发工程师岗位要求3年以上Android开发经验,熟练掌握Kotlin/Java及跨端开发技术。核心职责包括QQ音乐客户端功能开发、架构优化、性能提升及技术攻关。岗位要求计算机相关本科以上学历,具备完整项目开发经验,熟悉TCP/IP等网络协议,能独立解决复杂技术问题。面试重点考察项目经验、架构设计、性能优化及新技术研究能力,建议候选人准备具体案例,量化成果,并熟悉Flutter等跨端技术。该职位强调技术深度与产品思维的结合,需展现扎实的编程基础、问题解决能力和团队协作精神。

郑伟强dev的专栏 366

SDK编程之理解Window应用程序框架

从个人的学习经验看来。为了少走弯路,在深入学习Visual C++ 面向对象与可视化程序设计时,很有必要先对 Window应用程序框架来个初步的深刻的理解 并以此过度到真正的MFC编程中。 好了 废话少说 直奔主题 提示:Window 的一些 函数名称,类型,宏 等都是比较人性化的,所谓的人性化就是与英文的拼写比较接近,这一特征在一下代码有所体现 这里说一下  宏  的定义:C++  宏 是

gd1206100064的专栏 860

【QNX Hypervisor 2.2 用户手册】2.6 处理qvm终止

你可以注册通知,以在qvm进程实例退出时得到通知。这样你就可以采取相应的措施来响应这种终止事件。

从0到1,突破自己 1106

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Angular: 封装 window 令牌

Angular: 封装 window 令牌

梁什么鸭“的博客 474

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

HarmonyOS Next-鸿蒙中封装一个用于管理window窗口的类

分为UIAbility(含界面)和ExtensionAbility(场景化服务),组件化更规范。窗口管理(WindowStage)与UIAbility生命周期解耦,支持多窗口形态。每个组件(如PageAbility)独享一个ArkTS引擎实例,内存占用高。多个组件共享同一ArkTS引擎实例,内存占用更低且支持状态共享。原生支持多设备统一生命周期,组件可跨设备迁移和协同。严格管控后台进程,禁止随意驻留,防止恶意行为。目标窗口的宽度,单位为px。目标窗口的高度,单位为px。详细用法同志们就去官网查吧。

m0_73243974的博客 1557

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

应用程序类的声明和主函数封装

如果把主函数中的函数体

sanqima的专栏 1206

【Websocket】、【vue】封装websocket并将方法注入window中

vue中使用websocket,封装websocket,onopen,onmessage,onerror

PolarisWay的博客 941

基于Qt的window service服务封装

基于Qt的window service服务封装 去发现同类优质开源项目:https://gitcode.com/ 此仓库提供了基于Qt封装的window service服务应用的源码,可直接加载使用。 简介 本资源包含了一个利用Qt框架进行封装的Windows服务应用程序。通过此封装,开发者可以更加便捷地在Windows操作系统中实现后台服务程序,而无需深入掌握Windows服务的底层细节。 特点...

gitblog_06789的博客 394

Windows应用程序的面向对象特性 之 封装

下面主要讲一讲应用程序主函数中类的封装。从面向对象的思想进行分析,为了形成程序框架,应该声明两个类:窗口类和应用程序类。

好儿郎~志在四方 1407
上一篇: PostQuitMessage和ExitProcess的区别是什么?
下一篇: 随想
点滴成长路
博客等级 码龄14年 7粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值