class COnline : public CDialog
{}
class CAutoSRSDlg : public CDialog
{
public:
COnline*pOnlineDlg;
}
void CAutoSRSDlg::OnStartBUTTON1()
{
if(!pOnlineDlg) 这行代码怎么解释?
{
pOnlineDlg=new COnline(this);
pOnlineDlg->Create(IDD_Online_DIALOG,this);
};
}
{}
class CAutoSRSDlg : public CDialog
{
public:
COnline*pOnlineDlg;
}
void CAutoSRSDlg::OnStartBUTTON1()
{
if(!pOnlineDlg) 这行代码怎么解释?
{
pOnlineDlg=new COnline(this);
pOnlineDlg->Create(IDD_Online_DIALOG,this);
};
}
解决方案 »
- vc2010插入webbrowser控件后如何调用?
- Button获得focus后触发什么事件?
- DrawText 和 TextOut,怪异问题
- 登陆遇到88888,散分提问:谁知道ScrollWindow的详细用法呀?主要是参数。英语的看不懂!
- 创建的fileDialog中的文字怎么改变?
- 在CSocket中如何设置超时
- 我想在进入程序和退出程序的时候,都能弹出一个验证权限的对话框,类似登陆窗口,需要密码.还可以改密码??该怎么做??
- Serialize的小错误,在线!!!解决立刻给分。
- 如何看懂别人写的例子,也不知道入门没有?
- 5个字节中存放着4个10位的数据,如何使用位域从中读取?
- WTL的CBitmapButton不支持tab效果???太遗憾了
- 带切分条的FrameWnd窗口的怎么样自绘制标题栏??困扰好多天了,项目在催,急需大家帮忙!!!
则取反为真,执行里面的代码,创建它
这不就是pOnlineDlg为空是才执行里面的语句吗?
如果 pOnlineDlg 不等于 NULL , 则!pOnlineDlg 就为 FALSE, 就不用给它 new 一块内存
反之 pOnlineDlg 等于 NULL, 则!pOnlineDlg 就为 TURE, 就需要给它 new 一块内存
不然的话,后面的调用pOnlineDlg->Create(IDD_Online_DIALOG,this);就是非法的
{
pOnlineDlg=new COnline(this);
pOnlineDlg->Create(IDD_Online_DIALOG,this);
};pOnlineDlg 应该在构造函数中有个初始化使得 pOnlineDlg == NULL
if(!pOnlineDlg) 解释是如果pOnlineDlg为空的话,则需要new一个对象,然后create一个窗口。主要的作用是防止重复创建同一个窗口。另外加!的目的是一般情况下NULL==0,所以上面语句相当于if(!0)这种写法不是很好,好的写法是if(NULL != pOnlineDlg)