I have developed a tabbed gui.I need to do some operations when
the CLOSE button in the GUI is issued.I have removed OK and CANCEL buttons as I have no use with them.
Can anyone please help me where can I include my code so that I can execute it when the user tries to close the GUI using the CLOSE button in the GUI 's SYSTEM MENU.
Here is the main file of the GUI.

#include "stdafx.h"
#include "Tab.h"
#include "RSI_S2W.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif


// CTabApp

BEGIN_MESSAGE_MAP(CTabApp, CWinApp)
	ON_COMMAND(ID_HELP, CWinApp::OnHelp)
END_MESSAGE_MAP()


// CTabApp construction

CTabApp::CTabApp()
{
	// TODO: add construction code here,
	// Place all significant initialization in InitInstance
}


// The one and only CTabApp object

CTabApp theApp;


// CTabApp initialization

BOOL CTabApp::InitInstance()
{
	// InitCommonControls() is required on Windows XP if an application
	// manifest specifies use of ComCtl32.dll version 6 or later to enable
	// visual styles.  Otherwise, any window creation will fail.
	InitCommonControls();

	CWinApp::InitInstance();

	AfxEnableControlContainer();


	CTabDlg dlg;
	m_pMainWnd = &dlg;
	INT_PTR nResponse = dlg.DoModal();
	if (nResponse == IDOK)
	{
		// TODO: Place code here to handle when the dialog is
		//  dismissed with OK
	}
	else if (nResponse == IDCANCEL)
	{
		// TODO: Place code here to handle when the dialog is
		//  dismissed with Cancel
	}
    
	// Since the dialog has been closed, return FALSE so that we exit the
	//  application, rather than start the application's message pump.
	return FALSE;
}

Recommended Answers

All 4 Replies

You will have to catch the WM_CLOSE event. Sorry, but I don't recall exactly which event handler you need to put that in.

Do you have dialog header file?..

class "dialog":public CDialog
{
   //...
   protected:
   // add this..
   afx_msg void OnClose();
};

// dialog cpp
BEGIN_MESSAGE_MAP("dialog",CDialog)
   //...
   ON_WM_CLOSE()
END_MESSAGE_MAP()

void "dialog"::OnClose()
{
   //TODO: Place your code here to handle when the dialog is closed
}

Thanks for your help.I have placed the code as suggested by you.

I have the following error.Some problem with a type cast.

error C2440: 'static_cast' : cannot convert from 'void (__thiscall CTabApp::* )(void)' to 'void (__thiscall CWnd::* )(void)'
None of the functions with this name in scope match the target type

my cpp file

/ CTabApp
/*
BEGIN_MESSAGE_MAP(CTabApp, CWinApp)
	ON_COMMAND(ID_HELP, CWinApp::OnHelp)
END_MESSAGE_MAP()
*/


// dialog cpp
BEGIN_MESSAGE_MAP(CTabApp,CWinApp)
   
  ON_WM_CLOSE()
END_MESSAGE_MAP()

void CTabApp::OnClose()
{
	printf("Application Closed\n");
   //TODO: Place your code here to handle when the dialog is closed
}

// CTabApp construction

CTabApp::CTabApp()
{
	// TODO: add construction code here,
	// Place all significant initialization in InitInstance
}


// The one and only CTabApp object

CTabApp theApp;


// CTabApp initialization

BOOL CTabApp::InitInstance()
{
	// InitCommonControls() is required on Windows XP if an application
	// manifest specifies use of ComCtl32.dll version 6 or later to enable
	// visual styles.  Otherwise, any window creation will fail.
	InitCommonControls();

	CWinApp::InitInstance();

	AfxEnableControlContainer();


	CTabDlg dlg;
	m_pMainWnd = &dlg;
	INT_PTR nResponse = dlg.DoModal();
	if (nResponse == IDOK)
	{
		// TODO: Place code here to handle when the dialog is
		//  dismissed with OK
	}
	else if (nResponse == IDCANCEL)
	{
		// TODO: Place code here to handle when the dialog is
		//  dismissed with Cancel
	}
    
	// Since the dialog has been closed, return FALSE so that we exit the
	//  application, rather than start the application's message pump.
	return FALSE;
}

can you please help me in this aspect.

Place them in the dialog header n source file..not in the main header file..
->printf..what for..

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.