a solution http://www.codeguru.com/dialog/FlickerFreeResize.shtml
CResizableDialog By Paolo Messina A CDialog derived class to implement resizable dialogs with MFC
http://www.codeproject.com/dialog/resizabledialog.aspEasySize - Dialog resizing in no time! By Marc Richarme An easy way to position controls in resizable dialogs or property pages using just a few macros http://www.codeproject.com/dialog/easysize.asp
http://www.codeguru.com/dialog/FlickerFreeResize.shtml
By Paolo Messina A CDialog derived class to implement resizable dialogs with MFC
http://www.codeproject.com/dialog/resizabledialog.aspEasySize - Dialog resizing in no time!
By Marc Richarme An easy way to position controls in resizable dialogs or property pages using just a few macros http://www.codeproject.com/dialog/easysize.asp
Handle the WM_SIZE message
CDialog::OnSizing(fwSide, pRect); if((fwSide==WMSZ_BOTTOM) || (fwSide==WMSZ_TOP))
pRect->right=pRect->left+(pRect->bottom-pRect->top)*2;
else
pRect->bottom=pRect->top+(pRect->right-pRect->left)*0.5;
// TODO: 在此添加消息处理程序代码
}
先求出X,Y的比例,或直接由你给出。
然后在OnSize()函数中。
if(move_x > move_y)
MoveWindow()窗口宽度加move_x,按比例求出窗口高度
else
MoveWindow()窗口高度加move_y,按比例求出窗口宽度
因为只有在变化结束后才会有WM_SIZE消息.
我希望是在变化时出一个虑框,而不实际进行变化,这样用户可以有直观的感觉.
自己画虚框了
我响应了以上的三个消息,但发现WM_NCLBUTTONUP,从来就不响应,用SPY看也没有这个消息.
先求出X,Y的比例,或直接由你给出。
然后在OnSize()函数中。
if(move_x > move_y)
MoveWindow()窗口宽度加move_x,按比例求出窗口高度
else
MoveWindow()窗口高度加move_y,按比例求出窗口宽度