我在XP下用VC6做的两个相同的窗口,通过MoveWindow()让他们紧密的并联排列在一起,这些都没有问题,但是程序拿到VISTA和WIN7下运行时,由于VISTA和WIN7的Areo效果,两个窗口边界处出现交错重叠,因为Aero下窗口边框的宽度会比较宽,宽于正常的XP下窗口边框,如果我关掉Aero效果,可以看到两个窗口其实还是整齐的并联排列在一起,边界不会有交错。请问怎么处理能让程序兼容这两种不同的风格,别说VISTA下运行就关掉Aero,好像没见到有人用Vista,WIN7却不开Aero的吧。。

解决方案 »

  1.   

    你是用的GetClientRect 还是 GetWindowRect ?
      

  2.   

    我是直接用的 第一个窗口:MoveWindow(200, 200, 300, 300);
                第二个窗口:MoveWindow(500,200,300,300);
      

  3.   

     这个倒可以,但是不能只判断操作系统,还要判断系统是否开启了Aero效果,请问这个该怎么判断,有相关函数吗?
      

  4.   

    先GetwindowRect,根据这个再设置
      

  5.   


    getwindowrect(&rc1);
    getwindowrect(&rc2);
    movewindow(hwnd,0,0,rc1.left,rc1.top,rc1.right-rc1.left,rc1.botton-rc1-top);
    movewindow(hwnd,0,0,rc1.right,rc1.top........);
      

  6.   

    打错
    getwindowrect(&rc1);
    getwindowrect(&rc2);
    movewindow(hwnd,0,0,rc1.left,rc1.top,rc1.right-rc1.left,rc1.botton-rc1-top);
    movewindow(hwnd,rc1.right,rc1.top........);
      

  7.   

    昏厥,加个TRUE,试试,不行的话就判断系统,>5做微调