posted @ 2013-06-21 09:51 吴豪 阅读(7684) 评论(0) 推荐(0) 编辑
摘要:
MFC滚动条实现要点 1、鼠标拖动滚动条从而滚动窗口,需要实现CDialog::OnVScroll()函数。根据传入参数nPos,计算滚动距离。最后再调用ScrollWindow()和SetScrollPos()分别滚动窗口和设置滚动条位置。 2、鼠标滚轮滚动从而滚动窗口,需要实现OnMouseWheel()函数。根据参数zDelta来计算滚动距离。需要注意的是zDelta是滚轮滚动的距离,它一定是120的倍数,如果鼠标一次滚动达不到120,则会进行累计。只有达到120或以上才会触发OnMouseWheel()。这边还有一个问题需要注意,就是滚轮滚到底部或顶部的时候需要进行特殊处理。 3、滚动 阅读全文
摘要:
Copy Constructor的构造操作 有三种情况,会以一个object的内容作为另一个class object的初值:1、 对一个object做显式的初始化操作class X{…};X a;X b = a; 2、当object被当做参数交给某个函数: X a; void foo(X x); foo(a);3、 当返回值为object:X foo{ X a; return a;} 假设class X显式定义了一个copy constructor,类似下面这样: X::X(const X& x); 则在大部分情况下,当一个class object以另一个同类实例作为初值,上述的cop 阅读全文
posted @ 2013-06-18 18:48 吴豪 阅读(505) 评论(0) 推荐(0) 编辑
摘要:
Default Constructor的构造操作 C++ Annotated Reference Manual书中的Section 12.1说过:default constructor 只有在编译器需要的时候才会被编译器合成出来。 C++ Standard修改了C++ ARM的说法,但实际上的行为是一样的。C++ Standard[ISO-C++95]的Section 12.1说到:对于class X,如果没有任何user-declared constructor,那么会有一个default constructor被隐式(implicitly)声明出来。不过这样的隐式声明的default co 阅读全文
posted @ 2013-06-17 16:54 吴豪 阅读(1201) 评论(0) 推荐(0) 编辑
摘要:
MulDiv(a, b, c) 中的 a、b、c 是三个 Integer, 同时返回一个 Integer.其计算方式类似于: a * b / c 或 a * b div c, 但也有区别. //例一: 相同处 var a,b,c,n1,n2: Integer; begin a := 4; b := 3; c := 2; n1 := a * b div c; n2 := MulDiv(a, b, c); ShowMessageFmt('%d : %d', [n1, n2]); {6 : 6} end; //例二: MulDiv 中前两个 32 位... 阅读全文
posted @ 2013-04-18 10:38 吴豪 阅读(211) 评论(0) 推荐(0) 编辑
摘要:
所谓死锁: 是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。 那么为什么会产生死锁呢?1.因为系统资源不足。2.进程运行推进的顺序不合适。 3.资源分配不当。 学过操作系统的朋友都知道:产生死锁的条件有四个:1.互斥条件:所谓互斥就是进程在某一时间内独占资源。2.请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。3.不剥夺条件:进程已获得资源,在末使用完之前,不能强行剥夺。4.循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。 例如: 死锁是因为多线程访问共... 阅读全文
posted @ 2013-04-10 16:27 吴豪 阅读(471) 评论(3) 推荐(0) 编辑
摘要:
PreSubclassWindow PreSubclassWindow是一个很好的定制控件的位置。如果我们通过重载CWnd::PreCreateWindow定制控件,而用户在对话框中使用控件。由于对话框中的控件窗口是通过CreateDlgIndirect创建,不经过CWnd::CreateEx函数,PreCreateWindow函数不会被调用。其实,用户要在对话框中使用定制控件,必须用DDX或者SubclassDlgItem函数子类化控件,这时PreSubclassWindow一定会被调用。如果用户直接创建定制控件窗口,CWnd::CreateEx函数就一定会被调用,控件窗口一定会被子类化以安 阅读全文
posted @ 2013-04-10 11:31 吴豪 阅读(691) 评论(0) 推荐(0) 编辑
摘要:
voidCAsTestToolsDlg::DoDataExchange(CDataExchange*pDX){CDialog::DoDataExchange(pDX);DDX_Control(pDX,IDC_MAINTREE,m_Treemain);//IDC_MAINTREE是树控件的ID,m_Treemain是树控件对应类的对象}自己的理解:1.变量和控件进行绑定2.通过修改变量的数值控制控件操作。问题一:上面这句有什么作用呢?问题二:都什么场合要用到DDX_Control呢?问题三:有关DDX_Control之类的代码是否都应该放在上面的函数里?回答:简单的说,就是把控件变量(m_Tre 阅读全文
posted @ 2013-04-10 09:42 吴豪 阅读(327) 评论(0) 推荐(0) 编辑
摘要:
货币2.5.ToString("C") ¥2.50 D 十进制数 25.ToString("D5") 00025 E 科学型 25000.ToString("E") 2.500000E+005 F 固定点 25.ToString("F2") 25.00 G 常规 2.5.ToString("G") 2.5 N 数字 2500000.ToString("N") 2,500,000.00 X 十六进制 255.ToString("X") FF formatCo 阅读全文
posted @ 2013-03-19 11:25 吴豪 阅读(311) 评论(0) 推荐(0) 编辑
摘要:
通过SOAP请求与Microsoft Dynamic CRM online服务器进行连接 本来以为直接用Microsoft Dynamic CRM 2011 SDK就万事大吉了,但是没想到CRM 2011 SDK在Metro程序里根本没法用。查了很多资料发现,CRM 2011 SDK是用.Net Framework 4.0编写的,而Metro程序是运行在WinRT上。那是不是不用SDK就没法连接到CRM online服务器了呢?报着这样的疑问又开始查资料。后来在Microsoft Dynamics CRM Team的官方博客找到一篇名为“Building clients for Windows 阅读全文
posted @ 2013-01-24 15:17 吴豪 阅读(806) 评论(0) 推荐(0) 编辑