急急急!!!--我在对话框里使用了带有ImageList的ListCtrl,但是如果程序窗口先隐藏,然后再显示,列表控件的Image都不显示了

greenpea101   2007-9-17 18:26 楼主
如题,如上操作后该显示image的地方(在每一行的最左边)成了白色。代码如下:bmp图片全部是256色
m_Bitmap1.LoadBitmap(IDB_BITMAPL1);
        m_Bitmap2.LoadBitmap(IDB_BITMAPL2);
        m_Bitmap3.LoadBitmap(IDB_BITMAPL3);
        m_Bitmap4.LoadBitmap(IDB_BITMAPL4);
        m_Bitmap5.LoadBitmap(IDB_BITMAPL5);
        m_Bitmap6.LoadBitmap(IDB_BITMAPL6);
        m_Bitmap7.LoadBitmap(IDB_BITMAPL7);
        if(m_ImageList.Create(30, 30,ILC_COLOR8,7,1))
        {
                m_ImageList.Add(&m_Bitmap1,RGB(255,255,255));
                m_ImageList.Add(&m_Bitmap2,RGB(255,255,255));
                m_ImageList.Add(&m_Bitmap3,RGB(255,255,255));
                m_ImageList.Add(&m_Bitmap4,RGB(255,255,255));
                m_ImageList.Add(&m_Bitmap5,RGB(255,255,255));
                m_ImageList.Add(&m_Bitmap6,RGB(255,255,255));
                m_ImageList.Add(&m_Bitmap7,RGB(255,255,255));
        }

        m_ListContent.InsertColumn(0,NULL,LVCFMT_LEFT,238,-1);
        m_ListContent.InsertItem(0,L"",0);
        m_ListContent.InsertItem(1,L"",1);
        m_ListContent.InsertItem(2,L"",2);
        m_ListContent.InsertItem(3,L"",3);
        m_ListContent.InsertItem(4,L"",4);
        m_ListContent.InsertItem(5,L"",5);
        m_ListContent.InsertItem(6,L"",6);

m_ListContent.SetExtendedStyle(m_ListContent.GetExtendedStyle()|LVS_EX_FULLROWSELECT);
m_ListContent.SetImageList(&m_ImageList,LVSIL_SMALL);

隐藏显示代码:
ShowWindow(SW_HIDE);
hWnd = FindWindow(主窗口名);SetWindowPos(hWnd,SWP_SHOWWINDOW),

回复评论 (5)

这个的确没有做过
SetWindowPos(hWnd,SWP_SHOWWINDOW) 的时候 是不是可以m_ListContent.showwindow 一下
点赞  2007-9-18 09:43
重绘一下窗口。
点赞  2007-9-18 12:05
重绘
点赞  2007-9-18 12:17
关于显示我用的都是api,没用过mfc,所以只能重底层帮你分析一下,你的窗口每次隐藏后,再显示,对于windows的消息机制,肯定要调用一次WM_PAINT事件,所以如果你把你的显示过程放在这个事件中,这样每次窗口的任何动作,都会让窗口重绘一次,现在的情况是,你用mfc的那个类,只是把显示过程写在了WM_CREATE的事件中,只有再第一次显示的时候调用,后面都调用不到,这样说应该明白了吧。
点赞  2007-9-18 14:53
感谢各位的回答。
点赞  2007-9-24 14:03
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复