几个简单小问题

wjcking 2011-12-22 10:56:33
1)有一个主窗体mainfrm,还有一个对话框mydialog,mfc编译之后先运行的是mainfrm,可我想只运行mydialog,不运行mainfrm该怎么操作?是不是修改afxwinmain函数?

2)除了用 getdlgitem(id)调用控件 还有什么别的办法啊?

3)我建立了一个列表框 listBox = (CListBox*)GetDlgItem(IDC_LIST_BOX); 这个东西用完以后不释放吗? 我用delete关键字释放后出现错误了,为什么 放在ONClose事件中也不行?

4) 在销毁指针变量时,有什么好建议?

我是搞C#的,用C++ mfc后觉得很蛋疼,不过速度却是了得,要速度就得多写点,多写点就得犯错误,犯错误就得请教各位老师,谢谢。请回答详细一些
...全文
64 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
jerry 2011-12-23
  • 打赏
  • 举报
回复
给你补充回答一下:

1)有一个主窗体mainfrm,还有一个对话框mydialog,mfc编译之后先运行的是mainfrm,可我想只运行mydialog,不运行mainfrm该怎么操作?是不是修改afxwinmain函数?

在InitApplication里, ParseCommandLine之后的代码删除, 加上:
CMyDlg dlg;

m_pMainWnd = &dlg;
INT_PTR nResponse = dlg.DoModal();

最简单的方式是生成一个对话框模式的程序. 你可以比较一下区别

2)除了用 getdlgitem(id)调用控件 还有什么别的办法啊?

可以在对话框类里将控件映射到控件变量, 直接用控件变量就可以操作
wuhanze 2011-12-22
  • 打赏
  • 举报
回复
BOOL CyourApp::InitInstance()//主窗口初始化
{
CMyDialog dlg;//你的mydialog窗口类对象
int nR = dlg.DoModal();
if (nR == IDOK)
{
OnOk();
return TRUE;
}
else if (nR == IDCANCEL)
{
LOnCancel();
return FALSE;
}
}
void CyourApp::OnOk()
{
    CSQLserverTestDlg dlg2;
    m_pMainWnd = &dlg2; //主窗口指针
    int nResponse = dlg2.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
//////////////////////////////////////////return FALSE;
}
}

我的大概思路是这样的 我也是初学 望交流
jerry 2011-12-22
  • 打赏
  • 举报
回复
不用怀疑,你可以注意一下,这个函数 返回的类型中 CTempWnd. 是MFC内部管理的临时对象,你不能删除它的. MFC会在一帧消息处理完成之后回收它,所以也不能把这个临时变量保存起来下次使用.
就是这样的.
jerry 2011-12-22
  • 打赏
  • 举报
回复
GetDlgItem 返回的指针不用删除,

就这样的.

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧