• 转:MFC 基于对话的程序界面显示完全后立即执行一个函数


    基本上网上百度来的,和一些帖子里的讨论都是这两个方案。

    1.可以在OnInitDialog最后用SetTimer
    然后在onTimer里KillTimer,再执行函数


    2.也可以在OnInitDialog最后用PostMessage让对话框响应一个函数去执行

    但我认为,前者在时间设定上不好敲定,时间长短没有准确依据,如果CPU很忙,可能很长时界面也没显示出来呢。

    后者倒是个好方法。

    不过,在哪里PostMessage,也有很多说法。
    OnInitDialog
    OnPaint
    int nResponse = dlg.DoModal();语句之后

    这三处,经过我实际测试,只有第一处可行。

    其它两个会不断的执行影响函数。当然,我小菜,也不知其所以然,呵呵。

    还有一种说法是:

    首次响应WM_PAINT:消息后就可以了 
    方法建一变量初始化为零(i   =   0;),第一次wm_paint之后加一i++ 
    WM_PAINT: 
    ....; 
    if(i==0) 

    Func(); 
    i++; 

    响应WM_PAINT消息 
    在   ::OnPaint()函数里执行你的函数,刚刚做了一个,你看看: 
    void   CModelDlg::OnPaint()   

    CPaintDC   dc(this);   //   device   context   for   painting 
    ClickFirstLine();//你的函数 
    //   Do   not   call   CDialog::OnPaint()   for   painting   messages 
    }


    void   CModelDlg::ClickFirstLine() 

    .... 
    .... 
    }

  • 相关阅读:
    HDU 2108 Shape of HDU (判断是不是凸多边形 叉乘)
    三,对于printf函数和C语言编程的初步拓展
    二,养成良好的写代码习惯
    一,彻底理解第一个C语言程序 Hello World
    归并排序(看了别人的博客明白了也写个博客,希望这样不算抄袭~)
    汉诺塔
    最小生成树
    堆排序
    二叉排序树
    双关键字快排
  • 原文地址:https://www.cnblogs.com/youxin/p/2858128.html
Copyright © 2020-2023  润新知