现在的位置: 首页 > 综合 > 正文

分割窗口后响应按钮消息是碰到问题了

2013年08月06日 ⁄ 综合 ⁄ 共 1535字 ⁄ 字号 评论关闭

分割窗口后响应按钮消息是碰到问题了。

我新建了一个C...FormView类,并实现了窗口的分割。然后我在新产生的Dialog资源上新添加一个按钮。
接下来我在C...FormView类中添加按钮消息并加入如下代码:
void C...FormView::OnButton1()
{
CFileDialog fileOpenDlg(TRUE,"bmp","*.bmp",NULL,"Bitmap Files(*.bmp)",NULL);
C...Doc doc, *pdoc;
pdoc = NULL;
int nRespond = fileOpenDlg.DoModal();
if(nRespond == IDOK)
{
CString filePath = fileOpenDlg.GetPathName();
(pdoc->m_pDib) = new CDib(filePath); //在Doc.h中定义了CDib* m_pDib;
if((pdoc->m_pDib)->IsValid())
doc.SetTitle(filePath);
else
doc.DeleteContents();
}
doc.UpdateAllViews(0);
}

当我程序写到这里时(图片此时还不能显示出来,我还没有在视类的OnDraw函数中添加代码)编译没有报错,在运行时点击按钮也显示打开对话框了,可是当我选择需要打开的.bmp图片打开时弹出:....exe碰到问题需要关闭。......
以前我写国类似的程序,不过在写到这里的时候编译和运行都不报错啊。
(我以前写过的类似的程序不是响应分割窗口中的按钮消息,而是响应主菜单中的一个按钮消息。所以以前我只要在在C...Doc类中添加响应菜单中的一个按钮消息代码和上面很像,只是不要加:C...Doc doc, *pdoc;就可以了。分割窗口后在C...Doc类中没有找到新添加的按钮消息,所以我只有在C...FormView类中添加了。)

请问各位大侠这是怎么回事啊??我要想实现我需要的功能该怎么办呢??

请各位大侠多多赐教,万分感谢!!!!!!!!

网友回复:C...Doc doc, *pdoc;
把这行改成:
C...Doc* doc = (C...Doc)GetDocument();
下面都用doc->来访问文档类成员。
网友回复:C...Doc doc, *pdoc;
pdoc = NULL;
int nRespond = fileOpenDlg.DoModal();
if(nRespond == IDOK)
{
CString filePath = fileOpenDlg.GetPathName();
(pdoc->m_pDib) = new CDib(filePath); //在Doc.h中定义了CDib* m_pDib;
if((pdoc->m_pDib)->IsValid())
doc.SetTitle(filePath);
else
doc.DeleteContents();
}
doc.UpdateAllViews(0);
}
====你这个pDoc根本就没有指向任何空间啊。不崩溃才怪
网友回复:按照楼上的意见我将
C...Doc doc, *pdoc;
把这行改成:
C...Doc* doc = (C...Doc)GetDocument();
后,可是碰到下面的错误:
error C2440: 'type cast' : cannot convert from 'class CDocument *' to 'class C...Doc'

这是为什么啊?我比较菜,请多多指教。
谢谢!
网友回复:C...Doc* doc = (C...Doc)GetDocument();
改成:
C...Doc* doc = (C...Doc*)GetDocument();
网友回复:对对对,我也刚刚发现少加了*.谢谢各位大侠帮忙!

抱歉!评论已关闭.