9 jiangqin115

尚未进行身份认证

暂无相关简介

等级
TA的排名 2k+

VC控制Win7系统音量

#include <Windows.h> #include <Endpointvolume.h> #include <Mmdeviceapi.h> #include <conio.h> #pragma comment(lib, "Winmm.lib") IAudioEndpointVolume *m_pEndptVolCtr...

2019-12-20 00:20:39

VC调节系统音量(win10/win7)

#include <windows.h> #include <mmdeviceapi.h> #include <endpointvolume.h>#include <audioclient.h>//设置音量bool SetVolum(int volume){HRESULT hr;IMMDeviceEnumerator* pDev...

2019-12-20 00:18:57

Sessions, Window Stations and Desktops(GetDesktopWindow函数得到的桌面句柄, 是Csrss.exe创建的一个窗口)

由于不是搞安全的,对这块的东西一直不是很清楚,今天特意整理下。总的来说,他们的关系如下:我们知道Windows是支持多用户的,Session可以理解为每个用户登录,比如当前登录和远程登陆。Window Stations可以理解为登陆后的不同用户组,我们在任务管理器中可以看到不同的用户名(比如 Richard, system, local service等),其中只有一个活动Station...

2019-12-03 23:03:16

ATL实现COM组件

参考文献:https://blog.csdn.net/Marcus2006/article/details/41978799ATL实现COM组件比较简单,关键是在程序中如何调用该组件。vs2010制作好COM组件后,会自动注册,但是vs2015却没法自动注册。一,自动注册:直接从MFC Typelib中导入该组件,导入相应接口,就可以了。二、非自动注册:方法一:只需要两...

2019-11-26 09:23:54

ATL和vc++中的智能指针(分别是CComPtr和_com_ptr_t)

一、智能指针的概念智能指针是一个类,不是指针,智能指针在所包含的指针不再被使用时候会自动释放该所包含指针所占用的系统资源,而不用手动释放。原理:智能指针封装了包含指针的AddRef()函数和Release()函数,且在该类不被需要的时候在析构函数里调用包含指针的Release()函数释放包含指针的资源。因此实质是利用类的析构达到调用包含指针的Release()函数的目的。二、VC++中...

2019-11-25 16:52:39

ATL com的dll文件与tlb文件

一、.tlb文件:只有COM组件才有tlb文件,普通dll文件没有。包含内容:1.它包含了COM类和接口的GUID值,接口的函数声明信息,并不是接口的实现文件。相当于类和接口的头文件。tlb文件被import后,编译成两个文件,.tli文件和.tlh文件,里面详细描述了接口和类声明和GUID值。二、.dll文件:COM组件的dll包含着真正的接口实现内容。因此,使用时两...

2019-11-25 16:51:24

MFC实现COM组件

一般而言,ATL实现了对COM组件最好的支持,所以不用MFC实现COM组件。但是MFC实际上也是可以实现COM组件的。一、MFC DLL优点:MFC com组件可以将MFC的类型作为参数进行传递,但ATL com只能用规定的COM数据类型。但实际上MFC 扩展dll也可以用MFC类型作为参数。具体代码:https://github.com/moisiet/MFC-COMCOM组件与...

2019-11-25 16:49:18

如何定义一个接口(接口Interface只在COM组件中定义了,MFC和C++都没有接口的概念)

接口是COM中的关键词,在c++中并没有这个概念。接口是一种极度的抽象。接口用在COM组件中有自己的GUID值,因此定义接口时一定要指定它的GUID值。实际上接口就是struct,即#define interface struct一、接口的定义步骤:0.包含头文件:#include "afxtempl.h"1.定义一个GUID值:static const IID IID_IFunc...

2019-11-25 16:47:21

COM组件的集合与包容

集合与包容,实质就是组件之间的互相调用。即一个组件使用另一个组件的功能,达到代码复用的作用。只是这种复用是构建在二进制数据上的(因为被复用的组件常常以dll的格式存在),而不是像c++代码复用是以源文件的形式复用。集合与包容的区别在于:包容是将内组件的功能进行封装,由外组件提供接口供客户调用,但实质执行任务的仍然是内组件。集合是将内组件的功能暴露出来供客户调用,让客户感觉好像调用的是外...

2019-11-25 16:46:40

关于com组件中idl文件的理解

IDL文件:IDL文件主要定义两大类内容:一是定义接口;二是定义类型库。定义接口的关键字是interface。每个接口定义前面方括号里面的内容是该接口的属性,最重要的是uuid的定义。该部分经过MIDL.exe编译后生成projectName_i.c和projectName_i.h文件,包含着接口本身(属性(uuid,helpstring等)和方法)的信息。该部分作用是定义接口。定义类...

2019-11-25 16:43:45

关于MFC消息的总结

一、MFC的消息类型MFC的消息类型大致可以分为三种:1.命令消息。由菜单和工具栏或快捷键产生,以WM_COMMAND形式发出(以WM_COMMAND发出的还有很多控件,如Button等,但它们产生的不是命令消息,是通知消息)命令消息的消息宏是:ON_COMMAND(id,memberFxn)。2.窗口消息。由系统产生,典型特征是以WM_开头(WM_COMMAND除外)。此类消息映...

2019-11-25 16:43:11

vs中解决方案、项目、类及ATL的理解

解决方案,是对所有要完成工作的统称,一般叫Solution。项目,也叫工程,是将解决方案分成若干个模块进行处理,一般叫做Project。添加项目就是添加工程。解决方案是所有项目的总和。一个项目里面有各种文件,如图片资源、音频资源、视频资源、ICO、MENU、SCROLLBAR等等。是一个独立的包罗各种资源的集合,基本算是功能齐全完备,自给自足的小团体了。因为每个项目里面都有一个CWinAp...

2019-11-25 16:42:07

COM对象创建过程

在客户端需要调用COM组件时,通常调用windowAPI函数:STDAPI CoCreateInstance(REFCLSID rclsid, //创建的Com对象的类标识符(CLSID)LPUNKNOWN pUnkOuter, //指向接口IUnknown的指针DWORD dwClsContext, //运行可执行代码的上下文REFIID riid, //创建的Com对象的接...

2019-11-25 16:40:08

COM组件宏观认识

一直搞不清楚COM到底是个什么东西,记录一些个人感想,可能很多错误的,慢慢消化.一.宏观认识:1.COM(组件对象模型)是一种标准,规则,要求,即即于建筑设计指标要求.2.语言无关性,因为是建立在二进制基础上的,也就是说客户调用COM组件时只能看到二进制而看不到未经编译的源代码程序,因此就不用管用什么语言编写的COM组件了.只要该语言编写的东西符合COM的标准就可以了.就相当于不用管房...

2019-11-25 16:26:20

创建ATL工程及使用MFC测试COM组件

一、创建ATL工程1、创建ATL项目,取名为ATLMyCom2、在ATL项目向导中,勾选【支持MFC】(利用MFC测试用)、【支持COM+1.0】,其余的选项默认,点击完成。3、右键工程名称,选择添加类,接下来选择【ATL简单对象】。4、在【ATL简单对象向导】对话框中填入自己定义的类名,然后直接点击完成。5、切换到类视图,为刚刚添加的接口IMyATLC...

2019-11-23 19:09:38

图标贪吃蛇

#include "stdafx.h"#include<stdio.h>#include<windows.h>#include<commctrl.h>#include<math.h>#include<stdlib.h>#include<malloc.h>#include<conio.h>#incl...

2019-11-22 15:07:48

列表框消息大全

应用程序用CreateWindowEx创建列表框控件时,可根据控件的用途在下表中选择部份常数来设定其风格属性(style)。 常数 说明 LBS_DISABLENOSCROLL 固定显示垂直滚动条。未指定本项时,当列表未超出窗口,垂直滚动条自动隐藏。 LBS_EXTENDE...

2019-11-22 14:04:37

列表框属性

列表框列表框允许用户从多个对象中选择一项或多项,这些对象可以是文本、文件和位图等。当列表框的项不能全部显示出来时,可以用滚动条来滚动显示。1. 基础知识默认的列表框只允许用户单选,需要多选时,须把列表框的风格定义为 LBS_ MULTIPLESEL 和 LBS_EXTENDEDSEL 。列表框提供的其他风格取值可以控制列表框的外观和操作。例如是否按照列表框各项的名称排序,是否多行排列,是...

2019-11-22 14:01:41

QT设置背景图片的三种方式

1. QPalette的方法基本步骤:(1). 首先设置QWidget的autoFillBackground属性为真(2). 然后定义一个QPalette对象,设置QPalette对象的背景属性(颜色或者图片);(3). 最后设置QWidget对象的QPalette。QWidget *widget=new QWidget;widget->autoFillBackgr...

2019-10-20 18:22:16

关于内存泄漏的问题-哪些变量需要释放

关于内存泄漏的问题-哪些变量需要释放推荐解答: Resource Allocation Routine Cleanup Routine Cleanup Required?================================================================================Accelerators...

2019-09-14 10:15:03

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。