本帖最后由 chuanxin8989 于 2013-08-29 16:59:37 编辑

解决方案 »

  1.   

    static UINT CALLBACK FileDialogHookFunction(HWND hDlg, UINT iMsg, WPARAM wParam, LPARAM lParam)
    {
            static wxImage img;
            ......        case WM_PAINT:
            {
                    PAINTSTRUCT ps;
                    HWND hImg = ::GetDlgItem(hDlg, IDC_IMAGE);     //获取该对话框中id为 IDC_IMAGE 控件的句柄
                    ::BeginPaint(hImg, &ps);
                    wxWindow wndImg;
                    wndImg.AssociateHandle(hImg);    //使用上面的句柄创建一个 wxWindow 对象
                    wxClientDC dc2(&wndImg);  //用上面的句柄创建一个 wxClientDC 对象
                    wxSize sz = wndImg.GetClientSize();    //获取客户区大小
                    dc2.SetClippingRegion(0, 0, sz.x, sz.y);    //设置窗口的裁剪区域
                    wxBufferedDC dc(&dc2, sz);       //Creates a buffer for the provided dc. 
                    .......        
                   
            }
        }
      

  2.   


    wndImg.AssociateHandle(hImg);    //使用上面的句柄创建一个 wxWindow 对象 
    这句什么意思,wndImg 不是已经创建过了吗,应该是关联吧。还有,我的程序预览图片的时候只是在对话框最下面一部分矩形框中预览,而
    dc2.SetClippingRegion(0, 0, sz.x, sz.y);    //设置窗口的裁剪区域  
    这句岂不是设置跟客户区一般大了?