奇怪,对话框程序中不能自定义消息

Sunlet 2000-09-07 09:58:00
我想在对话框的程序中定义消息:
#define MYMSG WM_USER+100
.h文件中
afx_msg LRESULT OnMsg(WPARAM w,LPARAM l)

DECLARE_MESSAGE_MAP上面
ON_MESSAGE(MYMSG,OnMsg)

.cpp中
afx_msg LRESULT C...Dlg::OnMsg(WPARAM w,LPARAM l)
{
AfxMessageBox("adsf");
return 1;
}
编译出现七个错误,我用同样的方法在sdi程序中测试,成功.
请问: 1. 是不是在对话框程序中不能这样自定义消息
2. 若是,请问怎样在对话框程序中自定义消息.
谢谢!



...全文
210 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Holly 2000-09-08
  • 打赏
  • 举报
回复
检查testmsgdlg.cpp中引用的头文件的书写,尤其是最后一个include 的头文件!
坎坷的菜贩 2000-09-08
  • 打赏
  • 举报
回复
呵呵,一看就知道是语法错误!检查检查吧(很可能是哪个分号)
iforever 2000-09-08
  • 打赏
  • 举报
回复
不能头疼医头脚疼医脚,
U皮特U 2000-09-08
  • 打赏
  • 举报
回复
To Sunlet: 你程序中第86,89行代码是什么?
To bulehawk: 常规作法在函数的实现中确实不用afx_msg,但加上不会产生错误。错误的原因肯定不在这里。我已经按Sunlet的方式做过测试,没有问题,可能存在其它原因。
bulehawk 2000-09-08
  • 打赏
  • 举报
回复
LRESULT C...Dlg::OnMsg(WPARAM w,LPARAM l)
{
AfxMessageBox("adsf");
return 1;
}
把afx_msg 去掉
Sunlet 2000-09-08
  • 打赏
  • 举报
回复
就在ON_MESSAGE(..)一行,出现了一下七个错误.
Compiling...
testmsgDlg.cpp
D:\CurrentWork\VotePost\testmsg\testmsgDlg.cpp(86) : error C2059: syntax error : ';'
D:\CurrentWork\VotePost\testmsg\testmsgDlg.cpp(86) : error C2143: syntax error : missing ';' before ','
D:\CurrentWork\VotePost\testmsg\testmsgDlg.cpp(86) : error C2143: syntax error : missing ';' before '}'
D:\CurrentWork\VotePost\testmsg\testmsgDlg.cpp(86) : error C2143: syntax error : missing ';' before '}'
D:\CurrentWork\VotePost\testmsg\testmsgDlg.cpp(89) : error C2143: syntax error : missing ';' before '{'
D:\CurrentWork\VotePost\testmsg\testmsgDlg.cpp(89) : error C2447: missing function header (old-style formal list?)
D:\CurrentWork\VotePost\testmsg\testmsgDlg.cpp(89) : error C2143: syntax error : missing ';' before '}'
Error executing cl.exe.

testmsg.exe - 7 error(s), 0 warning(s)
Sunlet 2000-09-08
  • 打赏
  • 举报
回复
一个愚蠢的错误!!!谢谢各位,给你们加分了.
U皮特U 2000-09-08
  • 打赏
  • 举报
回复
#define WM_MSG定义的写法不对,后面不需要分号';'
Holly 2000-09-08
  • 打赏
  • 举报
回复
将#define WM_MSG WM_USER+200;
中的';'去掉!

Sunlet 2000-09-08
  • 打赏
  • 举报
回复
谢谢这么多好心人的关心,我把.h和.cpp文件全贴出来吧
#define AFX_TESTMSGDLG_H__1A23F78D_84EC_11D4_A562_00103C7C7A77__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

/////////////////////////////////////////////////////////////////////////////
// CTestmsgDlg dialog
#define WM_MSG WM_USER+200;
class CTestmsgDlg : public CDialog
{
// Construction
public:

CTestmsgDlg(CWnd* pParent = NULL); // standard constructor

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

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

// Implementation
protected:
HICON m_hIcon;

// Generated message map functions
//{{AFX_MSG(CTestmsgDlg)
virtual BOOL OnInitDialog();
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
afx_msg LRESULT OnMsg(WPARAM w,LPARAM l);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_TESTMSGDLG_H__1A23F78D_84EC_11D4_A562_00103C7C7A77__INCLUDED_)
// testmsgDlg.cpp : implementation file
//

#include "stdafx.h"
#include "testmsg.h"
#include "testmsgDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About

class CAboutDlg : public CDialog
{
public:
CAboutDlg();

// Dialog Data
//{{AFX_DATA(CAboutDlg)
enum { IDD = IDD_ABOUTBOX };
//}}AFX_DATA

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

// Implementation
protected:
//{{AFX_MSG(CAboutDlg)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
//{{AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAboutDlg)
//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
// No message handlers
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CTestmsgDlg dialog

CTestmsgDlg::CTestmsgDlg(CWnd* pParent /*=NULL*/)
: CDialog(CTestmsgDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CTestmsgDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

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

BEGIN_MESSAGE_MAP(CTestmsgDlg, CDialog)
//{{AFX_MSG_MAP(CTestmsgDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()

ON_MESSAGE(WM_MSG,OnMsg)
//}}AFX_MSG_MAP

END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CTestmsgDlg message handlers

BOOL CTestmsgDlg::OnInitDialog()
{
CDialog::OnInitDialog();
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}

// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
return TRUE; // return TRUE unless you set the focus to a control
}
void CTestmsgDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}
void CTestmsgDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting

SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}
HCURSOR CTestmsgDlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}

LRESULT CTestmsgDlg::OnMsg(WPARAM w, LPARAM l)
{
AfxMessageBox("ok");
return 1;

}

U皮特U 2000-09-07
  • 打赏
  • 举报
回复
没有问题呀!方法都是一样的。你的编译错误是什么?贴出来看看。
目录 (1) 如何通过代码获得应用程序主窗口的 指针? 5 (2) 确定应用程序的路径 6 (3) 如何在程序获得其他程序的 图标? 6 (4) 获得各种目录信息 7 (5) 如何自定义消息 8 (6) 如何改变窗口的图标? 8 (7) 如何改变窗口的缺省风格? 8 (8) 如何将窗口居显示? 9 (9) 如何让窗口和 MDI窗口一启动就最大化和最小化? 10 (10) 如何限制窗口的大小? 10 (11) 如何使窗口不可见? 10 (12) 如何创建一个字回绕的CEditView 10 (13) 如何使程序保持极小状态? 11 (14) 移动窗口 11 (15) 通用控件的显示窗口 12 (16) 重置窗口的大小 12 (17) 如何单击除了窗口标题栏以外的区域使窗口移动 12 (18) 如何改变视窗的背景颜色 14 (19) 如何改变窗口标题 15 (20) 如何防止主框窗口在其说明显示活动的文档名 17 (21) 如何获取有关窗口正在处理的当前消息的信息 17 (22) 如何在代码获取工具条和状态条的指针 18 (23) 如何使能和禁止工具条的工具提示 18 (24) 如何创建一个不规则形状的窗口 19 (25) 如何获取应用程序的 实例句柄? 23 (26) 如何编程结束应用程序? 23 (27) 如何创建和使用无模式对话框 24 (28) 如何防止主框窗口在其说明显示活动的文档名 26 (29) 如何在代码获取工具条和状态条的指针 27 (30) 怎样加载其他的应用程序? 27 (31) 如何在代码获取工具条和状态条的指针 28 (33) 如何设置工具条标题 29 (34) 如何使窗口始终在最前方? 30 (35) 如何在对话框显示一个位图 30 (36) 如何改变对话或窗体视窗的背景颜色 30 (37) 如何获取一个对话控件的指针 32 (38) 如何禁止和使能控件 33 (39) 如何改变控件的字体 33 (40) 如何在OLE控件使用OLE_COLOR数据类型 35 (41) 在不使用通用文件打开对话的情况下如何显示一个文件列表 35 (42) 为什么旋转按钮控件看起来倒转 36 (43) 为什么旋转按钮控件不能自动地更新它下面的编辑控件 37 (44) 如何用位图显示下压按钮 37 (45) 如何一个创建三态下压按钮 38 (46) 如何动态创建控件 38 (47) 如何限制编辑框的准许字符 38 (48) 如何改变控件的颜色 40 (49) 当向列表框添加多个项时如何防止闪烁 43 (50) 如何向编辑控件添加文本 43 (51) 如何访问预定义的GDI对象 44 (52) 如何获取GDI对象的属性信息 45 (53) 如何实现一个橡皮区矩形 46 (54) 如何更新翻转背景颜色的文本 49 (55) 如何创建一个具有特定点大小的字体 50 (56) 如何计算一个串的大小 51 (57) 如何显示旋转文本 52 (58) 如何正确显示包含标签字符的串 54 (59) 如何快速地格式化一个CString对象 55 (60) 串太长时如何在其末尾显示一个省略号 55 (61) 为什么即使调用EnableMenuItem菜单项后,菜单项还处于禁止状态 56 (62) 如何给系统菜单添加一个菜单项 56 (63) 如何确定顶层菜单所占据的菜单行数 58 (64) 在用户环境如何确定系统显示元素的颜色 59 (65) 如何查询和设置系统参数 59 (66) 如何确定当前屏幕分辨率 60 (67) 如何使用一个预定义的Windows光标 60 (68) 如何检索原先的Task Manager应用程序使用的任务列表 61 (70) 在哪儿创建临文件 63 (71) 我怎样才能建立一个等待光标? 64 (73) 如何访问桌面窗口 65 (74) 什么是COLORREF? 我该怎样用它? 66 (75) AppWizard所产生的STDAFX文件是干什么用的? 66 (76) 我在我的程序是了CDWordArray。我向它添加了约10,000个整数,这使得它变得非常非常慢。为什么会这么糟? 67 (77) 我该如何改变MDI框架窗口的子窗口的大小以使在窗口以一定的大小打开? 67 (78) 在我的程序的某些部分,我可以调用 MessageBox 函数来建立一个信息对话框,例如在视类。 67 (79) 我需要在我的程序设置全局变量,以使文档的所有类都能访问。我应该吧它放到哪儿? 68 (80) 我听说MFC可以发现内存漏洞,我怎样使用该特性? 68 (81) 我怎样才能在我的应用程序循环浏览已经打开的文档? 68 (82)才能在我的应用程序循环浏览已经打开的视? 68 (83)数PreCreateWindow是干什么用的? 69 (84)该怎样防止MFC在窗口标题栏上把文档名预置成应用程序名? 69 (85) 我应该怎样防止MFC在窗口标题栏上添加文档名? 69 (86)我应该如何改变视窗口的大小? 69 (87)我有一无模式对话框。我怎样才能在窗口退出时删除CDialog对象? 69 (88)为什么把“delete this”放在PostNcDestroy而不是OnNcDestroy? 69 (89) File菜单的MRU列表是从哪儿来的?列表的名字放在哪儿了?我怎样才能改变列表项目的最大值? 70 (90) 我在菜单添加了新的项。但是,当我选该项时,在状态栏上没有出现任何提示信息。为什么? 70 (91) 我怎样才能在应用程序的缺省系统菜单加上一些东西? 70 (92) 我建立了一个对话框。但是当我显示该对话框时,第一个编辑框总是不能获得焦点,我必须单击它来使它获得焦点。我怎样才能使第一个编辑框在对话框打开时就获得焦点? 71 (93) 我怎样才能使一个窗口具有“always on top”特性? 71 (94) 我要为我的form view添加文档模板。我先建立了对话框模板,然后使用ClassWizard建立了基于CFormView的新类,它也是从CDocument继承来的。我还建立了相应的资源并在InitInstance添加了新的文档模板。但是,当我试图运行该程序时,出现了Assertion信息。为什么? 71 (95) 我在一对话框有一列表框,我需要tabbed列表框的项目。但是,当我处理含有tab字符(用AddString添加的)的列表项时,tab被显示成小黑块而没有展开。哪儿出错了? 72 (96) 我建立了一个应用程序,并使用了CRecordset类。但是,当我运行该程序时,它试图要访问数据库,并给出“Internal Application Error”对话框。我应该怎样做? 72 (97) 我用ClassWizard建立了一个类。但是,我把名字取错了,我想把它从项目删除,应该如何做? 73 (98) 当我打开应用程序的窗口时,我要传递该窗口的矩形尺寸。该矩形指定了窗口的外围大小,但是当我调用GetClientRect时,所得到的尺寸要比所希望的值要小(因为工具栏和窗口边框的缘故)。有其它方法来计算窗口的尺寸吗? 73 (99) 我在文档类设置了一个整型变量。但是,当我试图把该变量写入Serialize函数的archive文件时,出现了类型错误。而文档的其它变量没有问题。为什么? 73 (100) 如何控制菜单的大小? 74 (101) 改变LVIS_SELECTED的状态颜色? 75 (102) 如何只存储文档的某一部分? 76 (103) 保存工具条菜单有bug吗? 76 (104) Tip of the day的bug 76 (105) 如何可以让我的程序可以显示在其它的窗口上面? 77 (106) 如何控制窗口框架的最大最小尺寸? 79 (107) 如何改变窗口框架的颜色? 81 (108) 如何将应用程序窗口置于屏幕正? 82 (1)当文档被修改时,如何在标题上加上标志'*'? 82 (2)VC6.0对VC5.0的兼容性? 83 (3)打印和打印机的问题? 83 (4)CRichEditCtrl滚动条的问题? 84 (5)从数据库读大于32k的内容? 84 (6)如何获得CRichEditCtrl字符的位置? 86 (7)如何限制mdi子框架最大化时的大小? 86 (8)如何切换视口而不破坏它们? 87 (9)改变列表控制时发生闪烁现象? 91 (10)处理列表控件可见项的问题? 91 (11)产生线程的问题? 91 (12)CFile使用了缓冲区吗? 94 (13)DAO的密码? 94 (15)视口的不活动性如何处理? 96 (16)如何使用COleClientItem的IDispatch接口? 97 (17)关于用户自定义消息使用? 98 (18)在打开一个文档时退出? 99 (19)在CListCtrl控件多选择项的删除? 99 (20)工作线程的登录状态? 99 (21)如何增加视图ActiveX控件的事件处理函数? 101 (22)如何创建一个动态的Tree控件? 102 (23)SDI程序开始时不打开文档? 102 (24)List控件整栏选择? 103 (25)如何重载MRU文件? 104 (26)CImageList控件图象橙色被显示为黄色? 106 (27)无法正确改变应用程序的图标? 110 (28)工具条状态的问题? 110 (29)在SDI应用程序使用Active控件? 112 (30)有RichEdit控件的对话框无法正常显示? 112 (31)DLL的模板成员函数? 112 (32)CFormView的上下文帮助? 114 (33)CArchive类的WriteObject函数问题? 115 (34)RegisterWindowMessage的BroadcastSystemMessage如何处理? 115 (35)CListCtrl选择变化时如何获得通知? 117 (36)如何向ATL-COM对象传送一个数组? 118 (37)如何选择CTreeCtrl的节点文本进行编辑? 119 (38)如何改变默认的光标形状? 120 (39)如何用键盘滚动分割的视口? 121 (40)如何在线程处理状态条? 123 (41)如何阻止WINDOWS关闭? 124 (42)如何使一个按钮Disable? 124 (43)怎样从MFC扩展动态链结库(DLL)显示一个对话框? 125 (44)想隐藏用户界面怎么办? 127 (45)如何实现SDI与MDI的转换? 128 (46) CDC的竖排文本? 130 (47)如何激活变灰的弹出菜单? 131 (48)线程消息? 132 (49)TreeCtrl控制的显示速度太慢? 133 (50)关于工具条? 135 (51)关于线程消息? 136 (52)关于控件的焦点? 136 (53)如何捕获键盘按键? 138 (54)怎样实现3D效果? 138 (55)怎样建立客户CSocket? 138 (56)Disable一个非模态对话框的客户区? 140 (57)关于使用SetClassLong和SetCapture问题 140 (58)动画控件? 142 (59)错误声明的消息? 143 (59)怎样模拟鼠标动作? 144 (60)改变对话框标题字体? 145 (61)怎样知道CWinThread对象的状态? 146 (62)如何调整控件对话框条的大小? 146 (63)如何顶端显示CStatic类文字? 147 (64)消息句柄出了什么事? 147 (65)树形控件为何闪烁? 148 (66)怎样才能关闭树形控件的滚动条? 149 (67)如何建立一个带滚动条的窗口? 149 (68)如何实现对话框的拖放? 150 (69)TrackMouseEvent()怎么了 151 (70)奇怪的组合框控件 152 (71)关于使用MS SANS SERIF字体 152 (72)为什么DLL在字符串表找不到字符串 157 (73)关于复选框的文本颜色 158 (74)系列化与版本的问题 159 (75)在一个控件内检测并使用ON_COMMAND消息 162 (76)为何MDI程序有子窗口打开时主应用程序不能关. 163 (77)滚动视LPtoDP失败 165 (78)ODBC许可问题 166 (79)怪异的字体 167 (80)自画列表框样例 170 (81)CWnd::GetMenu()的问题 173 (82)用MFC制作弹出窗口 174 (83)怎样取消一个弹出式菜单 175
什么是SWFUpload?   SWFUpload是一个客户端文件上传工具,最初由Vinterwebb.se开发,它通过整合Flash与JavaScript技术为WEB开发者提供了一个具有丰富功能继而超越传统标签的文件上传模式。 [编辑本段]SWFUpload的主要特点   * 可以同时上传多个文件;   * 类似AJAX的无刷新上传;   * 可以显示上传进度;   * 良好的浏览器兼容性;   * 兼容其他JavaScript库 (例如:jQuery, Prototype等);   * 支持Flash 8和Flash 9;   SWFUpload不同于其他基于Flash构建的上传工具,它有着优雅的代码设计,开发者可以利用XHTML、CSS和JavaScript来随心所欲的定制它在浏览器下的外观;它还提供了一组简明的JavaScript事件,借助它们开发者可以方便的在文件上传过程更新页面内容来营造各种动态效果。   在使用SWFUpload之前,请确认你具备一定的JavaScript和DOM知识。在实际开发,大部分的错误都是由于错误的设置和低劣的Event Handlers处理程序所造成的。 [编辑本段]文档文翻译   http://www.v-sky.com/doc/swfupload/v2.1.0/Documentation.html [编辑本段]效果演示   * Classic Form Demo http://demo.swfupload.org/formsdemo ;   * Features Demo http://demo.swfupload.org/featuresdemo ;   * Application Demo http://demo.swfupload.org/applicationdemo ;   * v1.0.2 Plugin Demo http://demo.swfupload.org/v102demo ; [编辑本段]选择合适的Flash控件   在发行包(SWFUpload v2)含有2个版本的Flash控件(swfupload_f8.swf 与wfupload_f9.swf),其第一个版本拥有最佳的兼容性,但是为此损失了部分功能;而第二个版本提供了一些附加的功能但是损失了兼容性。 [编辑本段]SWFUpload的初始化与配置   首先,在页面引用SWFUpload.js ,如      然后,初始化SWFUpload ,如   var swfu;   window.onload = function () {   swfu = new SWFUpload({   upload_url : "http://www.swfupload.org/upload.php",   flash_url : "http://www.swfupload.org/swfupload_f9.swf", file_size_limit : "20480"   });   };   以下是一个标准的SWFUpload初始化设置所需的参数,你可以根据需要自己进行删减:   {   upload_url : "http://www.swfupload.org/upload.php", 处理上传请求的服务器端脚本URL   file_post_name : "Filedata", 是POST过去的$_FILES的数组名   post_params : {   "post_param_name_1" : "post_param_value_1",   "post_param_name_2" : "post_param_value_2",   "post_param_name_n" : "post_param_value_n"   },   file_types : "*.jpg;*.gif", 允许上传的文件类型   file_types_description: "Web Image Files", 文件类型描述   file_size_limit : "1024", 上传文件体积上限,单位MB   file_upload_limit : 10, 限定用户一次性最多上传多少个文件,在上传过程,该数字会累加,如果设置为“0”,则表示没有限制   file_queue_limit : 2, 上传队列数量限制,该项通常不需设置,会根据file_upload_limit自动赋值   fl
写在前面的话 引言 1. 前提 2. Java的学习 3. 目标 4. 联机文档 5. 章节 6. 练习 7. 多媒体 8. 源代码 9. 编码样式 10. Java版本 11. 课程和培训 12. 错误 13. 封面设计 14. 致谢 第1章 对象入门 1.1 抽象的进步 1.2 对象的接口 1.3 实现方案的隐藏 1.4 方案的重复使用 1.5 继承:重新使用接口 1.5.1 改善基础类 1.5.2 等价和类似关系 1.6 多形对象的互换使用 1.6.1 动态绑定 1.6.2 抽象的基础类和接口 1.7 对象的创建和存在时间 1.7.1 集合与继承器 1.7.2 单根结构 1.7.3 集合库与方便使用集合 1.7.4 清除时的困境:由谁负责清除? 1.8 违例控制:解决错误 1.9 多线程 1.10 永久性 1.11 Java和因特网 1.11.1 什么是Web? 1.11.2 客户端编程 1.11.3 服务器端编程 1.11.4 一个独立的领域:应用程序 1.12 分析和设计 1.12.1 不要迷失 1.12.2 阶段0:拟出一个计划 1.12.3 阶段1:要制作什么? 1.12.4 阶段2:开始构建? 1.12.5 阶段3:正式创建 1.12.6 阶段4:校订 1.12.7 计划的回报 1.13 Java还是C++? 第2章 一切都是对象 2.1 用句柄操纵对象 2.2 必须创建所有对象 2.2.1 保存在什么地方 2.2.2 特殊情况:主类型 2.2.3 Java的数组 2.3 绝对不要清除对象 2.3.1 作用域 2.3.2 对象的作用域 2.4 新建数据类型:类 2.4.1 字段和方法 2.5 方法、自变量和返回值 2.5.1 自变量列表 2.6 构建Java程序 2.6.1 名字的可见性 2.6.2 使用其他组件 2.6.3 static关键字 2.7 我们的第一个Java程序 2.8 注释和嵌入文档 2.8.1 注释文档 2.8.2 具体语法 2.8.3 嵌入 2.8.4 @see:引用其他类 2.8.5 类文档标记 2.8.6 变量文档标记 2.8.7 方法文档标记 2.8.8 文档示例 2.9 编码样式 2.10 总结 2.11 练习 第3章 控制程序流程 3.1 使用Java运算符 3.1.1 优先级 3.1.2 赋值 3.1.3 算术运算符 3.1.4 自动递增和递减 3.1.5 关系运算符 3.1.6 逻辑运算符 3.1.7 按位运算符 3.1.8 移位运算符 3.1.9 三元if-else运算符 3.1.10 逗号运算符 3.1.11 字串运算符 3.1.12 运算符常规操作规则 3.1.13 造型运算符 3.1.14 Java没有“sizeof” 3.1.15 复习计算顺序 3.1.16 运算符总结 3.2 执行控制 3.2.1 真和假 3.2.3 反复 3.2.6 断和继续 3.2.7 切换 3.3 总结 3.4 练习 第4章 初始化和清除 4.1 由构建器保证初始化 4.2 方法过载 4.2.1 区分过载方法 4.2.2 主类型的过载 4.2.3 返回值过载 4.2.4 默认构建器 4.2.5 this关键字 4.3 清除:收尾和垃圾收集 4.3.1 finalize()用途何在 4.3.2 必须执行清除 4.4 成员初始化 4.4.1 规定初始化 4.4.2 构建器初始化 4.5 数组初始化 4.5.1 多维数组 4.6 总结 4.7 练习 第5章 隐藏实施过程 5.1 包:库单元 5.1.1 创建独一无二的包名 5.1.2 自定义工具库 5.1.3 利用导入改变行为 5.1.4 包的停用 5.2 Java访问指示符 5.2.1 “友好的” 5.2.2 public:接口访问 5.2.3 private:不能接触 5.2.4 protected:“友好的一种” 5.3 接口与实现 5.4 类访问 5.5 总结 5.6 练习 第6章 类再生 6.1 合成的语法 6.2 继承的语法 6.2.1 初始化基础类 6.3 合成与继承的结合 6.3.1 确保正确的清除 6.3.2 名字的隐藏 6.4 到底选择合成还是继承 6.6 递增开发 6.7 上溯造型 6.7.1 何谓“上溯造型”? 6.8 final关键字 6.8.1 final数据 6.8.2 final方法 6.8.3 final类 6.8.4 final的注意事项 6.9 初始化和类装载 6.9.1 继承初始化 6.10 总结 6.11 练习 第7章 多形性 7.1 上溯造型 7.1.1 为什么要上溯造型 7.2 深入理解 7.2.1 方法调用的绑定 7.2.2 产生正确的行为 7.2.3 扩展性 7.3 覆盖与过载 7.4 抽象类和

16,472

社区成员

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

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

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