博文

Alizee专辑汇总(2010-01-13 13:42:00)

摘要:
专辑英文名: Gourmandises            专辑中文名: Gourmandises 歌手: Alizée                        发行时间: 2000年11月21日 地区: 法国                          语言: 法语 简介: 
  专辑英文名: Mes Courants Electriques      专辑中文名: 魔法电波 歌手: Alizée                              发行时间: 2003年03月18日 地区: 法国                                语言:&......

阅读全文(4153) | 评论:0

关于文件读写的一些说明(2010-01-13 11:59:00)

摘要:经典问题:使用a+b模式,能读能写,但是发现不能覆盖原有记录内容。 原因分析:凡是使用了a之后,每次写数据都会在文件末尾写,而不管你把文件指针移动到哪里。用w的话,虽说不会产生总在末尾写的情况了,但每次打开文件,都会把文件清空。应该用"r+b",这样不会清空文件,也不会总在末尾写。只不过有一点要注意,由于写入和读出都使用同一个缓冲,为了防止意外发生,在写和读之间最好先刷新一下缓冲:用fflush()、fseek()或者rewind()等函数都可以,这些函数调用时都会刷新缓冲区。唯一的缺点是要首先创建这个文件。   经典问题:写入文件的代码为fprintf(fp,"%d,%d",a,b);  读出文件的代码为fscanf(fp,"%d",&a); fscanf(fp,"%d",&b);   中间的逗号哪儿去了? 原因分析:无   经典问题:读出字符串到CString,按照一般的写法 --- CString str;fscanf(fp,“%s”,&str) 不光str会出现问题,并且会影响到后面文件的关闭,出现一些奇怪的错误,切忌切忌。应该写成fscanf(fp,“%s”,str) , 但是fscanf碰到空格就会停止,有点不好; 或者使用           CString szContent;
        int nFileLength = file.GetLength();
        file.Read(szContent.GetBuffer(nFileLength),nFileLength);
        szContent.ReleaseBuffer();   经典问题:读出字符串到string,用fgets先读出char*的buf,然后赋值,发现有换行符。通过下面这样的写法去掉换行符。  while(......

阅读全文(4827) | 评论:0

网银转账手续费一览表(2009-12-12 18:45:00)

摘要:全部是网银转账哦!柜台转账更贵……   本行同城转账:   工商:免费   农行:免费   中行:免费   建行:免费   交行:免费   招商:免费   广发:免费   广大:免费   邮政:按汇款的0.5 %收取费用,最高50元。   民生:免费   浦发:免费 中信:免费   本行异地转款:   工商:转账金额的1%,最低1元/笔,最高50元/笔。   农行:交易金额的0.4%;最低1元,最高20元。   中行:一万元以下(含1万)5.5元,另加收汇划费的30%;1万元--10万元10.5元,另加收汇划费的30%;10万-50万15.5元,另加收汇划费的30%。   建行:交易金额的0.25%,最低2元,最高25元。   交行:转账金额的0.15%,最低1元/笔,最高50元/笔。   招商:2元   广发:同行账号之间划转按通存金额0.5‰收手续费,最高不超过20元,最低不少于1元。   广大:手续费为汇款金额的0.5%,最低为2元,最高20元。   邮政:按汇款的0.5 %收取费用,最高50元。   民生:按汇款金额的0.1%收取手续费用,最低1元,最高50元。   浦发:免费 中信:按汇款金额的0.2%收取费用,最低10元,最高50元。   跨行同城转账   工商:转款金额的1%,最低1元/笔,最高50元/笔。   农行:5000以下:2元/笔,5000元-5万:3元/笔,5万--10万:5元/笔,10万以上:8元/笔。   中行:1万以下(含1万)5.5元,1万以上10.5元。   建行:交易金额的0.5%,最低2元,最高25元。   交行:转账金额的0.7%,最低2元/笔,最高50元。   招商:按汇款金额的0.2%收取费用,最低2元,最高50元。   广发:每笔收取划汇费5.5元。加收万分之五的通存费,最低1元,最高20元。   广大:手续费为汇款金额的0.5%,最低为5元,最高50元。   邮政:按汇款的0.5 %收取费用,最高50元。   民生:2元   浦发:按汇款金额的0.2%收取费用,最低2元,最高10元。 中信:2元。   跨行异地转账:   工商:转账金额的1%,最低1元/笔,最高50元/笔。   农行:......

阅读全文(4029) | 评论:0

双缓冲,DC等注意情况(2009-12-10 19:40:00)

摘要:    相信经常做图形可视化的人都知道双缓冲概念,那是优化刷新显示的技术。实际上,它还有其他用途。      一般的程序当中经常有缩略图、鹰眼、或者打印输出等。有人依靠截屏保存为图片来实现。这是可行的。不过缺点是再明显不过的了。当视图区有其他窗口遮挡时,截屏会把一些非显示区内容掺杂进来,效果不理想。      然而利用内存DC绘制可以避免这一缺点。如果将内存DC内容拷贝到屏幕DC上就属于双缓冲了。将内存DC拷贝到其他窗口如鹰眼就可以实现鹰眼等等。      这里面经常碰到一个问题。假如有一个程序原先的设计是用屏幕DC实现的,其中对屏幕DC进行了各种各样的设置,比如重新设置映射模式,窗口和视口原点坐标,范围等(其实是重载PrepareDC里面的内容)。现在要改为内存DC实现。需要做些什么呢?      为了减小代码移植量,最简单的做法就是对内存DC首先进行同样的准备工作PrepareDC,绘制时传入的不再是屏幕DC而是内存DC。那么最后拷贝的时候需要传入怎样的源范围和目标范围呢?因为这个范围也是和视口坐标相关的,直接影响到拷贝的效果。   以前深究过这个问题。后来发现其实没有意义。有更为技巧性的方法。首先我们创建内存DC之后并且进行了准备工作之后,需要创建兼容位图。这个位图的大小只需要设置和视图区范围一样大即可。然后我们首先要把数据范围区涂上一个背景色(FillSolidRect),之后再开始主要的绘制工作。绘制结束后,别急着拷贝,我们要首先把内存DC和屏幕DC的所有设置全部初始化(包括映射模式等)。这样一来,拷贝的时候我们就不需要关心具体的范围是多少了,只需要拷贝视图区范围即可达到要求。   void CTestView::OnDraw(CDC* pDC) {        // 屏幕DC的准备工作已经通过OnPaint执行,不用多解释吧,MFC消息响应知识 OnPrepareDC(&m_MemDC,NULL); // 内存DC准备工作   // 创建视图区大小的位图  &nb......

阅读全文(3241) | 评论:1

VC MFC SDI/MDI框架各部分指针获取方式(2009-12-04 10:21:00)

摘要: google_protectAndRun("ads_core.google_render_ad", google_handleError, google_render_ad); 前人在CSDN总结的,曾经帮助过我,整理总结一下,希望也能帮助一下别人。
       获得CWinApp 获得CMainFrame 获得CChildFrame 获得CDocument 获得CView 在CWinApp中   AfxGetMainWnd() m_pMainWnd AfxGetMainWnd()->MDIGetActive() AfxGetMainWnd()->GetActiveFrame() SDI:AfxGetMainWnd()->GetActiveView()->GetDocument() MDI:AfxGetMainWnd()->MDIGetActive()->GetActiveView()->GetDocument() SDI:AfxGetMainWnd()->GetActiveView()  
MDI:AfxGetMainWnd()->MDIGetActive()->GetActiveView()  在CMainFrame中 AfxGetApp() theApp MDIGetActive() GetActiveFrame() SDI:GetActiveView()->GetDocument()  
MDI:MDIGetActive()->GetActiveView()->GetDocument()   SDI:GetActiveView()  
MDI:MD......

阅读全文(2916) | 评论:0

CListCtrl OnTimer释疑(2009-10-19 16:45:00)

摘要:自认为对CListCtrl够了解了,但是还不够。昨日碰到一古怪问题,在ClistCtrl中设置一个Timer,但是始终OnTimer只进去一次,很纳闷…… 搜索找到了答案: 如果您调用 SetTimer 函数将定期的 WM _ TIMER 消息发送到列表控件时,您可能会发现仅两次调用列表控件的在 WM _ TIMER 消息处理程序 ( OnTimer 函数)。 解决办法: 如果您在 SetTimer 调用中定义计时器 ID,不要 WM _ TIMER 的调用默认处理程序。   参考:http://support.microsoft.com/kb/200054/zh-cn  ......

阅读全文(2400) | 评论:0

CListCtrl滚动条的一些问题搜集(2009-10-16 11:33:00)

摘要:(1)ICON形式中,如果设置属性中对齐方式为LVS_ALIGNTOP,那么当内容容纳不下时,只会出现竖直滚动条(Vertical Scroll) (2)ICON形式中,如果设置属性中对齐方式为LVS_ALIGNLEFT,那么当内容容纳不下时,只会出现水平滚动条(Vertical Scroll) (3)Report形式中,当行容纳不下时,出现竖直滚动条;当列容纳不下时,出现水平滚动条 有些时候,如果要强烈禁止出现水平滚动条或者竖直滚动条,那么可以用下面的方法: void CThumbnailViewList::OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS* lpncsp)
{
 // TODO: Add your message handler code here and/or call default
 ModifyStyle(WS_HSCROLL,0);   // 强烈禁止
 ShowScrollBar(SB_VERT,1);     //  强烈打开
 CListCtrl::OnNcCalcSize(bCalcValidRects, lpncsp);
} 例如有人碰到这样的问题: Hello. I'm working with a CListCtrl on a property sheet, and am having a problem with window sizing and the scroll bars.When my list grows enough to need a vertical scroll, the window space taken by the vertical scroll causes the Control to also create a horizontal scroll. This works fine, but I'm wondering if there is a way to prevent the horizontal scroll from being there. I'......

阅读全文(8254) | 评论:4

CBitmap和HBITMAP的区别及相互转换方法(2009-10-15 16:45:00)

摘要:是真忘了。 该回顾一下。 CBitmap和HBITMAP的区别及相互转换方法 HPEN hPen,hPen2;
CPen pen,pen2;
pen.Attach(hPen);
hPen2 = (HPEN)pen;
CBitmap bmp;
bmp.LoadBitmap(IDB_BITMAP1);
HBITMAP hbm = (HBITMAP)bmp;
CBitmap bmp1;
bmp1.Attach(hbm); HBITMAP = CBitmap.m_hObject
CBitmap* = CBitmap.FromHandle(HBITMAP) //已知HBITMAP hbit;
CBitmap cb;
cb.FromHandle(hbit);

//已知CBitmap cb;
HBITMAP hbit=(HBITMAP)cb; CBitmap bmp;
HBITMAP hBmp;
相互转换:
hBmp=(HBITMAP)bmp.GetSafeHandle();
bmp.Attach(hBmp);
 ......

阅读全文(3639) | 评论:0

空间中三角形到三角形的最短距离求法以及一些思考(2009-10-02 13:32:00)

摘要:   根据上一节线段到三角形的最短距离的证明,我想我们可以大致可以想象出两个三角形的最短距离如何求解了。   (1)三角形S1每条边到S2的3个最短距离。 (2)三角形S2每条边到S1的3个最短距离。     将这6个距离进行比较,最小的就是两个三角形的最短距离。      扩展一下。由于一般的简单几何体均可以拆成三角形构成,那么两个简单几何体的距离也是在理论上可以求得的。不过实际操作中,不能采用三角形遍历求距离的方法,效率太低下了。作者会在后续的章节中继续探讨两个几何体最短距离的求解方法。      下面谈点思路。纵观前2节“空间中线段到线段的最短距离”,“空间中线段到三角形的最短距离”,我们可以发现,我们的求解方案有一些相同的地方。假设求空间基本对象A和空间基本对象B的最短距离,那么我们会首先拆分A为其一级子对象集合,然后求出每个子对象到B的最短距离;同时,拆分B为其一级子对象集合,求出每个子对象到A的最短距离。最后将所有的距离进行比较得到最小值,就是最短距离。举个例子来说明一级子对象。例如多边形由线段构成,那么线段是多边形的一级子对象;线段由点构成,那么点是线段的一级子对象。所以,在求解“空间中线段到线段的最短距离”时,我们会涉及到求点到线段的最短距离;在求解“空间中线段到三角形的最短距离”,会求线段到三角形每条边的最短距离,会求三角形到线段上每个端点的最短距离。当然也要考虑一些特殊情况。由于所有基本对象最终的最底层子对象就是点,而两点之间的距离是可得的,那么任意基本对象的最短距离也都是可以计算的。            谈点技术。如果任意2个几何体的最短距离我们都可以求得,那么相交测试以及所谓的碰撞检测那就相当简单了。只要最短距离等于0,那么肯定相交;反之不相交。但是求距离有时候是很困难,很费时的一件事情,而相交检测则要简单一些。常见的分离轴检测,separating axies test就比求距离要简单一些。作者会在后续章节中继续介绍。但是某些情况下,利用求距离的思想来检测相交,是很方便的一件事情,尤其是涉及到球和胶囊体的时候。球是点在半径范围......

阅读全文(7568) | 评论:3

空间中线段到三角形的最短距离的几何求法与证明(2009-09-26 11:27:00)

摘要:      首先我们来看第一个问题:空间中线段PQ到三角形ABC的最短距离。在这里,想法可不要太简单。如果你从没接触过这种问题,可能你第一个想法就是分别求出P和Q到ABC所在平面的距离PP’和QQ’,然后进行比较,小者胜出。            这显然是不正确的。假设P和Q的投影点P’和Q’都不在三角形内,那么最短距离既不是PP’,也不是QQ’。这时,你可能突然记起以前学过一个东西:点到三角形的最短距离。让我们回忆一下求法:首先找到点X在三角形所在平面的投影X’。如果X’在三角形内,那么XX’就是最短距离。假设X’不在三角形内,就需要分别计算X’到三角形每条边的最短距离,也就是点到线段的最短距离,然后进行比较,小者胜出。几何证明很简单,略去。       那么好,于是我们分别计算P和Q到三角形ABC的距离,然后比较。这次总对了吧。仔细思考一下,发现也是错误的。一种很简单的情况就推翻了刚才的想法。让我们假设PQ和ABC平面严格平行,并且投影点都在三角形外。显然P到ABC的最短距离就是PP1,而PP1就是三角形PAC的高;Q到ABC的最短距离就是QQ1,QQ1就是三角形QCB的高。这样,即使我们比较出谁更小,也不能得到正确的最短距离。因为最短距离恰恰是我们上面第一种情况提到的,最简单的,PP’,当然,也就是QQ’,以及PQ上任意一点到平面的垂直距离,它们都是相等的,因为PQ与平面平行。            想到这里,可能就会比较疑惑了。看来这个距离还不是那么好求的。但是我们还是发现点规律。不管怎么说,这个距离是随着PQ的投影点与三角形的关系而变的。于是,有了新的思路,我们最好来研究一下投影点与三角形的关系。      实际上,只有三种情况。 (1)       P’和Q’都在三角形内。 (2)       P’和Q’中有一个点在三角形内。 (3)  ......

阅读全文(6868) | 评论:2