- 博客(35)
- 资源 (2)
- 收藏
- 关注
原创 向量旋转算法
向量旋转,即循环移位。以下是《编程珠玑》所示的算法。#include #include #include #include #define _USE_MATH_DEFINES#include #include using namespace std;int gcd(int m, int n){ if(m < n){ swap(
2012-05-09 17:00:26
868
原创 《深度探索C++对象模型》笔记
虚函数可能会在执行前调整this指针的位置,例如多继承的情况下。基类指针调用子类虚函数,必须调整指针才能访问到正确的成员位置。没有任何数据成员及虚函数的类对象,占用空间为1字节。NRV(named return value)优化可以使程序更少地调用构造与析构函数,减少复制运算。例如对于C1 func(){ C1 temp; return temp;}C1 t =
2012-05-08 15:31:04
1007
原创 MFC笔记
MoveWindow会引发WM_SIZE,而后引发WM_NCCALCSIZE消息ListBox的滚动条绘制在NCPAINT中,向窗体添加滚动条在NCCALSIZE消息响应中。SCROLLINFO中的nPage表示的是当前页面所显示的行数。不能用PreTranslateMessage拦截WM_DESTROY,WM_ERAZEBKGND, WM_NCCALSIZE,因为它们全部都是发送的。
2012-03-06 17:01:13
721
原创 CListBox CEdit 自绘滚动条小试
如果直接需要代码,请直接移步http://www.codeproject.com/KB/dialog/skinscrollbar.aspx (注:本人非此代码作者)用Spy++检查后可知,CListBox的滚动条根本不是独立的滚动条窗口,只是一个逻辑窗口,因此使用对Scrollbar进行SubClass的方法是不可行的,因此只能想办法屏蔽掉Scrollbar。方案一:在CL
2012-01-02 17:25:47
4077
原创 C#笔记
var 可以使编译器自动确定一个合适的类型例如 var x = 10; 则在编译时自动将x变量设为INT型。如下函数void optMethod(int first, double second = 0.0, string third = "Hello")可以用此方法调用optMethod(first : 99, second : 123.45, third : "Worl
2011-11-10 19:53:04
615
原创 C++函数中的static变量初始化及析构顺序
有如下的类:class base{public: base(char* pStr) { m_pStr = pStr; cout << pStr << " Constructor!" << endl; } ~base() { cout << m_pSt
2011-09-28 21:13:53
3681
原创 MFC C++ 绘制 EAN13 (商品条码)
绘制方法参考的 http://blog.csdn.net/zgke/archive/2008/12/11/3496721.aspx C#.NET下绘制EAN13 有兴趣的同学还可以参考http://blog.csdn.net/forrest23/archive/2009/08/21/4470858.aspx VB.NET绘制EAN13 DEMOCClientDC dc
2011-06-12 19:25:00
4667
3
原创 创建WINCE下16位格式位图实现快速BitBlt
在WINCE下,如果创建的位图与屏幕设备格式不一样,将会导致BitBlt函数极为缓慢,因此需要创建一幅16位色565格式位图,用此方法创建出的位图可以提供1ms的快速BitBlt绘制。当然,如果设备不是565颜色格式的,更改代码中的颜色掩码位bmiColors就可以了。
2011-04-19 14:29:00
2483
1
原创 WINCE启动界面完全定制
一、 EBOOT启动界面LOGOa) 可供备选方案有1. 将图像数据写入NANDFLASH固定位置,优点是图像数据大,不会占用EBOOT大小;2. 直接将图像数据写成头文件,包含到工程中编译,优点是方式容易理解,但按目前的EBOOT大小,能放入320*240的二值图,也就是320*240/8=960Byte。最后选择第二种方案b) 生成一幅LOGO位图,采用PYTHON的图像库将图像变为二值图,再将二值图转为头文件。c) 更改%
2011-04-14 20:41:00
4991
2
原创 MFC对话框CDialog中使用CStatusBar状态栏
<br />在MFC的通用对话框中使用状态栏,只需要在对话框成员中增加一个CStatusBar类型的成员变量,然后在OnInitDialog函数中添加如下代码:<br />CRect rect; GetClientRect(rect); static UINT indicators[]={ ID_SEPARATOR }; if(!m_wndStatusBar.Create(this)|| !m_wndStatusBar.SetIndicators(i
2011-01-03 11:24:00
6674
1
原创 RGB565 格式的BMP文件保存函数
bool bmp565_write(unsigned char *image, long width, long height, const char *filename) { long file_size; long data_size; unsigned char widthAlignBytes; FILE *fp; // 文件头 unsigned char header[66] = { // BITMAPFILEIN
2010-12-20 22:37:00
6237
1
原创 WINDOWS 7 下ADS1.2启动出现Unhandled Exception的解决办法。
<br />找到ADS的快捷方式,右键->属性。在属性框的“高级”页面中勾选”禁用桌面元素“。再用此快捷方式启动程序,就不会再出现该错误。
2010-12-12 12:37:00
1885
原创 WINCE下程序移植问题集
1. 不支持WM_NCPAINT消息。2. 不支持WM_MOUSELEAVE消息及TRACKMOUSE结构体及函数。3. 对SBM_SETSCROLLINFO消息中的LPARAM中的指针访问将会导致函数异常执行。因此自绘的SCROLLBAR必须注意。
2010-10-09 15:54:00
817
转载 LoadImage加载到系统OEM图片的BUG解决方案
简单说解决方法就是LoadImage第一个参数不要传递NULL,而使用GetModuleHandle(NULL)代替。 以下是邮件原文:http://www.tech-archive.net/Archive/Development/microsoft.public.win32.programmer.gdi/2007-01/msg00145.htmlHi,There is a bug
2010-05-12 20:34:00
1220
1
转载 带有可变参数的宏
在1999年版本的ISO C 标准中,宏可以象函数一样,定义时可以带有可变参数。宏的语法和函数的语法类似。下面有个例子:#define debug(format, ...) fprintf (stderr, format, __VA_ARGS__)这里,‘…’指可变参数。这类宏在被调用时,它(这里指‘…’)被表示成零个或多个符号,包括里面的逗号,一直到到右括弧结束为止。当被调用时,在宏
2009-06-05 17:04:00
674
转载 MFC程序带参数运行
下面的例子可以用来判断程序运行的时候是否使用了-c,-s或者-p选项,具体程序中大家可以按照例子做简单改动即可。第一步:从CCommandLineInfo重载一个类CWzdCommandLineInfo,实现方式如下#if !defined WZDCOMMANDLINEINFO_H#define WZDCOMMANDLINEINFO_H// WzdCommandLineInf
2009-05-02 23:28:00
738
原创 怎样读取资源文件中的文件
// 将鼠标文件释放到临时文件中以便读取 HRSRC hResource = FindResource(GetModuleHandle(NULL), MAKEINTRESOURCE(IDR_ANI_AIM), _T("ANI_CURSOR")); if(hResource) { HGLOBAL hg = LoadRes
2009-05-02 21:31:00
769
原创 ASCII到UNICODE转换
// 复制字符串到临时空间并加上/0,以便MultiByteToWideChar使用 char* pRecvStr = new char[size + 1]; memcpy(pRecvStr, pRecvDat, size); pRecvStr[size] = /0; int index = 0; /
2009-04-17 22:24:00
852
转载 从注册表获取所有的串口
if(::RegOpenKeyEx( HKEY_LOCAL_MACHINE, _T("Hardware//DeviceMap//SerialComm"), NULL, KEY_READ, &hKey ) == ERROR_SUCCESS ) //打开串口注册表对应的键值 {
2009-03-31 12:58:00
6722
原创 关于对话框最小化到托盘后,点击托盘图标后只在任务栏显示而无法还原窗口的解决方法。
在跟随网上的贴子做完怎样将程序缩小到托盘和怎样还原之后,发现网上所说的只用ShowWindow(SW_SHOW)只能将程序在任务栏显示出来,而并不会自动还原到最小化之前的状态(也就是仍然是最小化的,要想看窗口仍然只能在任务栏上点击程序,以使程序恢复),不符合程序设计习惯,因此尝试在使用ShowWindow函数之后使用SetWindowPos函数,但是无论里面的参数怎样设置也无法将窗口自动还原;
2009-02-21 17:23:00
10254
6
转载 c++中的delete和delete[]
转载自:http://blog.csdn.net/csdnb3a/1. 当你使用new时,有两件事会发生。第一,内存被配置(透过函数operator new)。第二,会有一个(或以上)的constructors针对此内存被调用。当你使用delete时,也有两件事发生:一个(或以上)的destructors会针对此内存被调用,然后内存被释放(透过函数operator delete)。2.
2009-01-10 13:07:00
831
原创 对话框程序无法响应菜单更新的问题
对话框中的菜单无法响应ON_COMMAND_UI消息,也无法在点击菜单的时候用SETCHECK来达到设置菜单是否打勾的目的,因此只能通过另外的方法解决: 解决方法为: 使对话框响应WM_INITMENUPOPUP消息,然后在消息响应中加入以下代码(以下代码为MFC的FRAME响应菜单更新的源代码) ASSERT(pPopupM
2008-12-28 16:25:00
1468
1
原创 VISTA注册ActiveX控件出现 0x80040200的处理方法
在VISTA下注册ActiveX控制时可能会出现对DllRegisterServer的调用失败,错误代码为0x80040200的错误消息,引起这个错误的原因是启用了UAC检验系统,若要顺利注册模块,可以关闭UAC或以管理员权限注册此控件。 稍微为方便但不失安全性的方法为找到命令提示符的快捷方式,右键点击快捷方式,选择以管理员身份运行,然后在里面调用REGSVR32 XXX.OCX就可
2008-12-24 21:24:00
6432
6
原创 MFC中SetWorldTransform函数中XFORM结构体的使用
使用XFORM来控制DC时,需要先设置绘图模式SetGraphicsMode为GM_ADVANCED,再用SetWorldTransform。否则SetWorldTransform函数会失败映射后的坐标与映射前的坐标关系为x = x * eM11 + y * eM21 + eDx, y = x * eM12 + y * eM22 + eDy, 若要设置缩放比例,则只需设置eM11和eM22为相
2008-11-15 20:09:00
2792
转载 用点乘求点到线段的距离
#include #include struct POINT{double x,y;void Offset(POINT A) //相对A偏移{ x=x+A.x; y=y+A.y;}POINT operator - ( POINT &A ){ POINT X; X.x = x-A.x; X.y = y-A.y; return X;}};double Dist(POINT
2008-11-13 14:30:00
1608
转载 直接调用类成员函数地址
一、成员函数指针的用法 在C++中,成员函数的指针是个比较特殊的东西。对普通的函数指针来说,可以视为一个地址,在需要的时候可以任意转换并直接调用。但对成员函数来说,常规类型转换是通不过编译的,调用的时候也必须采用特殊的语法。C++专门为成员指针准备了三个运算符: "::*"用于指针的声明,而"->*"和".*"用来调用指针指向的函数。比如: class tt { public: voi
2008-10-30 10:42:00
717
原创 MFC中Arc与ArcTo的区别
Arc与ArcTo函数皆为MFC下的绘弧函数,实际就是从一个椭圆中截取一部分下来而形成的。BOOL ArcTo( LPCRECT lpRect, POINT ptStart, POINT ptEnd);其中lpRect为弧形所属的矩形区域,椭圆就是根据这个矩形而生成的。ptStart,ptEnd作用是用来指定弧形的开始点/结束点,真实的弧形开始点/结束点就是ptStart/pt
2008-10-15 17:35:00
8472
1
原创 TrackPopupMenu参数为屏幕坐标的转换
第一次接触TrackPopupMenu函数的时候大家可能会发现:编写出来的窗口的动态弹出菜单位置始终不能如愿地显示在正确位置,仔细观察或者查MSDN就知道,TrackPopupMenu函数中的坐标参数是屏幕坐标,而不是我们的窗口相对坐标,因此在使用时我们可能会想到查找当前窗口在屏幕上的坐标来实现窗口坐标与屏幕坐标转换。而有个现存的函数可供我们利用,就是void ClientToScreen(
2008-05-07 22:27:00
1991
原创 综合实验——165、595、计数器秒表
实验描述:利用计数器中断做秒表程序,再利用165芯片读取当前的按键状态,然后利用595芯片将当前时间显示到八位数码管上 。并且随时响应用户的按键行为。代码优点:可防止用户按键时间过长而误判。代码缺点:暂停与开始功能彻底阻断了所有中断。使得秒表在暂停的时候无法响应任何中断。#include iom8v.h>#include macros.h>/**//**************
2008-03-24 16:22:00
1839
原创 利用AVR中断的简单秒表
#include iom8v.h>#include macros.h>#define LED_BIT_SELECT PORTC#define LED_BIT_DATA PORTD/**//*********************** PC0~3 ------- G1~4 ** PD0~7 ------- a~h ** PB0 ---------- K1 ** PB1
2008-03-22 18:00:00
1762
2
原创 AVR无功能秒表
#include iom8v.h>#include macros.h>/**//*********************** PC0~3 ------- G1~4 ** PB0~7 ------- h~a ***********************/#define LED_BITE_SELECT PORTC //当前选择的显示的7位数码管#define LED_BI
2008-03-20 21:49:00
1083
原创 74165芯片的简单使用
#include iom8v.h>#include macros.h>/**//*********************** PD0~PD7 ----- D0~D7 ** PC0 -------- PL ** PC1 -------- CP ** PC2 -------- CE ** PC3 -------- DS ** PC4 -------- Q7
2008-03-19 17:02:00
6490
原创 利用系统外部中断做PS键盘信号接收
#include iom8v.h>#include macros.h>/**//*-----------------** PC0 ------ DATA ** PD2 ------ CLOCK ** PB0~7 --- LED1~8 **-----------------*/#define PC0 0#define PC1 1#define PC2
2008-03-19 11:21:00
912
原创 PS键盘信号接收程序
#include iom8v.h>#include macros.h>/**//*-----------------** PC0 ------ DATA ** PC3 ------ CLOCK ** PD0~7 --- LED1~8 **-----------------*/#define PC0 0#define PC1 1#define PC2
2008-03-19 10:40:00
730
Android 逆向工具 JEB 1.5 FULL
2015-09-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人