在对话框中 添加了一个ToolBar(有10个按钮)现在添加一个函数, 该函数完成 执行一次, ToolBar 往左移动一个按钮位置为什么 第一次执行这段代码时 ToolBar 往左移动一个按钮, 而继续执行则不对CRect RectToolBar;
m_ToolBar.GetClientRect(&RectToolBar);

int dx ;
dx = (RectToolBar.right - RectToolBar.left)/10; 
m_ToolBar.MoveWindow(RectToolBar.left - dx, 0,
     RectToolBar.Width, RectToolBar.Height, NULL);

解决方案 »

  1.   

    dx = (RectToolBar.right - RectToolBar.left)/10; //这句是取整,有问题
      

  2.   

    CRect RectToolBar;//这句话放到全局里(或在public里定义)m_ToolBar.GetClientRect(&RectToolBar);//这句话放到初始化里,不放在执行函数里
      

  3.   

    为什么开始后 RectToolBar(left = 0 ; top = 0; bottom = 43; right = 463)
    执行这个后
    m_ToolBar.MoveWindow(-46, 0,
    460 - 46, 53, TRUE);

    在执行 
    m_ToolBar.GetClientRect(&RectToolBar);RectToolBar( left = 0, top =0; bottom = 49, right = 397);
    而不等于 0,0, 53, 460-46 呢
      

  4.   

    为什么开始后 RectToolBar(left = 0 ; top = 0; bottom = 43; right = 463)
    执行这个后
    m_ToolBar.MoveWindow(-46, 0,
    460 - 46, 53, TRUE);

    在执行 
    m_ToolBar.GetClientRect(&RectToolBar);RectToolBar( left = 0, top =0; bottom = 49, right = 397);
    而不等于 0,0, 53, 460-46 呢
      

  5.   

    为什么开始后 RectToolBar(left = 0 ; top = 0; bottom = 43; right = 463)
    执行这个后
    m_ToolBar.MoveWindow(-46, 0,
    460 - 46, 53, TRUE);

    在执行 
    m_ToolBar.GetClientRect(&RectToolBar);RectToolBar( left = 0, top =0; bottom = 49, right = 397);
    而不等于 0,0, 53, 460-46 呢:
    因为你这些是局部变量,执行一次后就没了,你下次执行时又回到了初始状态,如 zhucde(【風間苍月】)(MVP) ( ) 所说