查看完整版本: 有关窗体的问题

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]]

笨笨猪老婆 2008-6-1 02:57

我也来看了,很不错,收藏了
页: [1]
查看完整版本: 有关窗体的问题