我是新手程序员,急需用VC++6实现一个win32程序的窗口震动功能,向各位大虾求教.
听说步骤是获得窗口对象位置然后调整窗口对象位置,但是不是很清楚窗口对象怎么定义或者获得.
本人水平有限希望大虾们能提供一下关键代码参考.谢谢.

解决方案 »

  1.   

    思路可以是使用Timer,来实现窗口的移动,移动窗口可以使用MoveWindow或SetWindowPos。
      

  2.   

    获得窗口位置GetWindowPos
    移动用MoveWindow或SetWindowPos
    然后弄定时器 SetTimer
    用到了也就这几个API
    然后再需要一些随机函数 srand rand就够了
      

  3.   

    个人不同意以上几位的观点 -- 虽然我也不知道已有此功能的软件是如何实现的!以上面的方法肯定能实现这个功能,但效率应该很低!如果是我,我会尝试这样作(假设在水平方面震动 dx 像素):
    1.用兼容 DC 保存目标窗口左侧 dx 宽、与窗口同高的区域的图像数据;
    2.向左移动窗口 dx 像素;
    3.用兼容 DC 保存目标窗口右侧 dx 宽、与窗口同高的区域的图像数据;
    4.扩展窗口尺寸,使其宽度增加 dx 像素;
    5.使用定时器,周期反复用 ScrollWindow 向左、右复制窗口有效图像数据,再用前面保存的 dx 宽的区域图像填充
      多出来的那个“空白”区域;
    6.震动结束,将窗口尺寸调整到原先大小,回到原先位置。
      

  4.   

    CWnd *mwnd = FindWindow( NULL, "" );       //得到窗口句柄
    CRect mrect;
    mwnd->GetWindowRect( &mrect );            //得到窗口位置
    mwnd->ActivateTopParent( );                //激活窗口
    SetTimer( );                               //调用时间函数
    再用MoveWindow();就可以了
      

  5.   

    楼上大虾能讲解下GetWindowPos,SetWindowPos,MoveWindow具体怎么调用吗- -?
    一时没找到相关资料,基础不好莫见笑 - -
      

  6.   


    如果你连MSDN都不装,那就要见笑了
      

  7.   

    楼主,按2楼说的试试吧。。怎么用这些API?你不是可以上网么??搜下啊。。保证很多很多。。