steven-lwh 2007-7-11 16:22
有关窗体的问题
我用CW9生成了一个Hello Word程序,其中有一个About的窗体,窗体中有一个OK按钮,我想修改该按钮,实现当我点击该按钮后跳到另一个Form中,我在AppHandleEvent中已经添加了About Form的事件处理(我看书上的例子写的,应该正确吧),也参考MainFormHandleEvent写了个处理,但不管我是用FrmInitForm还是用FrmGotoForm均无法跳到我想到的那个Form,点完后回到的始终是一开始的那个MainForm,请问高手应该怎样修改才能实现?
steven-lwh 2007-7-11 16:30
或者这么说吧,我创建了三个窗体分别为1,2,3,1为启动程序后出现的第一个窗体,在1中可以选择进入窗体2,2中有个按钮,我想实现当点击这个按钮后跳到窗体3,就是这么个简单的窗口切换功能.如果可以的话,希望能提供一下源代码参考下,谢谢.
eCool 2007-7-11 17:23
你还要给第三个窗体写事件啊,参考MainFormHandleEvent,跳转窗体用FrmGotoForm()
steven-lwh 2007-7-11 17:27
AppHandleEvent中要不要添加窗体3的处理事件啊?MainFormHandleEvent中还有一个调用了一个叫MainFormDoCommand的函数,这个怎么处理?能不能说的具体点,谢谢
steven-lwh 2007-7-12 09:16
还是那个问题,我经过测试发现如果我在程序一开始就载入窗体2,那么当我点击OK按钮后就能够顺利地进入窗体3,但如果我先进入的是窗体1,那么不管我怎么修改窗体2的处理程序代码,我点击OK按钮后进入的始终是窗体1而不是窗体3,我觉得可能是我没有理解AppEventLoop的执行过程,我认为 AppEventLoop是先执行系统处理SysHandleEvent,然后执行菜单处理MenuHandleEvent,最后执行事件处理AppHandleEvent,我觉得事件处理AppHandleEvent应该是一直执行的,不会跳出循环,请问这样理解对吗?但从结果来看,很明显它又在执行完一次处理后就重新开始新的循环了,不能理解.请高手解释一下,同时帮帮忙看要实现我的目的程序应该怎么写?谢谢!
eCool 2007-7-12 16:24
AppHandleEvent里面要添加窗口3的处理代码
[code]
static Boolean AppHandleEvent(EventType * eventP)
{
UInt16 formId;
FormType * frmP;
if (eventP->eType == frmLoadEvent)
{
/* Load the form resource. */
formId = eventP->data.frmLoad.formID;
frmP = FrmInitForm(formId);
FrmSetActiveForm(frmP);
/*
* Set the event handler for the form. The handler of the
* currently active form is called by FrmHandleEvent each
* time is receives an event.
*/
switch (formId)
{
case MainForm:
FrmSetEventHandler(frmP, MainFormHandleEvent);
break;
case Form3:
FrmSetEventHandler(frmP, Form3HandleEvent);
break;
}
return true;
}
return false;
}
[/code]
然后参考MainFormHandleEvent来写Form3HandleEvent
[[i] 本帖最后由 eCool 于 2007-7-12 16:25 编辑 [/i]]