博文

按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......

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

应用程序实现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......

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

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编程有更......

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

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......

阅读全文(2547) | 评论:5

整理.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:删除光标所在的整行......

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

“大整数阶乖”问题的递推算法(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]......

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

从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......

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

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); 做为参数使用,说明函数体内是不      能修改该参数的;对不参数定义时不同的形式,可参见定义变量      时使用方式;&......

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

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......

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

 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:......

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