问题1:如何把窗体移动到屏幕的右下角,类似QQ上线有个消息框弹出来!我用了GetWindowRect(rect),MoveWindow()可是rect。right和bottom老实是398和309??是不是尺寸的问题MoveWindow老实不对!
问题2:如何能够想QQ上线一样,自动从右下角慢慢升起,停顿2秒,然后自己又慢慢降下去,求教各位大哥了

解决方案 »

  1.   

    question1:是不是相对值不对? move值不合法?
    question2:用一个timer啊
      

  2.   

    MoveWindow的位置是否设置对
    用Timer定时MoveWindow移动窗口,自己控制一下速度
      

  3.   

    1。我也不知道是怎么回事。首先,GetWindowRect(rect),得出来得left=top=0,right=398,bottom=309,这是个固定得值,然后我用MoveWindow(AfxGetMainWnd()-》h_Wnd,right-60,bottom-100,60,100);不知道这样对不对?就是顶点在离右下角60,100得位置,大小就是60,100。我想肯定是GetWindowRect得出来得Rect肯定要 转换一下 他得值来符合MoveWindow,大家帮帮小弟2。用Timer,MoveWindow不行吧,任务栏好像要被挡住。
      

  4.   

    楼上兄弟,我是这样用的,但是不行,你看看哪里错了
    CWindowDC dc(this);
    CRect winRect,rect;
    GetWindowRect(rect);
    winRect = rect;
    dc.LPtoDP(winRect);
    ::MoveWindow(AfxGetMainWnd()->m_hWnd,winRect.right-60,winRect.bottom-100,60,100,FALSE);问题2,2,3楼兄弟,用Time和MoveWindow,我试了一下,有拖影,这个怎么解决,并且(可能是我的时间和移动距离设置不太好)效果不是很好,没有那种流畅的感觉!各位能够给断代码看看吗??
      

  5.   

    各位大哥,问题二,用Timer和MoveWindow已经解决好了,谢谢
    问题一,真的不知道怎么弄,可能是我给大家没说明白,我的意思是想把程序界面一出来就自动在右下角显示,面积大约Rect(0,0,100,100);就好像输入法的那个提示栏一样!
      

  6.   

    int x,y;
    x=::GetSystemMetrics(SM_CXSCREEN);
    y=::GetSystemMetrics(SM_CYSCREEN);
    SetWindowPos(&wndTopMost,x-rect.Width(),y,rect.Width(),rect.Height(),
    SWP_SHOWWINDOW);
              如果用的是SM_CYFULLSCREEN,就连任务栏也盖住了。
      

  7.   

    楼上的兄弟,你的办法的确解决了99%的问题了,真的很谢谢你!
    但是用SM_CYSCREEN,把任务栏给挡住了。CYFULLSCREEN反而又多出了一个任务栏的距离,真没有搞明白
      

  8.   

    先谢谢所有帮助我的兄弟们,问题解决了,特别谢谢:zjh824(学不好VC) ,我用MSDN在你给的SM_CYFULLSCREEN里面找到了我真正解决问题的方法!解决如下:(这下是真正直接显示在任务栏上面的) int x,y;
    CRect winRect,scrRect;
             //得到没有任务栏的屏幕大小,好像叫vitrual screen
    ::SystemParametersInfo(SPI_GETWORKAREA,NULL,&scrRect,NULL);
             //我自己的窗口
    GetWindowRect(winRect); SetWindowPos(&wndTopMost,scrRect.right -winRect.Width(),scrRect.bottom -winRect.Height(),winRect.Width(),winRect.Height(),SWP_SHOWWINDOW);再次谢谢大家
      

  9.   

    唉,怎么正好搞反了,看了下MSDN,SM_CYFULLSCREEN才是指的客户区。
    看来有的时候不能光靠字面上的意思想。