一个mfc的小问题,多谢
在app中子程如下
void CSaverIIIApp:howScreenSaver()
{
CSaverWnd* pWnd;
int i;
if (m_pwnd == NULL){
return;
}
//EnumDisplayMonitors(NULL, NULL, MonitorEnumProc, 0);
for (i = 0; i < m_wndcnt; i ++) {
pWnd = (CSaverWnd*)m_pwnd[i];
pWnd->Create(MyRect[i], this);
}
m_pMainWnd = m_pwnd[0];
}
CSaverWnd是我添加的类,其中Create为:
BOOL CSaverWnd::Create(CRect rect, CWinApp * pApp)
我想在Dlg中调用,可是this总为null
该如何改?感激不尽!!!!!!!!!!!!!!!!
问题点数:30、回复次数:13Top
1 楼lzj_freedom(我的儿子:http://blog.sina.com.cn/leo0919#album)回复于 2002-01-29 16:44:10 得分 0
拜托各位了。。。。Top
2 楼missingland(夜雨)回复于 2002-01-29 17:37:25 得分 6
检查一下是否include了 APP类(因为程序在APP类中申明了全局对象)Top
3 楼lzj_freedom(我的儿子:http://blog.sina.com.cn/leo0919#album)回复于 2002-01-29 18:10:44 得分 0
已经include的了
编译都通过了Top
4 楼lzj_freedom(我的儿子:http://blog.sina.com.cn/leo0919#album)回复于 2002-01-29 18:12:43 得分 0
已经include了
且编译都通过了,就是运行到for后面就报错了。
Top
5 楼River_H(小河)回复于 2002-01-29 18:29:22 得分 6
代码有问题, 你取得的是一个窗口的指针,然后将该指针强制转换为你要的装口指针,接着你又使用该指针调用创建函数,当然有问题了。因为该指针应该是已经创建过窗口的。你说呢??Top
6 楼zhakewei(天外有天)回复于 2002-01-29 18:31:44 得分 6
if (m_pwnd == NULL){
return;
}
else{
//EnumDisplayMonitors(NULL, NULL, MonitorEnumProc, 0);
for (i = 0; i < m_wndcnt; i ++) {
pWnd = (CSaverWnd*)m_pwnd[i];
pWnd->Create(MyRect[i], AfxGetApp());
}
m_pMainWnd = m_pwnd[0];
}
Top
7 楼freetalk(老菜鸟)回复于 2002-01-29 19:01:14 得分 6
这段代码在app中,有可能你在dlg还没创建前就调用了,你把这段代码放到dlg的类代码中Top
8 楼cpunion( int argc, char** argv )回复于 2002-01-29 19:13:39 得分 6
你这里的this指向App对象,而App对象并不派生自CWnd,所以不行
void CSaverIIIApp:howScreenSaver(CWnd* pParent)
{
CSaverWnd* pWnd;
int i;
if (m_pwnd == NULL){
return;
}
//EnumDisplayMonitors(NULL, NULL, MonitorEnumProc, 0);
for (i = 0; i < m_wndcnt; i ++) {
pWnd = (CSaverWnd*)m_pwnd[i];
pWnd->Create(MyRect[i], pParent);
}
m_pMainWnd = m_pwnd[0];
}
Top
9 楼cpunion( int argc, char** argv )回复于 2002-01-29 19:14:32 得分 0
然后在Dlg中调用时采用AfxGetApp()->howScreenSaver(this);就可以了Top
10 楼cpunion( int argc, char** argv )回复于 2002-01-29 19:19:03 得分 0
SORRY没看清你的问题
但怎么会出现这种总是呢?Top
11 楼lzj_freedom(我的儿子:http://blog.sina.com.cn/leo0919#album)回复于 2002-01-29 19:34:37 得分 0
先谢谢各位
this是app的指针,我在dlg里调用的是app中的函数,this就改变了吗?
Top
12 楼lzj_freedom(我的儿子:http://blog.sina.com.cn/leo0919#album)回复于 2002-01-30 11:58:47 得分 0
谢谢大家,我已经解决了。
放分。Top
13 楼kissfire(kissfire)回复于 2002-01-30 22:00:50 得分 0
signTop




