
C++
Heaven13483
这个作者很懒,什么都没留下…
展开
-
OpenProcessToken令牌函数用法
>GetCurrentProcessID 得到当前进程的ID OpenProcessToken得到进程的令牌句柄LookupPrivilegeValue 查询进程的权限AdjustTokenPrivileges 调整令牌权限要对一个任意进程(包括系统安全进程和服务进程)进行指定了写相关的访问权的OpenProcess操作,只要当前进程具有SeDeDebug权限就可以了。要是一个用户是Admin原创 2014-09-17 11:45:43 · 3348 阅读 · 0 评论 -
基于MFC对话框的OpenGL三维图形开发
上文中,,是在对话框的基础上,利用Picture控件进行OpenGL绘制的,,那么现在是基于一个新的类进行的OpenGL绘制,也有一个Demo,,是用GDI和OpenGL分别绘制的,,声明,,这是别人的Demo,拿来试用一下。。示例我也是学习了这些资料之后才懂得怎么做的。。 以三维动态球体模型来讲述基于MFC对话框的OpenGL编程1.基本思想在Windows98/NT平原创 2013-05-26 21:15:07 · 8329 阅读 · 4 评论 -
Ansi、Unicode、UTF-8字符串之间的转换和写入文本文件
Ansi字符串我们最熟悉,英文占一个字节,汉字2个字节,以一个\0结尾,常用于txt文本文件Unicode字符串,每个字符(汉字、英文字母)都占2个字节,以2个连续的\0结尾,NT操作系统内核用的是这种字符串,常被定义为typedef unsigned short wchar_t;所以我们有时常会见到什么char*无法转换为unsigned short*之类的错误,其实就是unicodeU原创 2013-05-23 21:48:14 · 2238 阅读 · 0 评论 -
VS2010 简单ATL COM开发
1、打开VS2010,新建ATL COM 项目,步骤:“文件” --》“新建” --》“项目”,选择“Visual C++” --》“ATL 项目” ,填写“名称” FirstCOM --》“确定”。2、ATL 项目向导,勾选 【支持COM+ 1.0】和【支持部件注册器】,其他默认,点击完成。3、切换到类视图,右键单击项目“FirstCOM”--》“添加” --》“类”。原创 2013-05-19 22:59:37 · 7157 阅读 · 0 评论 -
每天一算法(双色河内塔又叫汉诺塔)
说明双色河内塔是由之前所介绍过的河内塔规则衍生而来,双色河内塔的目的是将下图左上的圆环位置经移动成为右下的圆环位置:解法双色河内塔或是原始的河内塔,其解法观念与之前介绍过的河内塔是类似的,同样也是使用递回来解,不过这次递回解法的目的不同,我们来看双色的情况,这很简单,只要将第一柱的黄色移动至第二柱,而接下来第一柱的蓝色移动至第三柱。再来是四个盘的情况,首先必须用递回完成下图原创 2012-12-19 10:15:00 · 6450 阅读 · 0 评论 -
vs2010项目打包部署,Windows程序打包部署
Windows应用程序开发完成后,如何将项目进行打包部署。下面就是我使用vs2010进行项目开发后进行的项目打包部署。工具/原料vs2010或vs2008步骤/方法在vs2010开发环境中打开一个要部署的项目,在“文件”菜单中选择“新建->项目”选项。弹出“新建项目”对话框。转载 2013-01-02 11:07:00 · 1277 阅读 · 0 评论 -
每天一算法(链表逆序,子字符串等几个一起)
(1) 用一种算法来颠倒一个链接表的顺序。现在在不用递归式的情况下做一遍。#includeusing namespace std;struct node{ int x; node *next; node() { x = 0; next = NULL; };};void make(node *head){ node *hea = head; for(int原创 2012-10-10 10:16:55 · 2394 阅读 · 0 评论 -
每天一算法(三色河内塔)
接双色河内塔问题三色河内塔,直接来看九个盘的情况,首先必须完成下图的移动结果:接下来最底两层的就不用管它们了,因为它们已经就定位,只要再处理第一柱上面的三个盘子就可以了。C++程序#include void hanoi(int disks, char source, char temp, char target) { if (disk原创 2013-01-02 17:19:23 · 1601 阅读 · 0 评论 -
每天一算法(八枚银币)
说明 现有八枚银币a b c d e f g h,已知其中一枚是假币,其重量不同于真币,但不知是较轻或较重,如何使用天平以最少的比较次数,决定出哪枚是假币,并得知假币比真币较轻或较重。解法 单就求假币的问题是不难,但问题限制使用最少的比较次数,所以我们不能以单纯的回圈比较来求解,我们可以使用决策树,使用分析与树状图来协助求解。一个简单的状况是这样的,我们比原创 2012-12-17 23:21:47 · 1494 阅读 · 0 评论 -
每天一算法(生命游戏)
说明生命游戏(game of life)为1970年由英国数学家J. H. Conway所提出,某一细胞的邻居包括上、下、左、右、左上、左下、右上与右下相邻之细胞,游戏规则如下:孤单死亡:如果细胞的邻居小于一个,则该细胞在下一次状态将死亡。拥挤死亡:如果细胞的邻居在四个以上,则该细胞在下一次状态将死亡。稳定:如果细胞的邻居为二个或三个,则下一次状态为稳定存活。复活:如果某位置原原创 2012-12-18 14:48:10 · 2327 阅读 · 1 评论 -
在mfc对话框中添加一个显示网页的窗口
现在只能实现在对话框内显示一个网页文件,,但如果点击网页文件中的某个链接的话,,却还是在IE中进行打开的,,正在想如何始终在该对话框内完成。。希望各位大神能指点。。这个要用到 ActiveX 控件了,向对话框里面插入一个 WebBrowser控件,之后使用就可以了!=============================利用WebBrowser控件创建自己的浏览器原创 2012-11-26 11:21:36 · 6239 阅读 · 2 评论 -
每天一算法(du熊填数字)百度之星的题,限时没有完成,补上。
Problem Description du熊这几天使劲的往一个n 行n列的矩阵填0和1这两个数字,n为偶数,而且矩阵由里向外分成了n / 2层。比如n = 6时,矩阵的分层如下: du熊填数时有一个要求:不能存在两个相邻的1,且位于不同的层(这里的相邻指两格子共用一条线)。 请你帮du熊计算一下有多少种填法。Input 输入包含多组测试原创 2012-12-11 22:57:04 · 2565 阅读 · 6 评论 -
在对话框picture control中利用opengl进行绘图
照着写的一个Demo,,地址如下,Demo 立一个基于对话框的工程(名称:OpenGL)并且在设置的Link里加入库opengl32.lib glu32.lib glaux.lib 为对话框添加picture control 控件,ID:IDC_RENDER 主要程序:// OpenGLDlg.cpp : implementation file//#incl原创 2013-05-26 21:08:16 · 4901 阅读 · 1 评论 -
编译第一次出错,第二次正常。。。。Win7安装vs2008编译报LINK : Internal error during IncrBuildImage--解决方法
安装了VS2008+sp1后出现链接错误:>Copyright (C) Microsoft Corporation. All rights reserved.1>LINK : fatal error LNK1000: Internal error during IncrBuildImage1> Version 9.00.21022.081> ExceptionCode原创 2013-07-10 11:53:14 · 2670 阅读 · 0 评论 -
Http下载文件,指定下载位置。
#include #include #include #include #include #include #include #include #include #include #include #define MAXBLOCKSIZE 1024clock_t clockBegin, clockEnd;#pragma comment (lib, "wi原创 2014-09-10 16:55:38 · 951 阅读 · 0 评论 -
用InternetOpen()的下载文件
#include#include#includeusing namespace std;#pragma comment(lib,"wininet.lib")void main(){ DWORD byteread=0; char buffer[100]; memset(buffer,0,100); HINTERNET internetopen; internetopen=Int原创 2014-08-07 14:24:16 · 2981 阅读 · 1 评论 -
Windows系统服务的编写。
由于微软在Vista之后,对系统服务进行了隔离,原创 2014-06-23 10:09:26 · 1754 阅读 · 0 评论 -
c++中char*\wchar_t*\string\wstring之间的相互转换 .
#ifndef USE_H_#define USE_H_#include #include #include using namespace std;class CUser{public: CUser(); virtual~ CUser(); char* WcharToChar(const wchar_t* wp); char* StringToChar(const stri转载 2014-06-12 11:54:44 · 1059 阅读 · 0 评论 -
Windows 系统服务管理
/* 介绍:对Windows系统服务的状态获取,服务暂停,开启,停止操作代码 */ void CStartServiceDlg::OnBnClickedButton1() { // 打开服务管理对象 SC_HANDLE hSC = ::OpenSCManager( NULL, NULL,原创 2014-06-27 17:31:40 · 1207 阅读 · 0 评论 -
vc中获取电脑CPU占有率和内存占有率的API
得到cpu占有率的API函数:GetSystemTimes得到内存使用情况的API函数:GlobalMemoryStatusEx Function Retrieves information about the system's current usage of both physical and virtual memory.GetPerformanc原创 2014-01-09 11:06:17 · 5179 阅读 · 0 评论 -
模拟实现cmd中的Tracert功能 ,即用于网络检测
TraceRoute程序的实现主要涉及IP头部生存时间(time to live, TTL)字段的使用。 设置TTL字段的目的是为了防止数据报由于选路错误或其他软硬件原因从而导致在网络中无休止的流动,TTL字段指定了数据报的生存时间。TTL的初始值由源主机设置,当一份数据报经过路由器时,处理该数据报的路由器都需要把TTL值减去数据报在路由器中停留的秒数。但事实上大多数路由器只是简单地原创 2013-10-16 11:57:47 · 3523 阅读 · 2 评论 -
通过“CreateProcess”创建新的“进程”
第一、第二个参数的用法: 例子:使用ie打开指定的网页。注意第二个参数是 可执行文件+命令行参数 #include "stdafx.h"#include #include int main(int argc, char* argv[]) { STARTUPINFO si = { sizeof(si) }; PROCESS_INFORMAT原创 2013-08-04 17:04:20 · 1521 阅读 · 0 评论 -
利用"NOTIFYICONDATA"实现MFC的托盘程序
本文章为转发百度空间内容,,保存一下,以防以后用到。。一、自定义信息在头文件中加入下面这句话:#define WM_SHOWTASK (WM_USER+1)二、MYDLG.CPP文件中添加_messageEntries数组添加自定义信息WM_SHOWTASKON_MESSAGE(WM_SHOWTASK,OnShowTask)//将自定义信息WM_SHOWTASK应用于OnSho原创 2013-08-04 17:06:06 · 3507 阅读 · 0 评论 -
防止程序启动两次的方法CreateMutex()
在工程文件中, WinMain函数里加上以下代码HANDLE hMutex = CreateMutex(NULL, false, "Process"); if (GetLastError() == ERROR_ALREADY_EXISTS) { CloseHandle(hMutex); MessageBox(App原创 2013-07-30 14:00:20 · 6397 阅读 · 1 评论 -
用C++,调用浏览器打开一个网页
调用外部命令如果用默认浏览器,就调用ShellExecute(NULL, _T("open"), _T("explorer.exe"), _T("http://www.baidu.com"), NULL, SW_SHOW);如果用IE打开,就调用ShellExecute(NULL, _T("open"), _T("iexplore.exe"), _T("http://www.baidu.co原创 2013-07-18 15:47:02 · 20907 阅读 · 2 评论 -
C++文件操作(2)
打开文件的方式 当我们想要打开的文件不存在的时候,一般地,ofstream类的对象会默认地自动创建一个文件。而如果我们想要打开的文件是存在的,那么就会调用ofstream的构造函数或者是调用open()函数进行打开。下面,我们来看一下MSDN上面是如何定义open()函数的:首先是函数原型:void open( const char *_Filename,原创 2012-12-27 22:28:45 · 1400 阅读 · 1 评论 -
C++文件操作(1)
文件的输出操作 想要程序中的数据输出到文件中,一共需要以下5个步骤:① 包含fstream头文件:#include ② 建立ofstream对象:ofstream ocout;③ 将对象与文件关联:ocout.open(“test.txt”);④ 使用该对象将数据输出到文件test中:ocout⑤ 关闭与文件的连接:ocout.close(); p原创 2012-12-25 23:54:50 · 1218 阅读 · 0 评论 -
每天一算法(du熊学斐波那契I)百度之星限时做。。
Problem Descriptiondu熊对数学一直都非常感兴趣。最近在学习斐波那契数列的它,向你展示了一个数字串,它称之为“斐波那契”串:11235813471123581347112358........聪明的你当然一眼就看出了这个串是这么构造的:1.先写下两位在0~9范围内的数字a, b,构成串ab;2.取串最后的两位数字相加,将和写在串的最后面。上面du熊原创 2012-12-11 22:13:18 · 1638 阅读 · 0 评论 -
每天一算法(查找最小的k个元素(数组))
题目:输入n个整数,输出其中的k个最小数。例如:例如输入1,2,3,4,5,6,7和8这8个数字,则最小的4个数字为1,2,3和4。解题思路:当然,方法最简单的就是对这n个整数都进行排序操作,但这种方法的时间复杂度尤其的高。因此,我采用了,用另外k个空间,以换取时间的方法 。每次从输入的n个整数中读入一个数。如果数组中已经插入的元素少于k个,则将读入的整原创 2012-09-24 10:06:56 · 3203 阅读 · 5 评论 -
CString与char_转换
Unicode下CString与char *转换 在VisualC++.NET2005中,默认的字符集形式是Unicode,但在VC6.0等工程中,默认的字符集形式是多字节字符集(MBCS:Multi-Byte Character Set),这样导致在VC6.0中非常简单实用的各类字符操作和函数在VS2005环境下运行时会报各种各样的错误,这里总结了在VisualC++.NET2005原创 2012-10-15 00:11:13 · 11973 阅读 · 1 评论 -
MFC下拉框combo box控件实践笔记
1、定义控件对应变量假定已经创建了一个Dialog,并且给该Dialog建立了类,并且从控件工具箱将 Combo Box 控件拖放到上面。打开 Class Wizard,添加控件对应变量,如:CComboBox m_cbExamble;在后面的代码中会不断使用这个变量。为该下拉框建立相应的响应函数,该响应函数应该是在Dialog建立的类下2、向控件添加 Items原创 2012-10-13 13:53:57 · 1852 阅读 · 0 评论 -
关于C++中char型数组、指针及strcpy函数的细节观察
先声明,,这是摘抄的,,为了得浏览量所以改为是原创的,,原地址为原址1.声明字符数组时,[]中的数应为数组中字符个数,包括'/0' 如 char p[5] = "dddd"; 则实际为:'d' 'd' 'd' 'd' '/0'. 若 char p[5] = "ddddd"; 则编译出错,提示越界. 2.(1)初始化字符数组原创 2012-10-09 16:19:20 · 925 阅读 · 0 评论 -
每天一算法(在二元树中找出和为某一值的所有路径(树))
题目:输入一个整数和一棵二元树。从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。打印出和与输入整数相等的所有路径。例如 输入整数22和如下二元树 10 / \ 5 12 / \ 4 7则打印出两条路径:10, 12和10, 5, 7。二元树节点的数据结构定义为:原创 2012-09-19 16:50:12 · 1182 阅读 · 1 评论 -
C++激活外部文件或程序
我使用MFC编写一个APP,要求About对话框中显示LOGO、公司名、地址和公司的URL链接。使用户点击URL链接以后,启动浏览器访问Web页面,这种对话框中的热链接使应用程序增色不少。微软公司提供的ShellExecute函数正好可以完成这个功能,该功能不仅可以打开特定的文件(.txt;.word....)还可以打开固定网址(www.baidu.com等)ShellExecute函数原型及原创 2012-10-08 10:44:21 · 1246 阅读 · 0 评论 -
每天一算法(求子数组的最大和)
题目: 输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。 例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2,因此输出为该子数组的和18。解题思路: 因为时间复杂度是0(n原创 2012-09-16 22:48:20 · 1275 阅读 · 4 评论 -
每天一算法(进栈,出栈,栈中最小值)
题目: 设计包含min函数的栈(栈)定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。要求函数min、push以及pop的时间复杂度都是O(1)。 举例:例如 先后进栈int型(10,7,3,3,8,5,2,6),进栈出栈容易理解,,但需要注意的是,当进行出栈操作后,再进行最后元素的查找,,则可能最小元素需要进行变化,如,以上整形全部进栈后,先min(原创 2012-09-14 10:57:50 · 2373 阅读 · 0 评论 -
每天一算法(字符串后移)
题目: 定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部。如把字符串abcdef左旋转2位得到字符串cdefab。请实现字符串左旋转的函数。要求时间对长度为n的字符串操作的复杂度为O(n),辅助内存为O(1)。 解决方法 先把0到k-1逆置,再把k到n-1逆置,再把0到n-1逆置。总的时间复杂度是O(n),空间复杂度因为没有额外的临原创 2012-09-13 23:33:20 · 1805 阅读 · 0 评论 -
每天一算法(把二元查找树转变成排序的双向链表 )
题目: 输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。要求不能创建任何新的结点,只调整指针的指向。10/ \6 14/ \ / \4 8 12 16转换成双向链表4=6=8=10=12=14=16。 首先我们定义的二元查找树节点的数据结构如下:struct BSTreeNode{int m_nValue; // va原创 2012-09-12 22:10:51 · 1066 阅读 · 0 评论 -
每天一算法(判断两个单向链表是否相交)
题目:给出俩个单向链表的头指针,比如h1,h2,判断这俩个链表是否相交。为了简化问题,我们假设俩个链表均不带环。问题扩展:1.如果链表可能有环列?2.如果需要求出俩个链表相交的第一个节点列?解决方法:设第一个链表的起始指针为a(结点数为n),第二个链表的起始指针为b(结点为m)一、对于简化了的问题:(1)最直观的方法,就是将a原创 2012-09-28 10:50:04 · 3259 阅读 · 0 评论 -
每天一算法(输出链表倒数第k个元素)
题目:输入一个单向链表,输出该链表中倒数第k个结点。链表的倒数第0个结点为链表的尾指针。链表结点定义如下: struct ListNode{ int m_nKey; ListNode* m_pNext;};思路:题目要求输出链表倒数第K个节点,那我们就把链表反转,输出第K个节点的值就可以了。/*---------------------------原创 2012-11-01 10:39:41 · 1538 阅读 · 1 评论