初学MFC,有些专业用词可能不太准确,
看别人的代码,有一个类定义如下:class CMeasureView : public CFormView, 此类对应对话IDD_MEASUREVIEW2,
当点击此窗口的"x"关闭时,会产生什么消息?由哪个函数响应?类CMeasureView 的定义中并没发现OnClose()这样的函数
看别人的代码,有一个类定义如下:class CMeasureView : public CFormView, 此类对应对话IDD_MEASUREVIEW2,
当点击此窗口的"x"关闭时,会产生什么消息?由哪个函数响应?类CMeasureView 的定义中并没发现OnClose()这样的函数
WM_CLOSE OnClose();
DestoryWindow();
WM_DESTORY OnDestory();
WM_NCDESTORY OnNcDestory();
不知道有没有笔误
添加WM_CLOSE的响应函数
vc6以上在,CMeasureView属性->消息 里面找到WM_CLOSE,添加就有了
WM_DESTORY WM_NCDESTORY 同上DestoryWindow(), CMeasureView属性->重写 里面找到WM_DestoryWindow,添加就有了
还有,我问的不是如何添加,代码是已经能完整编译并可以运行了的,点击x号按钮关闭窗口,会调用哪个函数来处理 ?
代码贴在这了BEGIN_MESSAGE_MAP(CMeasureView, CFormView)
//{{AFX_MSG_MAP(CMeasureView)
ON_WM_SIZE()
ON_NOTIFY(TCN_SELCHANGE, IDC_VIEWTAB, OnSelchangeViewtab)
ON_BN_CLICKED(IDC_MEASURE, OnMeasure)
ON_BN_CLICKED(IDC_CLOSEWZ, OnClosewz)
ON_BN_CLICKED(IDC_INTERRUPT, OnInterrupt)
ON_WM_TIMER()
ON_BN_CLICKED(IDC_PRINTLASTRESULT, OnPrintlastresult)
ON_BN_CLICKED(IDC_EXITTEST, OnExittest)
ON_EN_CHANGE(IDC_SAMPLEID, OnChangeSampleid)
ON_BN_CLICKED(IDC_PROPORTION, OnProportion)
ON_BN_CLICKED(IDC_CURSPECTRUM, OnCurspectrum)
ON_BN_CLICKED(IDC_MIXCAL, OnMixcal)
ON_BN_CLICKED(IDC_SENDCOM, OnSendCom)
ON_BN_CLICKED(IDC_SENDTCP, OnSendTcp)
ON_WM_SIZE()
ON_EN_CHANGE(IDC_SAMPLEIDSURFIX, OnChangeSampleidsurfix)
ON_MESSAGE(NETWORK_EVET,OnNetEvent)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
还有,我问的不是如何添加,代码是已经能完整编译并可以运行了的,点击x号按钮关闭窗口,会调用哪个函数来处理 ?
代码贴在这了
==========
对于WM_CLOSE这种消息来说,是默认的一些消息,有一些默认动作是不会出现在消息映射里的。
当点击X时,窗口过程首先接收到WM_NCLBUTTONDOWN, WM_SYSCOMMAND等消息,通常交给默认处理程序::DefWindowProc处理。它向窗口过程发送WM_CLOSE消息,窗口过程如果不处理继续交给DefWindowProc处理,它会调用::DestroyWindow会做从屏幕上移除窗口等操作,然后依次向窗口及其子窗口/拥有窗口发送WM_DESTROY消息,然后再向窗口发送WM_NCDESTROY消息。
大致是这样一个过程。