#pragma once
#include "signallampctrl.h"
// CSignalLampDlg 对话框
class CSignalLampDlg : public CDialog
{
// 构造
public:
CSignalLampDlg(CWnd* pParent = NULL); // 标准构造函数
问题一:“CWnd*”表示什么???为什么“类名”后面加上“*”呢???
指针的声明不是直接使用“*”的吗???
// 对话框数据
enum { IDD = IDD_SIGNALLAMP_DIALOG }; int m_nState;
CSignalLampCtrl m_slDemo; protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
virtual BOOL OnInitDialog();
// 实现
protected:
HICON m_hIcon;public:
// 生成的消息映射函数
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
afx_msg void OnBnClickedRadioNormal();问题二:“BOOL”、“HICON”、“HCURSOR”这些都是“宏”定义的参数类型对吧???问题三:“afx_msg”和“public、private、protected”这些都一样吗??? DECLARE_MESSAGE_MAP()};问题四:“DECLARE_MESSAGE_MAP()”的定义如下:
#define DECLARE_MESSAGE_MAP() \
protected: \
static const AFX_MSGMAP* PASCAL GetThisMessageMap(); \
virtual const AFX_MSGMAP* GetMessageMap() const; \如果把“\”去掉,就会成为:
#define DECLARE_MESSAGE_MAP() protected: static const AFX_MSGMAP* PASCAL GetThisMessageMap(); virtual const AFX_MSGMAP* GetMessageMap() const;
这里是把“GetThisMessageMap()”和“GetMessageMap()”两个方法定义为一个“宏”(DECLARE_MESSAGE_MAP())了吗???
有点不明白???

解决方案 »

  1.   

    问题一:int* p;和int *p;是一样的,同理;
    问题二:同int,是一种参数类型;
    问题三:不一样
    问题四:\一句话太长了,换行用的
      

  2.   

    “CWnd*”表示定义一个CWnd类的对象指针。
      

  3.   


    附加问题:
    “afx_msg”和“public、private、protected”这些都一样吗???
    既然不一样,那么“afx_msg”表示什么呢???如果把“\”去掉,就会成为:
    #define DECLARE_MESSAGE_MAP() protected: static const AFX_MSGMAP* PASCAL GetThisMessageMap(); virtual const AFX_MSGMAP* GetMessageMap() const;
    这里是把“GetThisMessageMap()”和“GetMessageMap()”两个方法定义为一个“宏”(DECLARE_MESSAGE_MAP())了吗???
    已经去掉了啊,问题是自己理解的对吗???
      

  4.   


    afx_msg宏表示声明的是一个消息响应函数
      

  5.   

    1. CWnd* 是指向窗口类的指针
    2. 也是一种类型
    3. 不一样,afx_msg 只是起一个指示作用,告诉用户这是一个消息响应函数,没有什么实际的作用
    4. \ 起换行作用,上面有多个\表明 整个宏定义只是一行,只是为了看起来方便才写成多行的,等价于把几个\去掉后写成一行