我想用PeekMessage(LPMSG lpMsg,...)这个函数来获取当一个按键事件,并进行相应操作(用GetMessage也行),但这个函数的变量lpMsg如何获取,从何处获取?老帖子里面的那个看了半天不明白 http://topic.csdn.net/u/20070413/10/5a730490-20b2-450e-97db-708c83926727.html ,麻烦谁解释下也行。

解决方案 »

  1.   

    lpMsg是输出的,不是要你输入的。
      

  2.   

    不明白2楼的意思。是说如果我在一个按键事件中写这些代码的话,最后我可以利用
    MSG message
    PeekMessage(&message,...)来生成一个消息?最后生成的消息就是message?
      

  3.   

    PeekMessage是从消息队列中取一个消息。一般不会在事件响应代码中用。
      

  4.   

    可以拦截消息
    PreTranslateMessage或SetWindowsLong
      

  5.   

    你PeekMessage的时候,传入一个MSG结构指针就可以了
      

  6.   

    MSG msg;
    PeekMessage(&msg, NULL, NULL, NULL);
    ...
      

  7.   

    我的需求是按下一个键之后,让程序不停的循环这个输入,直到我按下另一个键之后取消。也就是说写成一个无限循环,当消息队列里面存在另一个按键的信息的时候,退出此循环。所以这些事件应该写进一个按键事件里面,然后判断按键队列,当按键队列里面有另一个按键的WM_KEYDOWN事件时,结束循环。
    preTranslateMessage不能满足需求。
      

  8.   

    PeekMessage在读取的时候是怎么读取信息的?一次不是只能读取一条么?如果我给他的最后一个参数是PM_NOREMOVE,他在读取信息的时候是不是一直只读一条消息?
      

  9.   

    PeekMessage的第一个参数是你自己定义的,取得的消息是保存到第一个参数里面的,然后你判断这个消息到底是什么消息再做判断。