小弟,求教各位大哥,关于窗口的问题

h_bin16888 2004-12-31 08:25:32
问题1:如何把窗体移动到屏幕的右下角,类似QQ上线有个消息框弹出来!我用了GetWindowRect(rect),MoveWindow()可是rect。right和bottom老实是398和309??是不是尺寸的问题MoveWindow老实不对!
问题2:如何能够想QQ上线一样,自动从右下角慢慢升起,停顿2秒,然后自己又慢慢降下去,求教各位大哥了
...全文
126 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjh824 2005-01-06
  • 打赏
  • 举报
回复
唉,怎么正好搞反了,看了下MSDN,SM_CYFULLSCREEN才是指的客户区。
看来有的时候不能光靠字面上的意思想。
h_bin16888 2005-01-02
  • 打赏
  • 举报
回复
先谢谢所有帮助我的兄弟们,问题解决了,特别谢谢: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);

再次谢谢大家


h_bin16888 2005-01-02
  • 打赏
  • 举报
回复
楼上的兄弟,你的办法的确解决了99%的问题了,真的很谢谢你!
但是用SM_CYSCREEN,把任务栏给挡住了。CYFULLSCREEN反而又多出了一个任务栏的距离,真没有搞明白
h_bin16888 2005-01-01
  • 打赏
  • 举报
回复
楼上兄弟,我是这样用的,但是不行,你看看哪里错了
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,我试了一下,有拖影,这个怎么解决,并且(可能是我的时间和移动距离设置不太好)效果不是很好,没有那种流畅的感觉!

各位能够给断代码看看吗??
fanqing 2005-01-01
  • 打赏
  • 举报
回复
1.如果是对话框的话,对话框默认是不能改变大小的,必须设置他的属性.
zjh824 2005-01-01
  • 打赏
  • 举报
回复
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,就连任务栏也盖住了。

h_bin16888 2005-01-01
  • 打赏
  • 举报
回复
各位大哥,问题二,用Timer和MoveWindow已经解决好了,谢谢
问题一,真的不知道怎么弄,可能是我给大家没说明白,我的意思是想把程序界面一出来就自动在右下角显示,面积大约Rect(0,0,100,100);就好像输入法的那个提示栏一样!
bobob 2004-12-31
  • 打赏
  • 举报
回复
LPtoDP()
h_bin16888 2004-12-31
  • 打赏
  • 举报
回复
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不行吧,任务栏好像要被挡住。
oyljerry 2004-12-31
  • 打赏
  • 举报
回复
MoveWindow的位置是否设置对
用Timer定时MoveWindow移动窗口,自己控制一下速度
joycenter 2004-12-31
  • 打赏
  • 举报
回复
question1:是不是相对值不对? move值不合法?
question2:用一个timer啊
fanqing 2004-12-31
  • 打赏
  • 举报
回复
祝大家新年快乐!

15,978

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧