为什么我在这个地方调用模态对话框会出错?
jnhzp 2008-03-28 02:53:39 // 游戏管理Dlg.cpp : 实现文件
//
#include "stdafx.h"
#include "游戏管理.h"
#include "游戏管理Dlg.h"
#include "DiaPass.h"
#include "DianKa.h"
#include ".\游戏管理dlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// CMyDlg 对话框
CMyDlg::CMyDlg(CWnd* pParent /*=NULL*/)
: CDialog(CMyDlg::IDD, pParent)
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);CMyDlg::OnModal();//这里能调用成功
}
void CMyDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_LIST1, m_List);
DDX_Control(pDX, IDC_LIST3, m_list3);
}
BEGIN_MESSAGE_MAP(CMyDlg, CDialog)
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
// CMyDlg 消息处理程序
BOOL CMyDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
// 执行此操作
SetIcon(m_hIcon, TRUE); // 设置大图标
SetIcon(m_hIcon, FALSE); // 设置小图标
// TODO: 在此添加额外的初始化代码
m_Imagelist.Create(32,32,ILC_COLOR24|ILC_MASK,0,1);
m_List.AddButton("用户资料查询修改",500);
m_List.AddButton("加盟商点卡管理",501);
m_List.AddButton("加盟商可收益财务报表",502);
m_List.AddButton("加盟商抽水明细",503);
m_List.AddButton("游戏记录查寻",504);
//设置回调函数
m_List.pItemDlbFun = OnItemDouble;
//向指定按钮添加关联的视图项
for (int i=0;i<8;i++)
{
m_Imagelist.Add(AfxGetApp()->LoadIcon(IDI_ICON1+i));
}
m_List.SetImageLists(&m_Imagelist);
CString str;
str = "用户资料";
m_List.AddButtonItems(0,str);
str = "用户状态";
m_List.AddButtonItems(0,str);
str = "点卡生成";
m_List.AddButtonItems(1,str);
str = "点卡管理";
m_List.AddButtonItems(1,str);
str = "充值记录";
m_List.AddButtonItems(1,str);
str = "财务报表";
m_List.AddButtonItems(2,str);
str = "抽水明细";
m_List.AddButtonItems(3,str);
str = "记录查询";
m_List.AddButtonItems(4,str);
CString Field[6]={"ID","帐号","密码","面值","充值状态","充值日期"}; //列表视的表头
for(int j=0;j<6;j++)
{
m_list3.InsertColumn(j,Field[j],LVCFMT_LEFT,85); //插入表头标题
}
DWORD dwStyle = m_list3.GetExtendedStyle();
dwStyle |= LVS_EX_FULLROWSELECT;//选中某行使整行高亮(只适用与report风格的listctrl)
dwStyle |= LVS_EX_GRIDLINES;//网格线(只适用与report风格的listctrl)
dwStyle |= LVS_EX_CHECKBOXES;//item前生成checkbox控件
m_list3.SetExtendedStyle(dwStyle); //设置扩展风格
return TRUE; // 除非设置了控件的焦点,否则返回 TRUE
}
// 如果向对话框添加最小化按钮,则需要下面的代码
// 来绘制该图标。对于使用文档/视图模型的 MFC 应用程序,
// 这将由框架自动完成。
void CMyDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // 用于绘制的设备上下文
SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
// 使图标在工作矩形中居中
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 CMyDlg::OnQueryDragIcon()
{
return static_cast<HCURSOR>(m_hIcon);
}
void CMyDlg::OnModal()
{
DiaPass dlg;
dlg.DoModal();
}
void CMyDlg::OnItemDouble(const CListCtrl *pListCtrl, int nIndex)
{
if (pListCtrl)
{
if (nIndex != -1)
{
CString str = pListCtrl->GetItemText(nIndex,0);
if(str=="点卡生成")
{
CDianKa dlg;//////dlg.DoModal();/////
能调用成功,但在点击确定获是取消时出错!
}
}
}
}
错误提示如下:
Debug Assertion Failed!
Program:...ents and Settings\guanxin01\桌面\游戏管理\Debug\游戏管理.exe
File:wincore.cpp
Line:880
For information on how your proram can cause an assertion
failure,see the Visual C++ documentation on asserts.
(Press Retry to debug the application)
不过在Release版里可以,为什么?请哪位高手指点一下???