模态对话框,点击右上角的X按钮关闭不了窗口么?

时间:2022-07-10 23:51:26
我点击那个X关闭对话框,可是怎么都关不了,
只能通过CDialog::OnOK()或者CDialog::OnCancel()来关闭,这样子正常么?

6 个解决方案

#1


你是不是做了什么处理啊!

#2


模态对话框,点击右上角的X按钮关闭不了窗口么?在pretranslatemessage里面!

#3


引用 2 楼 sha_jinhao 的回复:
在pretranslatemessage里面!


我没有这个函数,必须得加上是么?

我只有这些:
virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持
virtual BOOL OnInitDialog();
virtual void OnOK();
virtual void OnCancel();

afx_msg void OnPaint();

#4


没说你要加

我以为你有呢

不知道你在那里处理了!

#5


代码:

// Summary.cpp : 实现文件
//

#include "stdafx.h"
#include "MuhonEditor.h"
#include "NewDlg.h"



// CNewDlg 对话框

IMPLEMENT_DYNAMIC(CNewDlg, CDialog)

BEGIN_MESSAGE_MAP(CNewDlg, CDialog)
ON_WM_PAINT()
END_MESSAGE_MAP()


CNewDlg::CNewDlg(CWnd* pParent /*=NULL*/)
: CDialog(IDD_DLG_NEW, pParent)
{
}

CNewDlg::~CNewDlg()
{
}

void CNewDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
}


// CNewDlg 消息处理程序

BOOL CNewDlg::OnInitDialog()
{
CDialog::OnInitDialog();

SetWindowPos(NULL, 0, 0, 460, 230, SWP_NOMOVE);

return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
}

void CNewDlg::OnOK()
{
// CDialog::OnOK();
}

void CNewDlg::OnCancel()
{
// CDialog::OnCancel();
}

void CNewDlg::OnPaint()
{
CDialog::OnPaint();
}

#6


知道问题出在哪了,

我这个对话框有这么一些控件定义:

enum
{
CTLID_NONE = 0,

CTLID_COMBOBOX_FORMAT,
CTLID_CHECK_BUILDING,
CTLID_CHECK_ALPHA,
CTLID_BTN_SELECT_TERRAIN_FILE_PATH,
CTLID_BTN_SELECT_DST_FILE_PATH,
CTLID_BTN_CONFIRM,
CTLID_BTN_CANCEL,
};


当我把起始值改成1000的时候,窗口就能正常关闭了,
所以,我猜,可能是我定义的控件ID,和关闭按钮的控件ID有冲突

#1


你是不是做了什么处理啊!

#2


模态对话框,点击右上角的X按钮关闭不了窗口么?在pretranslatemessage里面!

#3


引用 2 楼 sha_jinhao 的回复:
在pretranslatemessage里面!


我没有这个函数,必须得加上是么?

我只有这些:
virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持
virtual BOOL OnInitDialog();
virtual void OnOK();
virtual void OnCancel();

afx_msg void OnPaint();

#4


没说你要加

我以为你有呢

不知道你在那里处理了!

#5


代码:

// Summary.cpp : 实现文件
//

#include "stdafx.h"
#include "MuhonEditor.h"
#include "NewDlg.h"



// CNewDlg 对话框

IMPLEMENT_DYNAMIC(CNewDlg, CDialog)

BEGIN_MESSAGE_MAP(CNewDlg, CDialog)
ON_WM_PAINT()
END_MESSAGE_MAP()


CNewDlg::CNewDlg(CWnd* pParent /*=NULL*/)
: CDialog(IDD_DLG_NEW, pParent)
{
}

CNewDlg::~CNewDlg()
{
}

void CNewDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
}


// CNewDlg 消息处理程序

BOOL CNewDlg::OnInitDialog()
{
CDialog::OnInitDialog();

SetWindowPos(NULL, 0, 0, 460, 230, SWP_NOMOVE);

return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
}

void CNewDlg::OnOK()
{
// CDialog::OnOK();
}

void CNewDlg::OnCancel()
{
// CDialog::OnCancel();
}

void CNewDlg::OnPaint()
{
CDialog::OnPaint();
}

#6


知道问题出在哪了,

我这个对话框有这么一些控件定义:

enum
{
CTLID_NONE = 0,

CTLID_COMBOBOX_FORMAT,
CTLID_CHECK_BUILDING,
CTLID_CHECK_ALPHA,
CTLID_BTN_SELECT_TERRAIN_FILE_PATH,
CTLID_BTN_SELECT_DST_FILE_PATH,
CTLID_BTN_CONFIRM,
CTLID_BTN_CANCEL,
};


当我把起始值改成1000的时候,窗口就能正常关闭了,
所以,我猜,可能是我定义的控件ID,和关闭按钮的控件ID有冲突