博文
按Ctrl和Ener组合键用法(2009-04-20 13:35:00)
摘要: 有同学要我帮他实现按Ctrl和Ener组合键用法。查了一下有两种。其实也一样的。
VC中实现。
BOOL CMy2132Dlg::PreTranslateMessage(MSG* pMsg) { // TODO: Add your specialized code here and/or call the base class/* if(pMsg->message == WM_KEYDOWN) { if(VK_SHIFT == pMsg->wParam) { if(GetAsyncKeyState(VK_CONTROL) >> 15 & 0x1) DealData(); return TRUE; } if(VK_ESCAPE == pMsg->wParam || VK_RETURN == pMsg->wParam) { return TRUE; } }*/ if(pMsg->message==WM_KEYDOWN) {
//如果按键是:Ctrl+Ener则发送消息 if(pMsg->wParam==VK_RETURN && GetKeyState(VK_CONTROL) & 0x80) { Dea......
应用程序实现XP风格简便方法[转】(2009-03-24 15:56:00)
摘要:很简单,此方法SDK/MFC通用,简单的讲就是插入一个资源,类别为24,ID为1,以VC6为例,2003和 05类似。在VC6资源编辑试图下点击Insert(插入),然后选择Custom(自定义),在Resource Type(资源类别)填上24,然后将新插入的资源属性改为如下 在右边内资源容中输入 <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity name="XP style manifest" processorArchitecture="x86" version="1.0.0.0" type="win32"/> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" &nb......
VC++学习方法及书籍推荐[转](2008-10-09 15:39:00)
摘要:现在的计算机图书发展的可真快,很久没去书店,昨日去了一下,真是感叹万千,很多陌生的出版社,很多陌生的作者,很多陌生的译者,书名也是越来越夸张,什么××天精通××,精通××编程, ××宝典等等,书的印刷质量真的很好,纸张的质量也是今非昔比啊,但书的内容好象却是越来越让人失望,也许是我老了,我的思想我的观念已脱离现实社会,也许是外面的世界变化得太快,我编程数月,出去一走,路已不是原来的路……回家看着书架上的旧书发呆,听着李克勤的旧欢如梦,才发现自已原来太喜欢怀旧. 笔者从事软件开发多年,其中有两年多的时间一直是与Windows底层打交道,涉及到驱动程序,嵌入式OS,Windows应用程序(如GUI,图形图像技术,多线程,组件技术等等)等方面的开发,写了很多很的源代码……也许我的阅读面过于狭小,书架里基本上都是Jeffrey Richter,Charles Petzold,侯捷老师以及潘爱民老师的书,这些书一直陪伴着我,并给我的编程工作带来了很大的帮助,希望我的推荐对你也有帮助。 Windows编程类 Windows 程序设计(第5版)(上、下册) 原书名: Programming Windows (Fifth Edition) 原出版社:Microsoft Press 作者:(美)Charles Petzold 译者:北京博彦科技发展有限责任公司 出版社:北京大学出版社 出版日期:2001-03 页码:1376 定价:160:00RMB 此书被认为是Windows编程最好的导论性读本。在1994年5月,此书的作者Charles Petzold被《Window Magazine》和Microsoft公司授予”Windows Pioneer”奖,以表彰他对Microsoft Windows的成功作出的贡献,可见该书的权威性,以至于“如果对Windows开发有什么问题的话,请翻阅PetZold的著作吧”几乎成了一句至理名言。 本书覆盖了WINDOWS编程的方方面面,将windows编程的每一个元素(如输入,输出及对话框,图形,多媒体,线程,文档与视图,Internet等等)讲解得很清晰、简明,采用的大多是具有代表性的示例,代码风格好并且很有实用价值。笔者认为这本书是学习WINDOWS编程的经典入门好书,每一次的细心阅读都会对WINDOWS编程有更......
C/C++招聘的一些感受和经验[转](2008-10-08 14:21:00)
摘要: 前段时间刚参加了n多公司的C/C++软件工程师的面试,有国企,外企,私企(moto,飞思卡尔,港湾,中国卫星XXX(这个牛))等等等等。感受感想颇多,近日终于空闲,在此表述一下。 本人基本条件:3年开发经验,2year+ Windows development experence,1year+ Linux experence. 熟悉C,C++,MFC/SDK/API,MiniGUI...(都是一些基本的了)。前公司并不知名,但在其中做个team leader。 言归正传 找工作本人认为最重要的就是前期准备了。 首先。简历一定要写的切合主题。招聘单位要的是你的技能,这个只要大概能符合就可以,关键他们需要的是你的开发经验,一定要在简历中完美的体现出你之前所参与的项目,一定要写明你在项目中的职责和地位,企业通过这方面侧面对你的技术水平进行定位,因此一定要实事求是的写的尽可能的详细,只要别吹牛B,再详细都不过分。只要上面这些内容得到充分的发挥,那么你基本可以得到面试的机会了。 面试之笔试。去了10多个单位面试。题惊人的相似,如果你想顺利通过笔试,有两条建议:一,去网上找一些汇总的笔试题,仔细的看看里面关于数组,指针,链表,类的问题,90%的笔试题目就是里面的原题,从CSDN的下载频道可以找到N多笔试题汇总,看过1遍之后你会发现所有的汇总内容都差不多。二、这点就有点那个了,呵呵。不好听叫作弊,好听的话叫夹带。可以把所有您认为比较复杂的算法题打印出来,大概常考的有十几个吧,比如strcpy,strcat,链表逆序,排序,字符串匹配查找,检测单向链表上的环等等,一定要带着这个去笔试,好公司一般都会为前来笔试的人员单独准备一间屋子,所以只要看到差不多的算法,放心大胆的把答案拿出来copy吧。 这里我说一下,不是出的这些题我们不会写,只是在笔试这种情况下,要把代码写的尽量简练,完善,并且工整确实有些困难。 去外企或规模大的私企或者股份制,要做好有英语题的准备,不过一般情况下不难,汉译英,英译汉,只要别空着就没问题。 只要你按照上面的做了,OK,你已经可以和HR以及技术主管直接对话了。 &nbs......
整理.net快捷键如下(2008-05-12 15:14:00)
摘要:整理.net快捷键如下
代码浏览和操作:Ctrl+F3:搜索光标所在处的词(不一定要选中) F3:搜索下一个Ctrl+'-'(Ctrl+Shift+'-'):跳动你目前位置的上(下)一个位置(这些位置都是你曾经工作过的地方)Ctrl+F2或者Ctrl+K,Ctrl+K:开/关书签BookmarkF2或者Ctrl+K,Ctrl+N:下一个书签Shift+F2或者Ctrl+K,Ctrl+P:上一个书签Ctrl+K,Ctrl+L:清除所有书签Alt+F6:切换到下一个可显示的面板,并自动的从一个Tab跳到另一个TabCtrl+'[':匹配 {} ,() 等成对标示符号。如果同时按住Shift,会选中{}, ()之间的文字。F12:跳动函数或当前标示的定义,相当于上述菜单中的Go to DefinitionAlt+O:在相应的.h和.cpp文件之间切换Ctrl+G:快速跳动代码编辑器某行编译和调试:F7:Build整个SolutioonCtrl+F7:编译单独Cpp文件Ctrl+F5:不带调试地运行程序F5:带调试的运行程序 Shift+F5:终止调试F9:在光标所在行添加断点Ctrl+Shift+F9:清除所有断点F8:在编译错误View进行导航上一个或下一个F10:单步调试-不进入函数 F11:单步调试-进入函数杂项:Ctrl+Shift+V:剪贴板循环粘贴Cycle Clipboard Ring (VS会记住若干个Copy记录。比如说你可以试着选择不同的文本块然后按Ctrl+C进行Copy,然后在按住Ctrl和Shift的同时一下一下地按V,你发现其中的奥妙了吗?VS在循环你的Copy History。)Ctrl+K,Ctrl+C:对选中文字添加注释 Ctrl+K,Ctrl+U:取消注释Ctrl+K,Ctrl+F:对选中文字进行格式Format调整Alt+Shift+Enter:全屏Full ScreenCtrl+L或者Ctrl+Y:删除光标所在的整行......
“大整数阶乖”问题的递推算法(2007-10-26 18:07:00)
摘要:
“大整数阶乖”问题的递推算法
/* 标题:<<系统设计师>>应试编程实例-[递推算法程序设计] 作者:成晓旭 时间:2002年09月11日(11:52:00-16:26:00) 实现递推算法的大整数阶乖处理函数 时间:2002年09月16日(18:38:00-20:02:00) 实现“斐波那契数列”问题的递推算法函数*/
//:============================“大整数阶乖”问题的递推算法===========================#define MAXN 1000 //最大数据位数//用递推法求取整数k的阶乖,将结果放入数组array中void pnext(int array[],int k){ int *temp; //动态数组[临时存储运算大整数] int i,j,num_len = array[0],carry,t; //循环变量,长整数位数,进位标志,临时变量 if(array[0] >= MAXN) { printf("数据处理位数超过程序设计上限,程序将自动中断运行!\n"); exit(1); } temp = (int *)malloc(sizeof(int) * (num_len + 1)); //创建动态数组 for(i=1;i<=num_len;i++) temp[i] = array[i]; //保存原始数据 for(j=1;j<k;j++) { for(carry = 0,i=1;i<=num_len;i++) { if(i <= array[0]) t = array[i]......
从union的sizeof问题看cpu的对界(2007-10-26 14:50:00)
摘要:考虑下面问题:(默认对齐方式)
union u{ double a; int b;}; union u2{ char a[13]; int b;}; union u3{ char a[13]; char b;}; cout<<sizeof(u)<<endl; // 8cout<<sizeof(u2)<<endl; // 16cout<<sizeof(u3)<<endl; // 13
都知道union的大小取决于它所有的成员中,占用空间最大的一个成员的大小。所以对于u来说,大小就是最大的double类型成员a了,所以sizeof(u)=sizeof(double)=8。但是对于u2和u3,最大的空间都是char[13]类型的数组,为什么u3的大小是13,而u2是16呢?关键在于u2中的成员int b。由于int类型成员的存在,使u2的对齐方式变成4,也就是说,u2的大小必须在4的对界上,所以占用的空间变成了16(最接近13的对界)。 结论:复合数据类型,如union,struct,class的对齐方式为成员中对齐方式最大的成员的对齐方式。 顺便提一下CPU对界问题,32的C++采用8位对界来提高运行速度,所以编译器会尽量把数据放在它的对界上以提高内存命中率。对界是可以更改的,使用#pragma pack(x)宏可以改变编译器的对界方式,默认是8。C++固有类型的对界取编译器对界方式与自身大小中较小的一个。例如,指定编译器按2对界,int类型的大小是4,则int的对界为2和4中较小的2。在默认的对界方式下,因为几乎所有的数据类型都不大于默认的对界方式8(除了long double),所以所有的固有类型的对界方式可以认为就是类型自身的大小。更改一下上面的程序:
#pragma pack(2)union u2{ char a[13]; int b;}; union u3{ char a[13]; char b;};#pragma pack(8) cout<<sizeof(u2)<<endl; // 14cout<<sizeof(u3)<<endl; // 13
由于手动更改对界方式为2,所以i......
c++中const的用法详解(2007-04-29 12:55:00)
摘要:
原创作者: 晁智平 如转贴请保留此行
const是用于保护程序的健壮性,减少程序隐患。const的用法比较复杂,总结起来又分为以下两种:1:在定义变量时使用:
a: const int a=100; 最简单的用法,说明变量a是一个常变量; b: int const b=100; 与a功能相同; c: const int *a=&b; 指向常数的指针,即指针本身的值是可以 改变的,但指向的内容是不能改变的; d: int const *a=&b; 与c功能相同; e: int * const a = &b; 常指针,即指针本身的值是不可改变的, 但指向的内容是可改变的; f: const int * const a = &b;指向常数的常指针,即指针本身与 指向的内容都是不可改变的; g: const int &a=100; 常数引用,即不能改变引用的值; 总结: 在使用const定义变量时,一定要进行初始化操作,在操作 符(*,&)左边的修饰的是指向的内容,在右边的是本身。 2:在函数用使用:
a: void func(const int a); 做为参数使用,说明函数体内是不 能修改该参数的;对不参数定义时不同的形式,可参见定义变量 时使用方式;&......
C++中虚析构函数的作用(2007-04-29 12:44:00)
摘要:我们知道,用C++开发的时候,用来做基类的类的析构函数一般都是虚函数。可是,为什么要这样做呢?下面用一个小例子来说明: 有下面的两个类:
class ClxBase{public: ClxBase() {}; virtual ~ClxBase() {}; virtual void DoSomething() { cout << "Do something in class ClxBase!" << endl; };};class ClxDerived : public ClxBase{public: ClxDerived() {}; ~ClxDerived() { cout << "Output from the destructor of class ClxDerived!" << endl; }; void DoSomething() { cout << "Do something in class ClxDerived!" << endl; };};
代码
ClxBase *pTest = new ClxDerived;pTest->DoSomething();del......
Power up C++ with the StandardTemplate(2007-04-19 14:17:00)
摘要: Power up C++ with the Standard Template Library: Part II: Advanced Uses
Creating Vector from Map
Chick Here 2:
Power up C++ with the Standard Template Library: Part I By DmitryKorolevTopCoder Member
Chick Here 1:......
