Как создать Прозрачное Управление ListView

Jar-файл - это zip-файл .....

Итак, чтобы прочитать файл jar, попробуйте

ZipFile file = new ZipFile("whatever.jar");
if (file != null) {
   ZipEntries entries = file.entries(); //get entries from the zip file...

   if (entries != null) {
      while (entries.hasMoreElements()) {
          ZipEntry entry = entries.nextElement();

          //use the entry to see if it's the file '1.txt'
          //Read from the byte using file.getInputStream(entry)
      }
    }
}

Надеюсь, это поможет.

1
задан y ramesh rao 10 June 2009 в 09:57
поделиться

2 ответа

Взгляните на эту статью, там есть библиотека элементов управления , которая поддерживает альфа-смешение, которое вы можете расширить до элемента управления ListView как хорошо.

1
ответ дан 3 September 2019 в 01:28
поделиться

Вы делаете это так же, как и в win32.

Все, что вам нужно сделать, это создать подкласс элемента управления и переопределить оконное сообщение WM_ERASEBKGND . Вы также можете переопределить сообщение WM_CTLCOLOR , чтобы установить текстовый режим в ПРОЗРАЧНЫЙ.

Я сделал это почти для всех стандартных элементов управления, и он отлично работает.

Обновление:

Это Начиная пример в MFC, вам все равно нужно каким-то образом нарисовать фон на элементе управления.

    class TransparentListView : public CListView
    {
    public:
        TransparentListView();
        virtual ~ToolsListCtrl();

    protected:
        afx_msg HBRUSH CtlColor(CDC* /*pDC*/, UINT /*nCtlColor*/);
        afx_msg BOOL OnEraseBkgnd(CDC* pDC);

    private:
        DECLARE_MESSAGE_MAP();
    };

IMPLEMENT_DYNAMIC(TransparentListView , CListView)
TransparentListView::TransparentListView()
{
}

TransparentListView::~TransparentListView()
{
}

BEGIN_MESSAGE_MAP(TransparentListView, CListView)
    ON_WM_CTLCOLOR_REFLECT()
    ON_WM_ERASEBKGND()
END_MESSAGE_MAP()

HBRUSH TransparentListView::CtlColor(CDC* pDC, UINT /*nCtlColor*/)
{
    pDC->SetBkMode(TRANSPARENT);
    return (HBRUSH)GetStockObject(NULL_BRUSH);
}

BOOL TransparentListView::OnEraseBkgnd(CDC* pDC)
{
    // You will need to force the drawing of the background here
    // onto the pDC, there are lots of ways to do this.
    // I've done it my having a pointer to a interface that 
    // draws the background image
    return TRUE;
}
1
ответ дан 3 September 2019 в 01:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: