CEdit中怎么响应回车事件?

//方法一,直接重写PreTranslateMessage方法,在其中捕获相应的动作

重写PreTranslateMessage
BOOL CMyDialog::PreTranslateMessage(MSG* pMsg)
{
if(pMsg->wParam==VK_RETURN && pMsg->message == WM_KEYDOWN )
{
if(GetFocus()->GetDlgCtrlID() == IDC_EDIT1)
{
//写上要处理的代码
}
// do it you
return TRUE;
}

return CDialog::PreTranslateMessage(pMsg);
}

//方法二: 从CEdit派生一个新的MyEdit类,在类的PreTranslateMessage()函数中处理

BOOL CMyEdit::PreTranslateMessage(MSG* pMsg)
{
if(pMsg->message==WM_KEYDOWN && pMsg->wParam == VK_RETURN)
{
yourFunc();//在这里调用你的函数
}
return CEdit::PreTranslateMessage(pMsg);
}
发表在 MFC | 留下评论

#ifndef#endif防止头文件重复包含

   在C++中由于程序设计的需要,我们需要自己编写相应的类头文件与实现。但在编程的过程中,我们总是会不经意的遇到编译器报类重复定义这样的错误。我们可能会觉的很郁闷?明明在main主函数中只包含了一个类的定义,怎么报出这样的错?其实这是预编译器在头文件展开的时候出现的问题。比如说main主函数文件包含了一个#include “A.h” 头文件和一个#include “B.h”头文件,而#include “A.h”头文件的定义中又包含了#include “B.h”头文件。 继续阅读

发表在 C++ | 留下评论

结构体与类

               在学习C++中我们可能会对结构体与类的关系产生疑问,这两个类型怎么这么相似?他们有什么异同点?确实他们两个非常的像,结构体与类都可以具有属性(可以是基本类型或类对象)和函数。访问方式也一样,都通过圆点运算符.来访问相应成员。都可以具有访问限定符(public, private, protected)。 继续阅读

发表在 C++ | 留下评论

声明与定义的区别

                C++中的声明与定义边界不是很清晰,那这两者之间到底有什么差别呢?

声明:   就是告诉编译器这个变量或函数在内存的某个位置已经定义(即分配了内存地址),向编译器做个自我介绍。如果要用就可以直接用,不需要说再来分配相应的内存。 变量或函数的声明用关键字extern来表明,但函数声明可以省略。原因在于函数的声明与定义边界非常的清晰,没有函数体的就是声明,有函数体的就是定义。 继续阅读

发表在 C++ | 留下评论

函数,变量及存储方案

                我们知道变量分为两种类型,一种是自动变量另一种是静态变量,自动变量存储在相应在栈 中,创建和销毁与程序的控制权和作用域相关,控制权进入相应作用域则编译器创建并维护变量在相应的栈(一种先进后出的结构)中,出了作用域则自动销毁。也 就是说其生命周期由程序的执行状态控制。而静态变量,即是存储在编译器分配的固定的内存中(不在栈中),其生命周期在整个程序运行中一直存在。而这样的内 存我们也称为静态内存块。 继续阅读

发表在 C++ | 留下评论

C++中const指针的应用

                    用const修饰指针可以形成四种权限的限制,并达到控制指针与所指数据的常态性(也就是做到最小访问权限)。那什么样的场合下会用到这样的权限控制呢?这个主要还是应用在函数调用当中。比如举个例子,当我们调用函数时,并不希望函数体内对于传入的指针参数修改指针所指对象的数据时,就派上用场了。const修饰的指针有四种类型,下面我们来详细解析一下: 继续阅读

发表在 C++ | 留下评论

C++中的this指针

    对于类对象,我们一定会直觉的认为肯定会比一般的数据类型大很多才是。为什么呢?可能有的人就可以很容易的举出相应的例子。比如说:对象包含了数据成员和成员函数。这样的一个实体能不大吗?常规理解对象确实很大,它不单单只有数据,而且还有函数来着。但是直觉却总是有例外的时候,其实编译器只维护了类的所有对象的一个函数副本。你可以用sizeof()函数来计算一下类或类的对象的大小。你会发现他们确实只包含了数据,而没有函数。有的人可能要问了,为什么这样做啊? 继续阅读

发表在 C++ | 标签为 | 留下评论

静态持续性变量与自动局部变量异同

                  对于C++中的变量存在着两种类型的不同形式。1.静态持续性变量   2.自动局部性变量     那这两者有何区别呢?下面我们来一起分析一下,他们的异同点。

1.静态持续性变量:

         即此变量在程序的整个生命周期中一起存在,不管程序是否执行到相应的作用域。它一直存在,由于是静态的,所有它们并没有像其它自动局部变量(即相应作用域内定义的变量,出了作用域变量自动销毁)那样,在特定的管理装置中管理维护(即栈中)。 继续阅读

发表在 C++ | 留下评论

迭代与递归深入解析(二)

             对于程序开发中要执行相同的运算(例:阶乘运算),我们应该选择哪一种函数调用呢?那迭代与递归调用的相同点与不同点又是什么呢?下面我们就来深入分析其中执行的机制(从性能,变量申请,内存,运算时间方面考虑)。

迭代与递归比较:

相同点:1.他们都有运算的出口点,也就是说迭代和递归都有自己的终止条件,否则会引发无限循环迭代与无限递归。 继续阅读

发表在 C++ | 留下评论

深度解析函数调用与变量存储

       对于堆栈结构相应大家一定还是很熟悉的吧,其实C++中函数的调用就是应用这一经典数据结构的完美体现。堆栈对于函数就像宗教对于人一样起异常重要的作用。堆栈:即一种先进后出的结构,主要有二种操作方式 1.压入栈   2.弹出栈。   举个比较形象的例子,比如一组菜盘(就是我们平时吃饭用的碟子),我们平时取的时候总是先从最上面取(即:弹出),而放的话也是放在最上面(即:压入)。总体来说就是这样的一种形式。那么对于C++中函数的调用,是怎么具体来执行的呢? 继续阅读

发表在 C++ | 留下评论