这样做,Timer本身的线程会停在那里等待Button1.click(self)运行的。
而Button1.click(self)要运行N分钟啊!
我想Timer点击了按钮就进入下一条语句。
是向按钮发消息吗?如何发?

解决方案 »

  1.   

    你没有说清楚,Timer为什么会等待?请说清楚点!
      

  2.   

    你在Button1.click事件中用Application.ProcessMessage试试。
      

  3.   

    因为在一个过程A中调用另一个过程B,A要等待B执行完才继续执行啊!
      

  4.   

    这样子行不?用Timer1触发Timer2,Timer2点Button
      

  5.   

    调SendMessage,向按纽的父窗口发BM_CLICK消息,这个消息是模拟点击按纽的,它向按纽发WM_KEYDOWN WM_KEYUP消息,并向它的父窗口发EN_CLICKED消息,具体参数和讲解请看msdn,不难。
    不过只有等你的OnTimer函数执行完才能执行按纽点击函数(如果你没有用多线程的话)
    因为在一个线程里,消息简单得理解是从队列中取出依次执行的。
      

  6.   

    应该是BN_Clicked..
    否则可以新建个工作者线程消除上述限制,即建一个函数,格式如下:
    DWORD WINAPI xxx(LPVOID )
    {
    //里边写调用SendMessage等代码
    }
    建线程用CreateThread(...)
    不过一般用不着,呵呵
      

  7.   

    我的程序已经开了N个线程啦!
    还是发消息比较好!
    如果我的父窗口是form1,怎么发消息啊?
    最好可以举例说明!
      

  8.   

    如果你的Button Down中的代码不是建一个线程做的,
    则就算你发了消息给这个别Button,Timer也会停下
    来等到Button Down做完了再触发,因为它们同属于
    Form 的主线程!
      

  9.   

    回复人: liang_z(千山一刀之忍者神龟) (2001-10-10 13:00:03)  得0分 
    如果你的Button Down中的代码不是建一个线程做的,
    则就算你发了消息给这个别Button,Timer也会停下
    来等到Button Down做完了再触发,因为它们同属于
    Form 的主线程!  RE::啊,对了,SendMessage是等这个消息响应后(执行那个涵数后)再执行下条语句。
    应该用PostMessage,它只是简单的把消息放入队列,等有空了再执行。
    谢谢你!
    而前面我学的bm_click生成的是wm_lbuttondown ..up等消息,起初写错了。
    postmessage参数和sendmessage的一样,请查帮助吧,我也只是看帮助才能记得起。
      

  10.   

    多线程的例子delphi有自带的,好像是个多算法排序的。
      我这儿有个更简单点的,
    http://liusong1111.home.chinaren.com/program/buttonclick.zip