![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Windows
github/gongluck
这个作者很懒,什么都没留下…
展开
-
完全依赖QML实现播放器
前言一直听闻QML无比强大好用,工作中需要扣一个同时播放视频的Demo,所以就趁这个机会研究了一下。效果图和源码源码仓库主要设计主页面QMLimport QtQuick 2.12import QtQuick.Window 2.12Window { visible: true width: 640 height: 480 Counter{ ...原创 2020-03-03 16:07:30 · 1022 阅读 · 0 评论 -
从static变量导出问题解析 __declspec(dllexport) 和 __declspec(dllimport)的作用
这段时间要把tinyxml从静态库弄成动态库,要用到__declspec(dllexport)和__declspec(dllimport)来导出dll和lib文件。终于弄明白了export和import的作用,下面从使用的角度来说明一下他们的功能。 首先要知道,头文件是C++的接口文件,不仅本工程需要使用头文件来进行编译,给其他工程提供dll的时候也要提供此dll的头文件才能让其他人通过编程转载 2017-08-31 13:21:15 · 965 阅读 · 0 评论 -
关于GetDC与GetWindowDC
关于GetDC与GetWindowDCGetDc函数:用于获得hWnd参数所指定窗口的客户区域的一个设备环境。所获得的设备环境可以是通用、类或者私有类型,具体由指定窗口的类风格决定。对于通用设备环境,GetDc函数每次获取一个设备环境时都会用默认属性对它进行初始化。该函数获得的类和私有设备环境会与它们最后一次的设置保持一致。当设备环境不再需要时,应该调用ReleaseDC函数将其释转载 2017-08-10 11:21:12 · 4846 阅读 · 0 评论 -
VC(win32)通过进程名杀死进程
#include "TlHelp32.h"void CKillProcessDlg::OnBnClickedOk(){ // TODO: 在此添加控件通知处理程序代码 //OnOK(); UpdateData(TRUE); CString str; str.Format(TEXT("确定要杀死进程:%s?"),m_ProcessName.GetBuff原创 2017-08-07 15:09:59 · 2852 阅读 · 0 评论 -
程序的入口
操作系统装载应用程序后,做完初始化工作就转到程序的入口点执行。程序的默认入口点由连接程序设置, 不同的连接器选择的入口函数也不尽相同。在VC++下,连接器对控制台程序设置的入口函数是 mainCRTStartup,mainCRTStartup 再调用main 函数;对图形用户界面(GUI)程序设置的入口函数是 WinMainCRTStartup,WinMainCRTStartup 调用你自己写的转载 2017-09-15 09:36:46 · 745 阅读 · 0 评论 -
初探WinInet网络api
//必须的头文件,而且要链接wininet.lib#include #define UM_SOCKET (WM_USER + 1)void CNetTimeDlg::OnBnClickedOk(){ // TODO: 在此添加控件通知处理程序代码 // CDialogEx::OnOK(); // 使用winsocket,获取国际标准时间并设置系统时间 WSADATA W原创 2017-09-04 20:12:40 · 531 阅读 · 0 评论 -
PostQueuedCompletionStatus
在进行重叠I/O操作的同时,强行释放一个OVERLAPPED结构,最好的方法是针对每一个套接字句柄,调用CloseSocket函数。任何尚未进行的重叠I/O操作都会完成。一旦所有套接字关闭,便需在完成端口上,终止所有工作者线程。这时候需要使用PostQueuedCompletionStatus 。转载 2017-12-06 10:30:58 · 994 阅读 · 1 评论 -
IOCP反射服务器
IOCP(I/O Completion Port),常称I/O完成端口。 IOCP模型属于一种通讯模型,适用于能控制并发执行的高负载服务器的一个技术。 通俗一点说,就是用于高效处理很多很多的客户端进行数据交换的一个模型。或者可以说,就是能异步I/O操作的模型。IOCP全称I/O Completion Port,中文译为I/O完成端口。IOCP是一个异步I/O的API,它可以高效地将I/O事件通知给应用程序。一个套接字[socket]与一个完成端口关联了起来,然后就可继续进行正常的Winsock操作了。然而原创 2017-12-04 15:35:53 · 600 阅读 · 0 评论 -
MakeSureDirectoryPathExists与CreateDirectory的区别
函数原型:MakeSureDirectoryPathExists( _In_ PCSTR DirPath );CreateDirectory( _In_ LPCSTR lpPathName, _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes );二者的功能都是创建指定转载 2017-12-01 09:25:50 · 680 阅读 · 0 评论 -
利用SetConsoleTextAttribute函数设置控制台颜色
控制台单调的颜色只有黑白两种,看起来多少难免有些单调。在没学图形化编程之前,每天看着控制台程序难免会枯燥无味。不过,利用SetConsoleTextAttribute函数可以设置控制台的前景色和背景色。闲言少叙,书归正传。①效果图:(颜色可以混合,遵循配色原理)[cpp] view plain copy #include #include转载 2017-12-01 09:05:34 · 776 阅读 · 0 评论 -
WaitForMultipleObjects用法详解,一看就懂
WaitForMultipleObjects是Windows中的一个功能非常强大的函数,几乎可以等待Windows中的所有的内核对象函数原型为:DWORD WaitForMultipleObjects( DWORD nCount, // number of handles in the handle array CONST HANDLE *l转载 2017-11-30 16:20:55 · 399 阅读 · 0 评论 -
_CrtSetDbgFlag
_CrtSetDbgFlag 若要了解有关 Visual Studio 2017 RC 的最新文档,请参阅 Visual Studio 2017 RC 文档。检索或修改的状态_crtDbgFlag标志来控制调试堆管理器 (仅限调试版本) 的分配行为。语法 int _CrtSetDbgFlag( int newFlag );转载 2017-11-30 15:43:15 · 1813 阅读 · 0 评论 -
Winsock2.h、Windows.h和WIN32_LEAN_AND_MEAN
头文件Winsock2.h在内部包含了Windows.h的核心元素,因此在Winsock应用程序中通常不包含头文件Windows.h。如果需要一个#include行来包含Windows.h,那么就需要在前面包含#define WIN32_LEAN_AND_MEAN 宏。由于历史原因,头文件Windows.h默认地包含Windows Sockets 1.1版的头文件Winsock.h。在头文件Wins原创 2017-12-20 16:42:44 · 807 阅读 · 0 评论 -
Visual C++内存泄露检测工具(VLD)
简述C/C++ 程序越复杂,内存的管理显得越重要,稍有不慎就会出现泄漏。如果内存泄漏不是很严重,在短时间内对程序不会有太大影响,这也使得内存泄漏问题有很强的隐蔽性,不易被发现。然而不管内存泄漏多么轻微,当程序长时间运行时,其破坏力是惊人的 - 从性能下降到内存耗尽,甚至会影响其他程序的正常运行。简述VLD下载安装使用Visual StudioQt更多参考转载 2018-03-11 13:57:55 · 274 阅读 · 0 评论 -
OCX 入门
OCX入门:http://blog.csdn.net/hkcsdn/article/details/52908748前言ActiveX是Microsoft对于一系列策略性面向对象程序技术和工具的称呼,其中主要的技术是组件对象模型(COM)。 ActiveX控件是一种实现了一系列特定接口而使其在使用和外观上更象一个控件的COM组件。ActiveX控件这种技术涉及到了几乎所有的C转载 2018-03-21 09:06:29 · 15874 阅读 · 1 评论 -
不能运行 'rc.exe'( error LNK1158: cannot run 'rc.exe')
在使用vs2013跑cuda samples中查看GPU设备的程序deviceQuery时,出现如下错误:1>------ Build started: Project: deviceQuery, Configuration: Debug x64 ------1> Creating library ../../bin/win64/Debug/deviceQuery.lib and o转载 2018-04-17 09:09:15 · 2034 阅读 · 0 评论 -
AdjustWindowRect 与 SetWindowPos
这两个函数经常一起使用,所以放到一起讲:1 AdjustWindowRect 函数功能:该函数依据所需客户矩形的大小,计算需要的窗口矩形的大小。计算出的窗口矩形随后可以传递给CreateWindow函数,用于创建一个客户区所需大小的窗口。 函数原型:BOOL AdjustWindowRect(LPRECT lpRect ,DWORD dwStyle,BOOL bMENU转载 2017-09-01 15:00:54 · 305 阅读 · 0 评论 -
MFC中的CListCtrl的最左边一列必须左对齐吗?
好久不写MFC的程序了,很多细节问题都记不清了,今晚无意中要用到CListCtrl控件,希望能够表头采用自己绘制的方式显示,于是自己编写了OnPaint方法进行重绘,过程中需要根据每一列的对齐方式进行绘制表头中的标题文字,于是通过CHeaderCtrl的GetItem的方法取得每一列的信息,采用了如下语句:[cpp] view plain copy HDITEM t转载 2017-06-02 13:31:36 · 880 阅读 · 0 评论 -
lib 和 dll 的区别与使用, 没有头文件改如何使用
1.生成lib文件 首先,我们先建立一个控制台工程(新建->工程->控制台程序),添加add.cpp以及add.h文件。//sub.h#ifndef _SUB_H#define _SUB_Hvoid sub(int a,int b);#endif//sub.cpp#include "sub.h"#include void sub(int a,int b)转载 2017-06-15 10:41:38 · 1056 阅读 · 0 评论 -
MFC中树控件CTreeCtrl的用法
不错不错原文地址:MFC中树控件CTreeCtrl的用法作者:hoarn【转至】 http://hi.baidu.com/jjzhang166/home 树形控件可以用于树形的结构,其中有一个根接点(Root)然后下面有许多子结点,而每个子结点上有允许有一个或多个或没有子结点。MFC中使用CTreeCtrl类来封装树形控件的各种操作。通过调用BOOL Create(转载 2016-09-21 09:22:32 · 2486 阅读 · 0 评论 -
VC如何获取对话框中控件的坐标
VC如何获取对话框中控件的坐标GetWindowRect是取得窗口在屏幕坐标系下的RECT坐标(包括客户区和非客户区),这样可以得到窗口的大小和相对屏幕左上角(0,0)的位置。GetClientRect取得窗口客户区(不包括非客户区)在客户区坐标系下的RECT坐标,可以得到窗口的大小,而不能得到相对屏幕的位置,它的top和left都为0,right和botton是宽和高,因为这个矩阵是在客转载 2016-09-27 15:58:20 · 766 阅读 · 0 评论 -
vc中实现控件的隐藏与显示
一、隐藏控件 CWnd *pWnd; pWnd = GetDlgItem(IDC_EDIT1); //获取控件指针,IDC_EDIT1为控件ID号 pWnd->ShowWindow( SW_HIDE ); //隐藏控件2、显示控件 CWnd *pWnd; pWnd = G转载 2016-09-28 09:47:40 · 2274 阅读 · 0 评论 -
CListCtrl控件使用方法总结
今天第一次用CListCtrl控件,遇到不少问题,查了许多资料,现将用到的一些东西总结如下:以下未经说明,listctrl默认view 风格为report相关类及处理函数MFC:CListCtrl类SDK:以 “ListView_”开头的一些宏。如 ListView_InsertColumn1. CListCtrl 风格 LVS_ICON: 为每个it转载 2016-10-08 15:16:10 · 385 阅读 · 0 评论 -
C++中MFC Tab Control控件的使用详解
1. 新建一个MFC工程, 取名MyTab, 选择Dialog based, 然后Finish.2. 删除对话框上默认添加的三个控件. 添加Tab Control控件并在Property属性中设置ID为IDC_TABTEST 在More Styles里勾上Bottom. 调速尺寸使其布满整个对话框, 我这边Tab Control的尺寸最后为164X203. 在ClassWizard为其添加变量转载 2017-05-27 20:00:35 · 3280 阅读 · 0 评论 -
MFC自定义控件
需要在MFC实现自定义控件功能,网上搜集找的如下方法实现:以下是步骤说明。 一、自定义一个空白控件 1、先创建一个MFC工程 NEW Project-->MFC-->MFC Application-->name: “CustomCtr”-->Application Type选择“Dialog based”。 2、在窗口中添加一个转载 2017-05-27 13:28:37 · 2664 阅读 · 0 评论 -
SAPI SDK的介绍
我们都使用过一些某某词霸的英语学习工具软件,它们大多都有朗读的功能,其实这就是利用的Windows的TTS(Text To Speech)语音引擎。它包含在Windows Speech SDK开发包中。我们也可以使用此开发包根据自己的需要开发程序。鸡啄米下面对TTS功能的软件开发过程进行详细介绍。一.SAPI SDK的介绍 SAPI,全称是The Microsoft Speec转载 2017-05-18 16:25:04 · 999 阅读 · 0 评论 -
CreateProcess、system、WinExec区别
CreateProcess、system、WinExec三个函数都可以在程序中启动另外的进程(程序)。system函数可以执行cmd指令,其中就可以包含启动其他程序的指令(指定程序的路径和参数即可)。CreateProcess函数如其名,创建进程,第一个参数就是路径名,第二个参数是进程的参数,其他就是附属的属性(省略)。但是当第一和第二个参数都指定的时候,进程里的argv[0]就不是程序的原创 2017-03-28 19:55:42 · 1400 阅读 · 0 评论 -
自制截图工具V1.0
之前比较空闲,就尝试着做了个截图工具,功能还算实用。等以后有时间再研究V2.0。这个项目都是用C语言做的,所以还算精简。#include #include #include "resource.h"#pragma comment(lib,"winmm.lib")HINSTANCE g_hInstance = NULL;//全局进程句柄HWND g_hwndMain = NUL原创 2016-12-04 20:51:32 · 1667 阅读 · 1 评论 -
媒体控制接口(MCI)的学习与使用
使用MCI(媒体控制接口)播放音频文件,MCI为程序员提供了两种方式访问MCI设备或文件:一种是基于消息的命令接口函数;另一种是使用字符串接口函数。两者的区别在于基本命令结构和发送信息到设备的原理。 A.基于消息的MCI 消息命令控制接口使用消息控制MCI设备,将消息和控制信息以数据结构的形式作为函数参数发送,并接收返回的数据,MCI直接把设备消息和控制消息发送到设备。一条基原创 2016-11-15 14:02:49 · 10379 阅读 · 10 评论 -
波形音频(WAVE)底层接口的学习与使用
如果想编写一个功能较强大的音频处理程序,那就必须使用低级音频函数和多媒体文件I/O来控制音频设备的输入和输出。因为低级音频函数可直接与音频驱动程序交互,通过窗口消息或回调(CALLBACK)函数来管理音频数据块的记录和播放,控制非常灵活。原创 2016-11-09 09:13:47 · 10776 阅读 · 0 评论 -
文本编辑器
文本编辑器——记事本类型的应用,可以打开、编辑、保存文本文档。可以增加单词高亮和其它的一些特性。效果图://CGEditorDlg成员public: CString m_filename;//打开文件名 CRichEditCtrl m_richedit;//富文本框控件 CString m_text;//富文本框中的文本 std::set blueText;//需要变蓝色的原创 2017-06-29 15:08:04 · 576 阅读 · 0 评论 -
MFC中CFileDialog的用法
CFileDialog::CFileDialog( BOOL bOpenFileDialog, LPCTSTR lpszDefExt = NULL, LPCTSTR lpszFileName = NULL, DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, LPCTSTR lpszFilter = NULL, CWnd* pParent转载 2017-06-28 14:23:58 · 371 阅读 · 0 评论 -
vc++快速使用richedit控件
vc++快速使用richedit控件1)初始化//必须加,否则无法显示窗口CXXXApp::CXXXApp() //找到应用类{// TODO: add construction code here,// Place all significant initialization in InitInstance AfxInitRichEdit(); //此句必须加转载 2017-06-28 10:47:06 · 1303 阅读 · 0 评论 -
临界区、互斥量、信号量、事件
四种进程或线程同步互斥的控制方法1、临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。 2、互斥量:为协调共同对一个共享资源的单独访问而设计的。 3、信号量:为控制一个具有有限数量用户资源而设计。 4、事 件:用来通知线程有一些事件已发生,从而启动后继任务的开始。 临界区(Critical Section)保证在某一时刻只有一个转载 2017-06-18 20:22:02 · 383 阅读 · 0 评论 -
CTreeCtrl 控件使用总结
若对您有所启发欢迎打赏古典小说网致力于打造极致阅读体验首创卡拉OK读书方式首创,桌面大屏幕TXT阅读方式一 基础操作 1 插入节点1)插入根节点 [cpp] view plain copy //插入根节点 HTREEITEM hRoot; CStrin转载 2016-09-20 11:02:11 · 619 阅读 · 0 评论