![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c/c++
文章平均质量分 72
lniwn
Java/MFC/Python
展开
-
使用Visual Studio编译7z源码
使用两种方式编译7z源代码,一种命令行使用nmake,一种通过visual studio。https://github.com/defhook/SevenZip原创 2015-10-15 10:09:38 · 9710 阅读 · 4 评论 -
Opengl编程低级错误范例手册
1.没有glDisable(GL_TEXTURE_2D),导致基本几何作图全部失败。2.镜头位置没调好,导致所有物体不可见.3.物体位置数据错误,导致物体大大超出镜头显示范围.4.纹理没有GL_CLAMP_TO_EDGE 导致边界拼接出现缝线. 5.纹理没有GL_REPEAT导致使用超出1.0纹理坐标技巧失败,显示单色插值.6.没有glEnable(GL_T转载 2012-09-12 19:39:27 · 1007 阅读 · 0 评论 -
OpenGL 远程崩溃
公司的程序用OpenGL写的,本地运行良好,但是一远程就出各种问题,找了好久一直没有结果,后来在微软的官方论坛,某个小角落发现了有哥们也遇到这种问题,原来,OpenGL程序在Remote Desktop中崩溃是个硬伤,有人推荐用VirtualGL,不过EnumDisplayDevices function貌似可以缓解下这个问题。http://msdn.microsoft.com/en-us原创 2012-09-12 20:27:27 · 3509 阅读 · 1 评论 -
关于DrawIndexedPrimitiveUP这个函数
近被DrawIndexedPrimitiveUP这个函数搞崩了好几次,甚至连显卡的Blue Screen Of Death也出来凑热闹了,所以需要总结一下它崩溃的可能原因,理清下头绪:1.与OpenGL的glXXXPointer一样,如果指针内存错误,崩溃是肯定的,这种bug比较好找.DirectX的原因更复杂:最2.DrawIndexedPrimitiveUP不直接崩溃,而是在P转载 2012-09-12 19:41:22 · 1149 阅读 · 0 评论 -
STL标准容器
vector 一系列空间连续的元素;可以用作默认容器#include vector(); vector( const vector& c ); vector( size_type num, const TYPE& val = TYPE() ); vector( input_iterator start, input_iterator end ); ~vector()原创 2012-07-29 23:11:18 · 533 阅读 · 0 评论 -
ATL正则表达式库使用
原文地址:http://www.vckbase.com/index.php/wv/357ATL中,由于ATL Server的需要,需要对Client发送过来的地址、命令等复杂文字字段信息解码,而正则表达式是公认的最强大的文字解析工具,所以,ATL提供了一些用于正则表达式的库方便了我们的工作。1、 CATLRegExp类声明:1.template2.class C转载 2012-08-10 22:38:53 · 846 阅读 · 0 评论 -
string.h头文件解析
最近公司的项目用MFC做的,碰到到很多字符串处理问题,用CString类处理起来总感觉力不从心,于是,总结了C语言中常用的字符处理函数,留作备用。先贴出string.h头文件的内容,这个来自MSDN。#if #include namespace std { using ::memchr; using ::memcmp; using ::memcpy;原创 2012-08-10 23:43:39 · 6461 阅读 · 0 评论 -
DateTime 结构
表示时间上的一刻,通常以日期和当天的时间表示。DateTime 值类型表示值范围在公元(基督纪元)0001 年 1 月 1 日午夜 12:00:00 到公元 (C.E.) 9999 年 12 月 31 日晚上 11:59:59 之间的日期和时间时间值以 100 毫微秒为单位(该单位称为刻度)进行计量,而特定日期是自 GregorianCalendar 日历中公元 (C.E.) 00原创 2012-07-19 22:54:21 · 1647 阅读 · 0 评论 -
MFC绘图
Windows使用一个称为设备环境(Device Context)的对象的方法——但该对象并没有创建一个C++类,因为Windows早于并存在于C++之外。设备环境对象用一些默认值创建,可以用它们创建默认的设备环境。应用Windows绘制一直线,所需的是一个i额设备环境对象的指针和直线坐标,设备环境对象的指针叫做设备环境句柄(HDC)。::MoveTo(HDC hdc, int x, int原创 2012-07-17 23:31:57 · 855 阅读 · 0 评论 -
c++ vector用法精讲
C++内置的数组支持容器的机制,但是它不支持容器抽象的语义。要解决此问题我们自己实现这样的类。在标准C++中,用容器向量(vector)实现。容器向量也是一个类模板。标准库vector类型使用需要的头文件:#include 。vector 是一个类模板。不是一种数据类型,vector是一种数据类型。Vector的存储空间是连续的,list不是连续存储的。一、 定义和初始化vecto转载 2012-06-27 20:33:06 · 746 阅读 · 0 评论 -
GLSL/HLSL易犯错误和注意点
渲染API容易出错,根源于其本质是个状态机,作一个渲染时,几十上百个状态都必须设置正确,才能得到正确的图像,这就很容易出点小差错.1.GLSL的vec4有3种分量形式xyzw/rgba/stpq, 注意到的r分量是指颜色r分量, 习惯上的纹理坐标分量strq的r由于和颜色r冲突,改作p.2.Global Amibient也要乘以材质Material.3.HLSL 没有shado转载 2012-09-12 19:40:09 · 4563 阅读 · 0 评论 -
OpenGL/DirectX高级编程Bug
低级编程错误的根由是粗心造成的,而这里所谓高级编程错误源自各版本驱动程序的Bug和一些不合理的API接口,此类错误通常令人吐血,出现一个都要耗费数小时甚至数天来解决,这是个实际经验累计的过程,痛苦而又必要.1. 要求D3DXCreateTexture创建D3DFMT_A8R8G8B8格式纹理,在某些显卡(MX4000,Intel82815,FX5200) 的某些驱动程序环境下,会意外地转载 2012-09-12 19:49:12 · 976 阅读 · 0 评论 -
visual C++ 2010 MFC 不收缩隐藏那些不经常使用的菜单项
最近写了个小程序,用MFC向导生成了一个单文档模板,后添添改改做的,但是菜单项老师隐藏了,这点很不爽,google了一下,没结果,很多人问,查询了下MSDN,发现:Remarks The CMFCMenuBar class is a menu bar that implements docking functionality. It resembles a toolbar, a转载 2012-09-25 19:44:05 · 1360 阅读 · 0 评论 -
C++11 中值得关注的几大变化(详解)
http://blog.jobbole.com/1281/英文文章来自前C++标准委员会的 Danny Kalev 的 The Biggest Changes in C++11 (and Why You Should Care),赖勇浩做了一个中文翻译在这里。所以,我就不翻译了,我在这里仅对文中提到的这些变化“追问为什么要引入这些变化”的一个探讨,只有知道为了什么,用在什么转载 2013-03-23 14:40:38 · 1829 阅读 · 0 评论 -
C++ 删除文件(夹) 宽字符版 && 设置console程序图标
// rms_clean.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include #include #include #include #include #include "Shlwapi.h"#include "resource.h"#pragma co原创 2013-03-21 14:00:22 · 1261 阅读 · 0 评论 -
C 实现删除非空文件夹
/*文件名: rd.c---------------------------------------------------- c中提供的对文件夹操作的函数,只能对空文件夹进行删除,这使很多初学者在编码过程中产生许多困扰,我也很不爽这件事情,所以编写这个对非空文件夹进行删除的函数,仅供参考。注意:本函数编写以VC6为依据,其中关于文件夹的操作函数 与标准c有转载 2013-03-21 11:18:05 · 12717 阅读 · 2 评论 -
python批量转换文件编码
#-*- coding: utf-8 -*-import codecsimport osimport shutilimport reimport chardetdef convert_encoding(filename, target_encoding): # Backup the origin file. shutil.copyfile(filename, fil转载 2013-03-13 23:47:35 · 664 阅读 · 0 评论 -
操作注册表进行文件类型与程序关联
#include #include //------------------------------------------------// 检测文件关联情况 // strExt: 要检测的扩展名(例如: ".txt") // strAppKey: ExeName扩展名在注册表中的键值(例如: "txtfile") // 返回TRUE: 表示已关联,FALSE: 表示未关联转载 2013-03-08 21:23:28 · 1416 阅读 · 0 评论 -
10+ powerful debugging tricks with Visual Studio
1. Debugging can be challengingDebugging can be challenging. Stepping through a function to understand what went wrong, looking through the call stack to see where did that value come from转载 2013-02-24 18:15:35 · 839 阅读 · 0 评论 -
WH_JOURNALRECORD与WH_JOURNALPLAYBACK应用(记录和回放)
/*****************HOOKService.h***********************/BOOL InstallOperationsHook(HWND,HINSTANCE);BOOL InstallOperationsDisplayHook(HWND,HINSTANCE);BOOL UnInstallOperationsHook();BOOL UnInstallOpe...转载 2012-12-09 00:44:51 · 4627 阅读 · 2 评论 -
使用 Windows 钩子获取丢失的密码
http://www.vckbase.com/index.php/wv/1584.html到目前为止,PasswordSpy 程序最有趣的部分其实是使用 SetWindowsHookEx API.函数设置Windows 钩子。利用该函数你可以将钩子安装到操作系统中或者某个特定的进程中。钩子的种类有很多种,每种钩子作用也不尽相同,用来监视特定的一组事件。当某一类事件发生时,钩子代码被转载 2012-12-09 00:25:33 · 905 阅读 · 0 评论 -
MFC读取ANSI格式文件中的宽字符
项目中录制的文件,一直是ANSI格式的,用了很长时间没有问题,可是突然有一天,文件中出现了宽字符m。'm'本该占一个字符的,可是不知道怎么就写入了宽字符,占了两个字符,结果显示乱码,将文件格式转换为utf-8格式,是能正确显示数据的,就是说信息并没有丢失。要想读取ANSI格式中的宽字符,首先一条,数据不能丢失,就是将文件转换为utf-8或者其他Unicode格式,数据可以正确显示。但是项目中的文件原创 2012-11-16 11:31:31 · 2322 阅读 · 0 评论 -
MFC多文档和单文档视结构
//这一页的代码最重要了,呵呵……什么都在这里面呢;单文档新建:CWinApp_________docManager->docSingleTemplate的 OpenDocumentFile函数参数为空,此函数完成了大部分东西,包括新建文档类框架类等______________然后是调用CDocument就没什么意思了,当然我们要是重载了CDocument的新建函数就是调用子类虚函数。转载 2012-06-27 00:14:57 · 2243 阅读 · 0 评论 -
栈的基本构造
#include#include typedef struct Node{ int data; struct Node * pNext;}NODE, *PNODE; typedef struct Stack{ PNODE pTop;//指向栈顶 PNODE pBottom;//指向栈底下一个无实际意义结点}STACK, *原创 2012-07-08 20:06:27 · 686 阅读 · 0 评论 -
利用C++模板轻松交换两数的值
#include templatevoid Swap(Any&, Any&);int main(){ using namespace std; int i = 10; int j = 20; cout << "i, j= " << i << ", " << j << ".\n"; cout << "Using compiler-generated int s原创 2012-06-05 15:05:23 · 1540 阅读 · 0 评论 -
MFC消息结构和消息处理
1.消息的结构 为了从消息队列获取消息信息,需要使用MSG结构。例如,::GetMessage函数(从消息队列得到消息并从队列中移走)和::PeekMessage函数(从消息队列得到消息但是可以不移走)都使用了该结构来保存获得的消息信息。 MSG结构的定义如下:typedef struct tagMSG { // msg HWND hwnd; UI原创 2012-06-04 16:21:10 · 5161 阅读 · 0 评论 -
C语言排序算法
通常,在排序过程中需要进行下列两种操作:(1)比较两个关键字的大小;(2)将记录从一个位置移到另一个位置。前一个操作对大多数排序方法来说都是必须的,而后一个操作可以通过改变记录的存储方式来予以避免。 待排序的记录序列可有一下三种存储方式:(1)待排序的一组记录存储在地址连续的一组存储单元上。它类似于线性表的数序存储结构,在序列中相邻的两个记录Rj和Rj+1,它们的存储位置也相邻原创 2011-09-30 21:31:01 · 777 阅读 · 2 评论 -
链式二叉树基本构造
#include#includestruct BTNode{ int data; struct BTNode *pLchild;//左子树 struct BTNode *pRchild;//右子树};void PreTraverseBTree原创 2011-08-29 22:39:48 · 879 阅读 · 2 评论 -
循环队列基本构造
#include#includetypedef struct Queue{ int *pBase; int front; int rear;}QUEUE;void init(QUEUE *);//初始化int en_queue(QUEUE原创 2011-08-24 21:46:54 · 762 阅读 · 0 评论 -
标准C/C++测试程序
用这个程序,可以测试编译器的字符解码是否符合标准。看看编译,运行有没有乱码?#include#include#include#include#includeint main(void){ char str[]="中国china"; wchar_t str_w转载 2011-08-24 21:52:24 · 964 阅读 · 0 评论 -
汉诺塔算法的递归与非递归的C以及C++源代码
汉诺塔(又称河内塔)问题其实是印度的一个古老的传说。开天辟地的神勃拉玛(和中国的盘古差不多的神吧)在一个庙里留下了三根金刚石的棒,第一根上面套着64个圆的金片,最大的一个在底下,其余一个比一个小,依次叠上去,庙里的众僧不倦地把它们一个个地从这根棒搬到另一根棒上,规定可利用转载 2011-08-24 21:42:55 · 2608 阅读 · 1 评论 -
链表的两种不同插入方法之前插法
#include#includetypedef struct Node{int data;struct Node *pNext;}NODE, *PNODE; //NODE等价于struct Node PNODE等价于struct Node *P原创 2011-08-20 09:05:00 · 2778 阅读 · 0 评论 -
链表两种插入方法之后插法
#include#includetypedef struct Node{int data;struct Node *pNext;}NODE, *PNODE; //NODE等价于struct Node PNODE等价于struct Node *P原创 2011-08-20 09:08:55 · 1479 阅读 · 1 评论 -
显示具体化
对于给定的函数名,可以有非模板函数、模板函数和显示具体化模板函数以及它们的重载版本。显示具体化的原型和定义应以template具体化将覆盖常规模板,而非模板函数将覆盖具体化和常规模板。#include templatevoid swap(Any& , Any&);struct Job{ char name[40]; double salary; int原创 2012-06-05 15:58:47 · 1325 阅读 · 0 评论 -
C++中assert的用法
C++ assert()函数的应用方式将会在这篇文章中进行详解,相信对此有兴趣的朋友们应该可以根据我们介绍的内容充分掌握这方面的应用技巧。 作为一个经验丰富的编程人员来说,对于C++编程语言应该不会陌生的,它的应用可以帮助我们轻松的实现各种功能需求。在这里我们会对C++ assert()函数的一些基本应用做一个详细介绍。assert宏的原型定义在中,其作用是如果它的条件返回错误,则终止程序转载 2012-06-11 13:49:13 · 659 阅读 · 0 评论 -
让应用程序获取重启管理器的支持
在Visual Studio 2010中的MFC重启管理器中包含两种层次的支持。 (1)重启支持:在应用程序升级完成或崩溃后自动重启(这个特性对所有类型的MFC应用都有效)。 (2)应用恢复支持:重新打开之前已经打开的文档;恢复自动保存的文档(这个特性只对文档/试图类型的MFC应用有效)。 对于新建的MFC应用程序和已存在的应用,原创 2012-06-20 13:47:27 · 5995 阅读 · 2 评论 -
MFC之Ribbon
//可以在MFC应用程序中使用Ribbon资源,在程序初始化时进行CMFCRibbonBar m_wndRibbonBar;if(!m_wndRibbonBar.Create(this)){ return -1;}if(!m_wndRibbonBar.LoadFromResource(IDR_RIBBON)){ return -1;}//视图类对象的作用是在客户区显示文档类原创 2012-06-22 18:08:18 · 2924 阅读 · 1 评论 -
MFC之Message
/*消息类型:1.标准消息:除WM_COMMAND之外,所有以WM_开头的消息。从CWnd派生的类,都可以接受到这类消息。2.命令消息:来自菜单、加速键或工具栏按钮,消息中包含命令标识符ID,以WM_COMMAND形式呈现。从CCmdTarget派生的类,都可以接受到这类消息。3.通知消息:由控件产生的消息,目的是向父窗口(通常是对话框)通知事件的发生。从CCmdTar原创 2012-06-22 18:05:40 · 949 阅读 · 0 评论 -
MFC之Menu
// ID命名// 菜单资源号以“IDM_”开始;光标资源ID号以“IDC_”开始;而图标资源ID号以“IDI_”开始。//加载自定义菜单,在CMainFrame类的OnCreate()方法中加上//由于menu是局部变量,存储内容会被销毁,所以SetMenu()之后,在其他调用//会报错,用Detach()把控制权从HWIND分离出来交给WindosCMenu menu;原创 2012-06-22 18:04:22 · 5014 阅读 · 1 评论 -
MFC之Dialog
/*大部分的非模态对话框都指定WS_POPUP、WS_CAPTION、WS_BORDER及WS_SYSTEMMENU风格。非模态对话框从主程序的消息循环中取得输入信息。如果非模态对话框中有控件存在,而且允许用户使用键盘去选择,那么必须在消息循环中调用CWnd类(或其继承类)的成员函数IsDialogMessage()来判断用户输入信息是否要发送给非模态对话框。非模态对话框的建立靠CDia原创 2012-06-22 18:09:10 · 2978 阅读 · 0 评论