请问:Dialog的有析构函数吗? 有吗?如果没有,那什么Dialog结束时候必然调用的函数吗?谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 一对话框结束(不是隐藏),要用到destroy 肯定有,你ONCLOSE肯定调用,一般在这里DELETE你NEW的指针如下例:void CAppServerDlg::OnClose() { // TODO: Add your message handler code here and/or call default if( m_hCTIThreadHandle ) { TerminateThread(m_hCTIThreadHandle,0); } if( m_hCTIReceiveHandle ) { ::CloseHandle(m_hCTIReceiveHandle); } if( m_pInCeptQue ) { delete m_pInCeptQue; m_pInCeptQue = NULL; } if( m_pCTISocket ) { m_pCTISocket->Close(); delete m_pCTISocket; m_pCTISocket = NULL; } if(m_pCallListenSocket) { m_pCallListenSocket->Close(); delete m_pCallListenSocket; m_pCallListenSocket = NULL; } if(m_pListenSocket) { m_pListenSocket->Close(); delete m_pListenSocket; m_pListenSocket = NULL; } if(m_pCallSocket) { m_pCallSocket->Close(); delete m_pCallSocket; m_pCallSocket = NULL; } for (INT i = 0; i < MAX_SEAT_SUPPORT; i ++) { if (m_pClientSocket[i]) { m_pClientSocket[i]->Close(); delete m_pClientSocket[i]; //delete m_sSeatInBuffer[i]; } if (m_pSeatState[i]) { delete m_pSeatState[i]; m_pSeatState[i] = NULL; } } for(i=0; i<MAX_LEN; i++) { if(m_pCallContent[i]) { delete m_pCallContent[i]; m_pCallContent[i] = NULL; } } CDialog::OnClose();} windows窗口和c++对象你还没有分清楚。 to mscf(sophist):你的“对话框对象和C++的对话框对象是独立的“观点我不理解,请帮忙解释!也希望其他高手相助! 分成两类:一类是消息处理函数,包括OnDestroy()、PostNcDestroy、OnClose等,一类是虚函数,如DestroyWindow等。这些函数都是会被调用到的,只不过时间顺序不一样。 对话框作为Windows中的一种窗口,它有自己的子窗口如控件,用MFC写窗口应用就是用C++的类来存储窗口的信息和执行窗口过程,是用C++的类的对象来操作Windows窗口对象,所以C++对象和Windows对象不是同一实体,我是这么理解的,不知道准不准确。 CWnd wnd; //目前是个c++对象,还没有和任何窗口关联起来。if(!wnd.Create(...)) //创建了windows窗口,wnd对象和窗口关联起来了。{}wnd.Destory(); //wnd对象和 窗口分离开来。//窗口分离了,wnd对象还在。 当然有了,在classview中点右键,add virtual functions就行了 windows api socket怎么用不了啊 MFC下利用CStatic控件显示位图的问题 项目中的idl文件问题 一个关于文件读取的问题 CListCtrl中: 数据如何显示出来 像我这样搞底层研究的还有饭吃吗? 很 菜很菜的问题!!在线!!! 我在上动态的创建了几个STATIC,请问我如何给它们加BN_CLIECKED消息? 如何让Class Wizard认识外部添加的类? 我的问题,请大家帮帮忙,重重有赏 email收发程序编写请教 有什么方法保证只启动一个线程么?
如下例:
void CAppServerDlg::OnClose()
{
// TODO: Add your message handler code here and/or call default
if( m_hCTIThreadHandle )
{
TerminateThread(m_hCTIThreadHandle,0);
}
if( m_hCTIReceiveHandle )
{
::CloseHandle(m_hCTIReceiveHandle);
}
if( m_pInCeptQue )
{
delete m_pInCeptQue;
m_pInCeptQue = NULL;
}
if( m_pCTISocket )
{
m_pCTISocket->Close();
delete m_pCTISocket;
m_pCTISocket = NULL;
}
if(m_pCallListenSocket)
{
m_pCallListenSocket->Close();
delete m_pCallListenSocket;
m_pCallListenSocket = NULL;
}
if(m_pListenSocket)
{
m_pListenSocket->Close();
delete m_pListenSocket;
m_pListenSocket = NULL;
}
if(m_pCallSocket)
{
m_pCallSocket->Close();
delete m_pCallSocket;
m_pCallSocket = NULL;
} for (INT i = 0; i < MAX_SEAT_SUPPORT; i ++)
{
if (m_pClientSocket[i])
{
m_pClientSocket[i]->Close();
delete m_pClientSocket[i];
//delete m_sSeatInBuffer[i];
}
if (m_pSeatState[i])
{
delete m_pSeatState[i];
m_pSeatState[i] = NULL;
}
}
for(i=0; i<MAX_LEN; i++)
{
if(m_pCallContent[i])
{
delete m_pCallContent[i];
m_pCallContent[i] = NULL;
}
}
CDialog::OnClose();
}
你的“对话框对象和C++的对话框对象是独立的“观点
我不理解,请帮忙解释!
也希望其他高手相助!
分成两类:一类是消息处理函数,包括OnDestroy()、PostNcDestroy、OnClose等,一类是虚函数,如DestroyWindow等。这些函数都是会被调用到的,只不过时间顺序不一样。
{
}wnd.Destory(); //wnd对象和 窗口分离开来。//窗口分离了,wnd对象还在。