读书人

上面这段关于quot;对话框中控件自动变化quot;代

发布时间: 2012-09-28 00:03:35 作者: rapoo

下面这段关于"对话框中控件自动变化"代码怎么改进?

C/C++ code
OnSize(UINT nType, int cx, int cy){     CDialog::OnSize(nType, cx, cy);         // TODO: Add your message handler code here  double dX = ( double)cx /pointOld. x;        double dY = (double) cy/pointOld .y;        if (nType == SIZE_MINIMIZED)               return;        int left ,top, newWidth,newHeight ;        HWND hwndChild =::GetWindow( m_hWnd,GW_CHILD ); //列出所有控件        CWnd *pWnd ;        while(hwndChild )        {                pWnd = FromHandle (hwndChild);               CRect rect ;               pWnd->GetWindowRect (&rect);               ScreenToClient(rect );               left =(int )(rect. left*dX );               top = (int )(rect. top*dY );               newWidth = (int )(rect. Width() * dX );               newHeight = (int )(rect. Height() * dY );               pWnd->MoveWindow (left, top,newWidth ,newHeight);               hwndChild=::GetWindow (hwndChild, GW_HWNDNEXT);        }        pointOld.x = cx;        pointOld.y = cy;               Invalidate();}

这段代码基本能够实现变大变小,但是貌似有点变形.我想原因主要是每次变大变小之后控件的新坐标和宽度计算结果是小数,但是MoveWindow只能到整数部分,所以多次变化之后就有点走样了!
不知道这段代码怎么优化会好一点?或者是有什么更好的方法!

[解决办法]
推荐使用 easysize 类!!你可以查找看看
[解决办法]
http://www.codeproject.com/Articles/1657/EasySize-Dialog-resizing-in-no-time
对你有用

读书人网 >VC/MFC

热点推荐