dlg.DoModal()调用完OnInitDialog()初始化完对话框之后,我想调用一个函数。
对话框上没有按钮,所以怎么才能初始化万对话框后,调用一个函数哪?

解决方案 »

  1.   

    你就放在OnInitDialog里面调用啊。
      

  2.   

    在OnInitDialog返回之前调用你的函数不行吗?
      

  3.   

    一般的,当你不想在OnInitDialog()函数中调用函数时,你可以在OnInitDialog函数结束返回之前发送一个自定义的消息,利用你的消息处理函数来执行你的函数。注意要使用PostMessage而不是SendMessage,否则和在OnInitDialog函数内部执行你的附加函数是一样的效果哦!
    如果你的附加函数需要执行长时间的操作,同样会使界面“假死”,此时只能使用工作线程来解决了!
      

  4.   

    我以前有过类似的需求,我的办法是在第一个WM_PAINT消息里执行那个函数。
    先定义一个全局变量比如:int test=1
    在WM_PAINT消息里:
    if (test == 1)
    {
        执行你的函数
    }
    test++;
    if (test>2)
    test = 2;
    ............
      

  5.   

    我利用timer实现了。
    但存在一个问题,用户调用的只是一个创建对话框的函数,它返回给用户“1”。
    而我想返回给用户的是timer中的那个函数的执行结果。
    现在无法把它返回给用户了,怎么办哪?
      

  6.   

    1  直接在OnInitDialog最后调用
    2  发送自定义的消息,用ON_MESSAGE设置这个消息的相应函数为你要调用的就可以了