对话框继承知识

我看你有戏 2010-07-07 01:20:49
我写了个对话框类 CAdlg 是从一个公用的对话框ccommdlg继承的
这个ccommdlg是从CDialog继承过来的


请问,窗口响应函数,如何不经过CAdlg 而是直接让ccommdlg中的函数进行相应

...全文
274 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
我看你有戏 2010-07-09
  • 打赏
  • 举报
回复
发个例子到我邮箱行吗,拜托了

6102435@qq.com
Eleven 2010-07-09
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 henry3695 的回复:]
引用 17 楼 visualeleven 的回复:
或者这样,你修改分别修改CNewDlg和CNewDlg2的构造函数
-------------------------------------------------

C/C++ code


class CNewDlg : public CDialog
{
// Construction
public:
CNewDlg(……
[/Quote]
你自己不会用吧,模态,非模态都可以,只用简单的改改就行了,主要是在构造函数中修改。。。
我看你有戏 2010-07-09
  • 打赏
  • 举报
回复
请高手指点迷津
我看你有戏 2010-07-07
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 visualeleven 的回复:]
或者这样,你修改分别修改CNewDlg和CNewDlg2的构造函数
-------------------------------------------------

C/C++ code


class CNewDlg : public CDialog
{
// Construction
public:
CNewDlg(UINT nID, CWnd* pParent……
[/Quote]

大哥你这个不行的啊我试过了
Eleven 2010-07-07
  • 打赏
  • 举报
回复
注意一下CNewDlg和CNewDlg2的构造函数的不同
wltg2001 2010-07-07
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 visualeleven 的回复:]
引用 12 楼 wltg2001 的回复:
试了一下部长的代码,好像弹出来的并不是子类对话框,而是CNewDlg类

因为子类中的ID和父类的一样。。。
这样应该就可以了吧
CNewDlg2* dlg = new CNewDlg2;
dlg->Create(IDD_DIALOG2, this);
dlg->ShowWindow(SW_SHOW);
[/Quote]
部长说的不错,上面的代码确实很实现楼主的功能,不过,用模态对话框不行.
Eleven 2010-07-07
  • 打赏
  • 举报
回复
或者这样,你修改分别修改CNewDlg和CNewDlg2的构造函数
-------------------------------------------------


class CNewDlg : public CDialog
{
// Construction
public:
CNewDlg(UINT nID, CWnd* pParent = NULL); // standard constructor

// Dialog Data
//{{AFX_DATA(CNewDlg)
// enum { IDD = IDD_DIALOG1 };
// NOTE: the ClassWizard will add data members here
//}}AFX_DATA


// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CNewDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL

// Implementation
protected:

// Generated message map functions
//{{AFX_MSG(CNewDlg)
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
---------------------------------------------------------------

CNewDlg::CNewDlg(UINT nID, CWnd* pParent /*=NULL*/)
: CDialog(nID, pParent)
{
//{{AFX_DATA_INIT(CNewDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
}


void CNewDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CNewDlg)
// NOTE: the ClassWizard will add DDX and DDV calls here
//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CNewDlg, CDialog)
//{{AFX_MSG_MAP(CNewDlg)
ON_WM_LBUTTONDOWN()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CNewDlg message handlers

void CNewDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
AfxMessageBox(_T("new1"));
CDialog::OnLButtonDown(nFlags, point);
}
--------------------------------------------------------------------
----------------------------------------------------------------------
#include "NewDlg.h"

class CNewDlg2 : public CNewDlg
{
// Construction
public:
CNewDlg2(CWnd* pParent = NULL); // standard constructor

// Dialog Data
//{{AFX_DATA(CNewDlg2)
enum { IDD = IDD_DIALOG2 };
// NOTE: the ClassWizard will add data members here
//}}AFX_DATA


// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CNewDlg2)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL

// Implementation
protected:

// Generated message map functions
//{{AFX_MSG(CNewDlg2)
// NOTE: the ClassWizard will add member functions here
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
------------------------------------------------------------------------


CNewDlg2::CNewDlg2(CWnd* pParent /*=NULL*/)
: CNewDlg(CNewDlg2::IDD,pParent)
{
//{{AFX_DATA_INIT(CNewDlg2)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
}


void CNewDlg2::DoDataExchange(CDataExchange* pDX)
{
CNewDlg::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CNewDlg2)
// NOTE: the ClassWizard will add DDX and DDV calls here
//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CNewDlg2, CNewDlg)
//{{AFX_MSG_MAP(CNewDlg2)
// NOTE: the ClassWizard will add message map macros here
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CNewDlg2 message handlers

-------------------------------------------------
----------------------------------------------
//调用
CNewDlg2 dlg;
dlg.DoModal();
Eleven 2010-07-07
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 wltg2001 的回复:]
试了一下部长的代码,好像弹出来的并不是子类对话框,而是CNewDlg类
[/Quote]
因为子类中的ID和父类的一样。。。
这样应该就可以了吧
CNewDlg2* dlg = new CNewDlg2;
dlg->Create(IDD_DIALOG2, this);
dlg->ShowWindow(SW_SHOW);
我看你有戏 2010-07-07
  • 打赏
  • 举报
回复
那就是说只能是需要传递一下了吗
wltg2001 2010-07-07
  • 打赏
  • 举报
回复
我觉得楼主的想法不太靠谱,当前弹出来的是子类对话框,消息肯定是发送给子类对话框窗口的, 那么处理当然也是由子类对话框来处理,由子类转发是可以的,但是完全跳过它不太可能.
gz_qmc 2010-07-07
  • 打赏
  • 举报
回复

我理解你的意思,应该是说:
如何让子类不继承父类的某些东西
比如对某些消息的响应

那么你还是要在子类重新写这些函数
比如以2楼为例:
void CAdlg::OnOK()
{
}
这样一来,子类对IDOK就相当于不响应了.
又比如8楼的
void CNewDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
//CDialog::OnLButtonDown(nFlags, point);
}
把向父类传递的代码注释掉,子类就等同于不响应数标左键了

这样是你想要的结果吗?
wltg2001 2010-07-07
  • 打赏
  • 举报
回复
试了一下部长的代码,好像弹出来的并不是子类对话框,而是CNewDlg类
Eleven 2010-07-07
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 henry3695 的回复:]
对啊,你这样写的话,好像是响应不到鼠标点击消息的吧
[/Quote]
你自己试一下不就很清楚了。。。。
山伟 2010-07-07
  • 打赏
  • 举报
回复
你想要的恐怕不能实现。

根据继承的概念,假设你对ccommdlg添加了消息WM_LBUTTONDOWN,那么它的子类CAdlg也同样会继承该消息。因此你说的让父类的消息子类不响应应该不行。

不知道我的理解对不对,请高手继续解答!
我看你有戏 2010-07-07
  • 打赏
  • 举报
回复
对啊,你这样写的话,好像是响应不到鼠标点击消息的吧
Eleven 2010-07-07
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 henry3695 的回复:]
引用 3 楼 wltg2001 的回复:
请问,窗口响应函数,如何不经过CAdlg 而是直接让ccommdlg中的函数进行相应
==========
在CAdlg中转发就行了,比如处理WM_LBUTTONDOWN消息,还是让CADlg处理WM_LBUTTONDOWN消息,不过直接调用commslg::LButton..();就行了.





我的想设计出这样的功能,有些消息我不……
[/Quote]
你说的是这个意思吗?例如下面的
//CNewDlg类 ,处理WM_LBUTTONDOWN消息

// CNewDlg的H文件
class CNewDlg : public CDialog
{
// Construction
public:
CNewDlg(CWnd* pParent = NULL); // standard constructor

// Dialog Data
//{{AFX_DATA(CNewDlg)
enum { IDD = IDD_DIALOG1 };
// NOTE: the ClassWizard will add data members here
//}}AFX_DATA


// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CNewDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL

// Implementation
protected:

// Generated message map functions
//{{AFX_MSG(CNewDlg)
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
// CNewDlg的CPP文件


CNewDlg::CNewDlg(CWnd* pParent /*=NULL*/)
: CDialog(CNewDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CNewDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
}


void CNewDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CNewDlg)
// NOTE: the ClassWizard will add DDX and DDV calls here
//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CNewDlg, CDialog)
//{{AFX_MSG_MAP(CNewDlg)
ON_WM_LBUTTONDOWN()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CNewDlg message handlers

void CNewDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
AfxMessageBox(_T("Hello"));
CDialog::OnLButtonDown(nFlags, point);
}
------------------------------------------------------------------
// CNewDlg2继承了CNewDlg类
#include "NewDlg.h"

// CNewDlg2的H文件
class CNewDlg2 : public CNewDlg
{
// Construction
public:
CNewDlg2(CWnd* pParent = NULL); // standard constructor

// Dialog Data
//{{AFX_DATA(CNewDlg2)
enum { IDD = IDD_DIALOG1 };
// NOTE: the ClassWizard will add data members here
//}}AFX_DATA


// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CNewDlg2)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL

// Implementation
protected:

// Generated message map functions
//{{AFX_MSG(CNewDlg2)
// NOTE: the ClassWizard will add member functions here
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};

// CNewDlg2的CPP文件

CNewDlg2::CNewDlg2(CWnd* pParent /*=NULL*/)
: CNewDlg(pParent)
{
//{{AFX_DATA_INIT(CNewDlg2)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
}


void CNewDlg2::DoDataExchange(CDataExchange* pDX)
{
CNewDlg::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CNewDlg2)
// NOTE: the ClassWizard will add DDX and DDV calls here
//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CNewDlg2, CNewDlg)
//{{AFX_MSG_MAP(CNewDlg2)
// NOTE: the ClassWizard will add message map macros here
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CNewDlg2 message handlers
--------------------------------------------------------------------------------
//调用:
CNewDlg2 dlg;
dlg.DoModal();
我看你有戏 2010-07-07
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wltg2001 的回复:]
请问,窗口响应函数,如何不经过CAdlg 而是直接让ccommdlg中的函数进行相应
==========
在CAdlg中转发就行了,比如处理WM_LBUTTONDOWN消息,还是让CADlg处理WM_LBUTTONDOWN消息,不过直接调用commslg::LButton..();就行了.
[/Quote]




我的想设计出这样的功能,有些消息我不想让派生类的对话框处理,也不想让它给我转发,而是直接让基类对话框去响应


这样的东西可以设计出来吗

我看你有戏 2010-07-07
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wltg2001 的回复:]
请问,窗口响应函数,如何不经过CAdlg 而是直接让ccommdlg中的函数进行相应
==========
在CAdlg中转发就行了,比如处理WM_LBUTTONDOWN消息,还是让CADlg处理WM_LBUTTONDOWN消息,不过直接调用commslg::LButton..();就行了.
[/Quote]




我的想设计出这样的功能,有些消息我不想让派生类的对话框处理,也不想让它给我转发,而是直接让基类对话框去响应


这样的东西可以设计出来吗

我看你有戏 2010-07-07
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wltg2001 的回复:]
请问,窗口响应函数,如何不经过CAdlg 而是直接让ccommdlg中的函数进行相应
==========
在CAdlg中转发就行了,比如处理WM_LBUTTONDOWN消息,还是让CADlg处理WM_LBUTTONDOWN消息,不过直接调用commslg::LButton..();就行了.
[/Quote]




我的想设计出这样的功能,有些消息我不想让派生类的对话框处理,也不想让它给我转发

这样的东西可以设计出来吗
gz_qmc 2010-07-07
  • 打赏
  • 举报
回复
抱歉,响应消息函数不是 重载 的概念,楼主注意了.
我2楼的语言有误,楼主见谅
加载更多回复(3)
说明:本书稿为张孝祥、袁龙友两位老师在2000 年依据张孝祥的vc 讲课记录整理,由于时间关系,仅仅是写成了草稿,欢迎大家使用! 第1 章 掌握C 1.1 类的定义与应用 1.1.1 结构的定义 1.1.2 类的定义 1.1.2.1 类与结构 1.1.2.2 类的使用 (例子代码EX01-00) 1.2 函数的重载 1.2.1 重载参数个数不同的函数 (例子代码EX01-01) 1.2.2 重载参数数据类型不同的函数 (例子代码EX01-02) 1.3 构造函数与析构函数 1.3.1 构造函数 1.3.2 析构函数 (图1,没有)(图2,没有) 1.4 this 指针的引用 1.5 类的继承与protected 访问修饰符 1.5.1 单一继承 (例子代码EX01-03) (图x,没有) 1.5.2 多重继承 1.6 虚函数与多态性 1.7 类的书写规范 1.8 小结 第2 章 Windows 程序内部运行原理 2.1 Windows 应用程序,操作系统,计算机硬件之间的相互关系 2.1.1 关于API (图1,没有) 2.1.2 关于消息及消息队列 (图1、图2 没有) 2.2 什么是句柄 2.3 谈谈WinMain 函数 (例子代码EX02-00) 2.3.1 WinMain 函数的定义及功能 2.3.2 窗口及其生成 2.3.2.1 如何设计一个窗口类——步骤1 2.3.2.2 注册设计好的窗口类——步骤2 2.3.2.3 创建窗口——步骤3 2.3.2.4 显示创建的窗口——步骤4 2.3.3 消息循环 2.3.4 完成回调函数 2.4 程序编写操作步骤与实验 2.5 小结 第3 章 VC 集成开发环境介绍 3.1 Visual C 开发环境 3.1.1 工作区窗格 3.1.2 输出窗格 3.1.3 编辑区 3.1.4 菜单栏、工具栏、状态栏 3.2 系统菜单功能介绍 3.2.1 File 菜单 3.2.2 Edit 菜单 3.2.3 View 菜单 3.2.4 Insert 菜单 3.2.5 Project 菜单 3.2.6 Build 菜单 3.2.6 Tools 菜单 3.2.7 Window 菜单 3.2.8 Help 菜单 3.3 Visual C 重要工具介绍 3.3.1 C/C 编译器 3.3.2 资源编辑器 3.3.3 资源编译器 3.3.4 链接器和调试器 3.3.5 AppWizard 和ClassWizard 3.3.6 资源浏览器 3.3.7 Microsoft 活动模板库、仓库 3.4 小结 第4 章 MFC 应用程序框架剖析 4.1 什么是MFC 以及MFC 的特点 (例子代码EX04-00) 4.2 MFC 应用程序框架 (例子代码EX04-01) 4.3 应用程序框架说明 4.4 文档-视图体系结构 4.4.1 文档-视图相互作用的函数 4.4.2 单文档-视图应用程序结构 4.4.2 多文档-视图应用程序结构 4.5 MFC 消息映射机制 4.5.1 消息的种类 4.5.2 应用程序的Run 函数 4.5.3 消息映射表 4.5.4 如何添加消息映射 4.6 ClssWizard 的使用 4.6.1 ClssWizard 概貌 4.6.2 如何添加消息处理函数 4.6.3 如何添加成员变量 4.6.4 如何添加一个新类 第5 章 图形与文本 5.1 理解图形设备接口 5.2 设备描述表 5.2.1 什么是设备描述表 5.2.2 MFC 中的设备描述表类 5.2.3 获取设备描述表 5.3 Windows 的GDI 对象 5.4 GDI 对象的创建 5.4.1 自定义画刷(CBrush) 5.4.2 自定义画笔(CPen) 5.4.3 自定义字体(CFont) 5.5 GDI 对象的使用及示例 5.5.1 画笔的使用 5.5.1.1 在MFC 程序中画线 5.5.1.2 在Windows Application 程序中画线 5.5.1.3 实现橡皮筋功能 5.5.2 画刷的使用 5.5.2.1 带颜色的画刷的使用 5.5.2.2 带位图的画刷的使用 5.5.3 字体的使用 5.5.3.1 一个简单的文字处理程序 5.5.3.2 模拟卡拉OK 程序 5.5.3.3 剪切区和路径层 第六章 菜单、工具栏和状态栏 6.1 菜单 6.1.1 菜单介绍 6.1.2 创建一个菜单 6.1.2.1 添加一个菜单资源 6.1.2.2 利用菜单编辑器编辑菜单资源 6.1.2.3 将菜单加入到应用程序中 6.1.2.4 给菜单项添加COMMAND 消息处理 6.1.2.5 给菜单项添加UPDATE_COMMAND_UI 消息处理 6.1.2.6 一个简单的绘图程序 6.1.3 在应用程序中控制菜单 6.1.3.1 在应用程序中取得菜单 6.1.3.2 在应用程序中修改菜单的状态 6.1.3.3 在应用程序中添加、删除、插入菜单或菜单项 6.1.3.4 一个简易的电话本程序 6.1.4 创建快捷方式菜单 6.2 工具栏 6.2.1 工具栏介绍 6.2.1.1 熟悉CToolBar 类 6.2.1.2 AppWizard 是如何创建工具栏 6.2.1.3 利用工具栏编辑器设计工具栏按钮 6.2.2 新建一个工具栏 6.2.3 显示/隐藏工具栏 6.3 状态栏 6.3.1 状态栏介绍 6.3.1.1 熟悉CStatusBar 类 6.3.1.2 AppWizard 是如何创建状态栏 6.3.2 修改状态栏 6.3.2.1 指示器数组 6.3.2.2 修改状态栏窗格 6.3.3 在状态栏上显示鼠标坐标、时钟和进度条 6.3.3.1 在状态栏上显示鼠标坐标 6.3.3.2 在状态栏上显示时钟 6.3.3.3 在状态栏上显示进度条 第七章 对话框和控件 7.1 对话框及控件的介绍 7.1.1 常用控件介绍 7.1.2 对话框介绍 7.1.2.1 对话框的组成 7.1.2.2 对话框的种类 7.1.2.3 使用对话框编辑器设计对话框 7.1.3 创建一个对话框 7.1.3.2 创建非模态对话框 7.1.3.3 对话框的数据交换机制 7.1.3.4 创建模态对话框 7.1.4 模态对话框和非模态对话框的区别 7.1.5 按钮逃跑小程序 7.2 属性页和向导对话框 7.2.1 创建属性页对话框 7.2.1 创建向导对话框 7.3 公用对话框 7.3.1 增加设置对话框来完善绘图程序 7.3.2 颜色对话框的使用 7.3.3 字体对话框的使用 7.3.4 控制控件颜色做漂亮界面 第8 章 文档序列化 8.1 序列化 8.1.1 CArchive 类和Serialize 函数 8.1.2 使自己的类支持序列化 8.1.3 实例:保存和显示图形 8.2 CFile 类 8.2.1 CFile 类的构造函数 8.2.2 打开文件 8.2.3 读写数据 8.2.4 关闭文件 8.3 文件I/O 处理 8.3.1 利用MFC 类来实现 8.3.2 利用C 函数来实现 8.3.3 利用C 函数来实现 8.3.4 利用API 函数来实现 8.3.5 创建保存、打开对话框 8.4 注册表操作 8.4.1 什么是注册表 8.4.2 注册表结构 8.4.3 修改注册表 第9 章 修改框架程序的显示效果 9.1 修改Windows 应用程序外观样式 9.1.1 在框架类中修改程序外观 9.1.2 在视图类中修改程序外观 9.2 制作动画图标 9.3 将图片作为窗口显示的背景 第10 章 网络编程 10.1 计算机网络的基本概念 10.1.1 计算机网络的分类 10.1.2 网络拓扑结构 10.2 网络体系结构和网络协议 10.2.1 ISO/OSI 参考模型 10.2.2 TCP/IP 参考模型 10.2.3 TCP/IP 协议 10.2.3.1 协议概述 10.2.3.2 TCP/IP 协议层次结构及各种协议介绍 10.2.3.3 IP 地址 10.2.3.4 端口号 10.2.4 专业术语解释 10.3 Socket 套接字 10.3.1 Socket 介绍 10.3.2 关于协议族和地址族 10.3.3 使用Socket 10.3.3.1 创建Socket 10.3.3.2 指定本地地址及端口号 10.3.3.3 建立连接 10.3.3.4 监听连接 10.3.3.5 发送数据 10.3.3.6 接收数据 10.3.3.7 关闭套接字 10.3.4 套接字一般调用过程 10.4 WinSock 编程机制 10.4.1 认识Windows Socket 10.4.2 Windows Sockets 库函数介绍 10.4.2.1 Berkeley socket 函数 10.4.2.2 数据库函数 10.4.2.3 Windows 专有扩展函数 10.5 WinSock 编程实例 10.5.1 实例一:面向连接服务的socket 调用 10.5.2 实例二:面向非连接服务的socket 调用 10.5.3 实例三:基于字符界面的聊天程序 第11 章 线程间的同步 11.1 进程和线程的概念 11.2 Win32 的线程 11.2.1 线程的创建 11.2.2 线程的终止 11.2.3 实例:通过创建多线程来编写网络聊天程序 11.3 MFC 的线程处理 11.3.1 创建工作者线程 11.3.2 创建用户界面线程 11.4 线程同步 11.4.1 为什么要同步 11.4.2 等待函数 11.4.3 同步对象 11.4.3.1 关键代码段 11.4.3.2 互斥对象 11.4.3.3 信标对象 11.4.3.4 事件对象 11.4.4 如何选择同步对象 第12 章 进程间的通讯 12.1 进程控制 12.1.1 进程的创建 12.1.2 进程的终止 12.2 进程间通讯 12.2.1 剪贴板通讯方式 12.2.2 邮槽通讯方式 12.2.3 管道通讯方式 12.2.3.1 命名管道通讯 12.2.3.2 匿名管道通讯 第14 章 ActiveX 技术 14.1 ActiveX 简介 14.2 ActiveX 控件和普通Windows 控件 14.2.1 ActiveX 控件和普通Windows 控件的相同点 14.2.2 ActiveX 控件和普通Windows 控件的相同点 14.3 ActiveX 控件的属性、方法和事件 14.3.1 ActiveX 控件的属性 14.3.2 ActiveX 控件的方法 14.3.3 ActiveX 控件的事件 14.4 创建ActiveX 控件
Android的系统架构 6 一、应用程序 6 二、应用程序框架 6 三、Android Runtime 7 四、系统库 7 五、Linux 内核 8 Webkit浏览器引擎简介 9 Dalvik虚拟机简介 11 什么是Dalvik虚拟机 11 Dalvik和Android系统 11 Dalvik虚拟机的主要特征 12 Android应用开发和Dalvik虚拟机 15 Activity生命周期 16 一、Activity栈 16 二、Activity的4种状态 16 三、Activity的生命周期 17 四、实例说明 18 Android控件的继承关系 22 一、View与ViewGroup关系 22 二、各控件的继承关系 23 界面布局 25 LinearLayout(线性布局) 25 TableLayout(表格布局) 28 RelativeLayout(相对布局) 31 AbsoluteLayout(绝对布局) 34 FrameLayout(框架布局) 34 Toast 36 Notification 38 对话框 42 一、带三个按钮的对话框 42 二、简单列表对话框、单选列表对话框、多选列表对话框 44 三、水平进度对话框和圆形进度对话框 47 四、自定义对话框 49 Menu菜单 52 选项菜单 52 上下文菜单 53 三、子菜单 54 4种响应菜单项单击事件的方式 56 显示和编辑文本的控件 57 TextView 57 CheckedTextView 60 EditText 60 ExtraEditText 61 AutoComplteteTextView、MultiAutoCompleteTextView (自动完成输入内容) 61 Button 63 ImageButton 65 ZoomButton 65 日期和时间控件 66 DatePicker、TimePicker 66 AnalogClock、DigitalClock 68 单选框、复选框、开关状态按钮 69 单项选择(RadioGroup、RadioButton) 69 复选框(CheckBox) 71 开关状态按钮(ToggleButton) 73 下拉列表框Spinner 74 ScrollView、HorizontalScrollView 77 垂直滚动(ScrollView) 77 水平滚动(HorizontalScrollView) 78 两个方向均可滚动 78 TabHost 79 ProgressBar、SeekBar、RatingBar 81 进度条(ProgressBar) 81 拖动条(SeekBar) 83 评分组件(RatingBar) 86 GridView、Gallery和ImageSwitcher 88 GridView 88 Gallery和ImageSwitcher 91 ListView 94 一、普通的ListView 94 可以单选和多选的ListView 95 使用SimpleAdapter建立复杂的列表项 97 自定义Adapter来建立复杂的列表项 99 动态添加、删除ListView列表项 102 改变ListView列表项选中状态的背景颜色 102 可展开的列表组件 102 数据的存取 103 SharePreferences 6.1 103 文件的存储6.2 103 SQLite数据库6.4 103 ContentProvider、ContentResolver 6.5 105 Intent 106 用Intent启动Activity,并在Activity之间传递数据 106 调用其他应用程序中的Activity(打电话、浏览网页、发Email等) 109 接收和发送广播 113 接收系统广播 113 在自己的应用程序中发送广播 117 Android服务 118 系统服务 8.2 118 时间服务 8.3 118 跨进程访问 8.4 118 网络 119 图形、音频、视频 120 图形 10.1 120 音频、视频 10.2 120 2D动画 121 帧动画 121 补间动画 121 OpenGL ES编程 122 Android支持的各种资源 123 窗口小部件(App Widget) 124 NDK编程 125

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧