怎么样在全局函数中调用UpdateData(FALSE)?
新建一个基于对话框的应用程序,然后在Dialg类中定义一个全居函数,在全居函数中定一个自加的方法,每秒+1,在Dlg类中定义的编辑框与全局函数相关联,在全局函数中调用CM...
新建一个基于对话框的应用程序,然后在Dialg类中定义一个全居函数,在全居函数中定
一个自加的方法,每秒+1,在Dlg类中定义的编辑框与全局函数相关联,在全局函数中调用
CMy14MFC_6Dlg::UpdateData(FALSE);然后在对话框中的编辑控件中显示出来。可当在全局函数中
调用CMy14MFC_6Dlg::UpdateData(FALSE)显示错误。正确的方
法应该怎样调用呢?或者有其它什么方法?由于这个程序要用到Sleep(),所以采用的是多程序.
我是新手学VC,里面打错很多,没仔细检查,不好意思,是我说错了,是在类外定义的,多线程.不过问题我已经解觉了,用SendMessage给主窗口发送消息,然后在消息中用定义. 展开
一个自加的方法,每秒+1,在Dlg类中定义的编辑框与全局函数相关联,在全局函数中调用
CMy14MFC_6Dlg::UpdateData(FALSE);然后在对话框中的编辑控件中显示出来。可当在全局函数中
调用CMy14MFC_6Dlg::UpdateData(FALSE)显示错误。正确的方
法应该怎样调用呢?或者有其它什么方法?由于这个程序要用到Sleep(),所以采用的是多程序.
我是新手学VC,里面打错很多,没仔细检查,不好意思,是我说错了,是在类外定义的,多线程.不过问题我已经解觉了,用SendMessage给主窗口发送消息,然后在消息中用定义. 展开
展开全部
正如楼上所言,在Dialog类中定义一个全局函数,怎么定义的?
暂且不管你怎么定义的,先说这个UpdateData()。这个函数是
CWnd类的一个成员函数,不是一个静态函数,所以不能像你那样,用CMy14MFC_6Dlg::UpdateData(FALSE);这种方式调用。只有在类的内部调用(即类成员函数调用),或通过类的实例对象调用。
最后一句“由于这个程序要用到Sleep(),所以采用的是多程序.”也很难理解,我还是第一次听说“多程序”这个词。
暂且我就把它当成是多线程吧,你说你要用到 Sleep() 这个函数,我想你是想实现那个一秒自加一次的功能吧,你用一个循环,加一次,然后 Sleep 一秒,对吧。
其实这个功能可以,而且应该用 Timer实现。
暂且不管你怎么定义的,先说这个UpdateData()。这个函数是
CWnd类的一个成员函数,不是一个静态函数,所以不能像你那样,用CMy14MFC_6Dlg::UpdateData(FALSE);这种方式调用。只有在类的内部调用(即类成员函数调用),或通过类的实例对象调用。
最后一句“由于这个程序要用到Sleep(),所以采用的是多程序.”也很难理解,我还是第一次听说“多程序”这个词。
暂且我就把它当成是多线程吧,你说你要用到 Sleep() 这个函数,我想你是想实现那个一秒自加一次的功能吧,你用一个循环,加一次,然后 Sleep 一秒,对吧。
其实这个功能可以,而且应该用 Timer实现。
展开全部
嗯,他好象是搞语言开发的,新概念比较多,我掣,去搜搜多程序的概念!
CXXXDLG居然能::UPdateData这样调用,厉害,难道一个类只能有一个实力打开一个拥有同样数据的对话框,VC不可能将这函数写成静态的UPDATEDATA
你要想再外弄,得发MESSAGE自定义消息,让类里自己调用用ON_MESSAGE红设调用函数,想来你开发语言的不用那么复杂只要:
"多程序运行"
你的超级智能程序!
CXXXDLG居然能::UPdateData这样调用,厉害,难道一个类只能有一个实力打开一个拥有同样数据的对话框,VC不可能将这函数写成静态的UPDATEDATA
你要想再外弄,得发MESSAGE自定义消息,让类里自己调用用ON_MESSAGE红设调用函数,想来你开发语言的不用那么复杂只要:
"多程序运行"
你的超级智能程序!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用一个线程就行了
在创建线程时,把对话框的指针做为参数
在线程实现里面,把参数转为对话框指针,有了指针就可以调用了
///////////////
声明
public:
static DWORD WINAPI UpdateDataThread(LPVOID);///注意声明为static
定义
DWORD WINAPI CMy14MFC_6Dlg::UpdateDataThread(LPVOID lp){
CMy14MFC_6Dlg* dlg = (CMy14MFC_6Dlg*)lp;
while(true){
dlg->UpdateData(FALSE);
Sleep(1000);
}
return 0;
}
CMy14MFC_6Dlg::XXXXX(){///在某函数里面创建一个线程,关键是把this做为参数传进去
CreateThread(NULL,0,LPTHREAD_START_ROUINE(&CMy14MFC_6Dlg::UpdateDataThread),this,0,0);
}
//不好意思,本人不是高手,以上是凭脑写的,不知道有没有错误,请原谅
在创建线程时,把对话框的指针做为参数
在线程实现里面,把参数转为对话框指针,有了指针就可以调用了
///////////////
声明
public:
static DWORD WINAPI UpdateDataThread(LPVOID);///注意声明为static
定义
DWORD WINAPI CMy14MFC_6Dlg::UpdateDataThread(LPVOID lp){
CMy14MFC_6Dlg* dlg = (CMy14MFC_6Dlg*)lp;
while(true){
dlg->UpdateData(FALSE);
Sleep(1000);
}
return 0;
}
CMy14MFC_6Dlg::XXXXX(){///在某函数里面创建一个线程,关键是把this做为参数传进去
CreateThread(NULL,0,LPTHREAD_START_ROUINE(&CMy14MFC_6Dlg::UpdateDataThread),this,0,0);
}
//不好意思,本人不是高手,以上是凭脑写的,不知道有没有错误,请原谅
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在Dialg类中定义一个全居函数
这句话说得我一头雾水
这句话说得我一头雾水
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询