Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Установить иконку для окна.
Форум на CrossPlatform.RU > Библиотеки > wxWidgets
Lestat
я переделал немного исходник wxInclude и теперь получаю два файла, в которых содержаться мои изображения, вида:

resources.hpp
/*
    Automatic generated header by:

        wxInclude by Kim De Deyn, use --help for more information.
        Version 1.0, compiled at Jun  6 2008 01:24:38

    Header: resources
    Macros: yes
    Const: yes
*/

#ifndef _WXINCLUDE_RESOURCES_H_
#define _WXINCLUDE_RESOURCES_H_

#include "wx/wx.h"
#include "wx/mstream.h"

#define wxMEMORY_IMAGE( name ) _wxConvertMemoryToImage( name, sizeof( name ) )
#define wxMEMORY_IMAGEEX( name, type ) _wxConvertMemoryToImage( name, sizeof( name ), type )
#define wxMEMORY_BITMAP( name ) _wxConvertMemoryToBitmap( name, sizeof( name ) )
#define wxMEMORY_BITMAPEX( name, type ) _wxConvertMemoryToBitmap( name, sizeof( name ), type )

inline wxImage _wxConvertMemoryToImage(const unsigned char* data, int length, long type = wxBITMAP_TYPE_ANY )
{
    wxMemoryInputStream stream( data, length );
    return wxImage( stream, type, -1 );
}

inline wxBitmap _wxConvertMemoryToBitmap(const unsigned char* data, int length, long type = wxBITMAP_TYPE_ANY )
{
    wxMemoryInputStream stream( data, length );
    return wxBitmap( wxImage( stream, type, -1 ), -1 );
}

void initResource(void);

extern wxBitmap appicon;

static const unsigned char appicon_data[] = {
0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A, 0x00, 0x00,
...........................
...........................
...........................
0xB9, 0x69, 0x5A, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4E,
0x44, 0xAE, 0x42, 0x60, 0x82
};


resourсes.cpp
#include "resources.hpp"

wxBitmap appicon;
wxBitmap test_icon_37_disable;
wxBitmap test_icon_37_enable;

void initResource(void)
{
       appicon = wxMEMORY_BITMAPEX(appicon_data, wxBITMAP_TYPE_PNG);
       test_icon_37_disable = wxMEMORY_BITMAPEX(test_icon_37_disable_data, wxBITMAP_TYPE_PNG);
       test_icon_37_enable = wxMEMORY_BITMAPEX(test_icon_37_enable_data, wxBITMAP_TYPE_PNG);
}


wxInclude в них автоматом заносит все PNG картинки которые находит в папке...
после чего в проге можно подключить
#include "resources.hpp"

и писать сразу что-нибудь вроде
tool = GetToolBar()->AddTool(5, _T("Tool"), test_icon_37_enable, test_icon_37_disable, wxITEM_NORMAL, _T("Выбор полигонов"), _T("Выделение полигонов на карте"));
т.е. все картинки автоматом видны в исходниках как wxBitmap по имени файл, только без png

Проблема заключается в том, что я хочу получить wxIcon для иконки окна, но для этого мне нужно либо колдовать с моим wxInclude.exe, либо сконвертировать wxBitmap в wxIcon как-нибудь.
Гуглил по этому вопросу довольно много, но мало что попалось.

вобщем как правильно установить иконку окну имея wxBitmap?
Спасибо!
ViGOur
Что тебе мешает привети wxBitmap к wxIcon?
Вот объявление класса wxIcon:
/////////////////////////////////////////////////////////////////////////////
// Name:        wx/generic/icon.h
// Purpose:     wxIcon implementation for ports where it's same as wxBitmap
// Author:      Julian Smart
// Modified by:
// Created:     17/09/98
// RCS-ID:      $Id: icon.h,v 1.2 2006/10/30 19:25:54 VZ Exp $
// Copyright:   (c) Julian Smart
// Licence:     wxWindows licence
/////////////////////////////////////////////////////////////////////////////

#ifndef _WX_GENERIC_ICON_H_
#define _WX_GENERIC_ICON_H_

#include "wx/bitmap.h"

//-----------------------------------------------------------------------------
// wxIcon
//-----------------------------------------------------------------------------

#ifndef wxICON_DEFAULT_BITMAP_TYPE
#define wxICON_DEFAULT_BITMAP_TYPE wxBITMAP_TYPE_XPM
#endif

class WXDLLIMPEXP_CORE wxIcon: public wxBitmap
{
public:
    wxIcon();

    wxIcon( const char **bits, int width=-1, int height=-1 );
    wxIcon( char **bits, int width=-1, int height=-1 );

    // For compatibility with wxMSW where desired size is sometimes required to
    // distinguish between multiple icons in a resource.
    wxIcon( const wxString& filename,
            wxBitmapType type = wxICON_DEFAULT_BITMAP_TYPE,
            int WXUNUSED(desiredWidth)=-1, int WXUNUSED(desiredHeight)=-1 ) :
        wxBitmap(filename, type)
    {
    }

    wxIcon(const wxIconLocation& loc)
        : wxBitmap(loc.GetFileName(), wxBITMAP_TYPE_ANY)
    {
    }

    // create from bitmap (which should have a mask unless it's monochrome):
    // there shouldn't be any implicit bitmap -> icon conversion (i.e. no
    // ctors, assignment operators...), but it's ok to have such function
    void CopyFromBitmap(const wxBitmap& bmp);

private:
    DECLARE_DYNAMIC_CLASS(wxIcon)
};

#endif // _WX_GENERIC_ICON_H_
Или я что-то не понимаю?

Основной момент:
class WXDLLIMPEXP_CORE wxIcon: public wxBitmap
Lestat
Ешкин кот! Спасибо) я тут на маленькую глупость натолкнулся... размер картинки был 64х64... пару часов убил не мог понять в чем дело)
вобщем такая конструкция работает при размере битмапа 32х32
    wxIcon icon;
    icon.CopyFromBitmap(appicon);
    SetIcon(icon);
где appicon - wxBitmap
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.