是FormView,不是对话框。

解决方案 »

  1.   

    如何设置窗口背景图
    问题是这样产生的.在OnEraseBkGnd中,如果你不调用原来缺省 
    的OnEraseBkGnd只是重画背景则不会有闪烁.而在OnPaint里面, 
    由于它隐含的调用了OnEraseBkGnd,而你又没有处理OnEraseBkGnd 
    函数,这时就和窗口缺省的背景刷相关了.缺省的 
    OnEraseBkGnd操作使用窗口的缺省背景刷刷新背景(一般情况 
    下是白刷),而随后你又自己重画背景造成屏幕闪动. 
    另外一个问题是OnEraseBkGnd不是每次都会被调用的.如果你 
    调用Invalidate的时候参数为TRUE,那么在OnPaint里面隐含 
    调用BeginPaint的时候就产生WM_ERASEBKGND消息,如果参数 
    是FALSE,则不会重刷背景. 
     
    所以解决方法有三个半: 
    1.用OnEraseBkGnd实现,不要调用原来的OnEraseBkGnd函数. 
    2.用OnPaint实现,同时重载OnEraseBkGnd,其中直接返回. 
    3.用OnPaint实现,创建窗口时设置背景刷为空 
    4.用OnPaint实现,但是要求刷新时用Invalidate(FALSE)这样 
    的函数.(不过这种情况下,窗口覆盖等造成的刷新还是要闪一 
    下,所以不是彻底的解决方法) 
    都挺简单的. 
      

  2.   

    同意 Skt32(荒城之月) 。
    加载位图用LoadImage。/////////////////////////
    HANDLE LoadImage(    HINSTANCE hinst,  // handle of the instance that contains the image
        LPCTSTR lpszName, // name or identifier of image
        UINT uType, // type of image
        int cxDesired, // desired width
        int cyDesired, // desired height
        UINT fuLoad // load flags
       );
    第二个参数为文件名,把最后一个参数设置为LR_LOADFROMFILE。