crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в wxTextCtrl
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
ranger Дата 11.1.2009, 3:10
 
Цитата
найди где объявлен класс wxFileDropTarget видимо его компиллер не видит.

да, так оно и есть... всё дело было в строке #if wxUSE_DRAG_AND_DROP в заголовке dnd.h. Исправил значение
wxUSE_DRAG_AND_DROP в setup.h на 1 и всё заработало.
Litkevich Yuriy Дата 9.1.2009, 14:42
 
Цитата(ranger @ 9.1.2009, 17:38) *
вобщем буду разбираться дальше...
найди где объявлен класс wxFileDropTarget видимо его компиллер не видит.
ranger Дата 9.1.2009, 14:38
  Вобщем, почти разобрался сам:
#include <wx/app.h>
#include <wx/frame.h>
#include <wx/textctrl.h>
#include <wx/dnd.h>
#include <wx/filename.h>

#define    MAIN_WINDOW_ID 1000

class DnDFile : public wxFileDropTarget{
    private:
        wxTextCtrl *TargetTextCtrl;
    public:
        DnDFile(wxTextCtrl *target) {TargetTextCtrl = target; }
        virtual bool OnDropFiles(wxCoord x, wxCoord y, const wxArrayString &filenames);
};
bool DnDFile::OnDropFiles(wxCoord, wxCoord, const wxArrayString &filenames)
{
    wxFileName file(filenames[0]);
    if(file.GetExt() == "txt") TargetTextCtrl->LoadFile(filenames[0]);
    return true;
}
//-----------------------------------------

class MainWindow : public wxFrame{
    private:
        wxTextCtrl *text_ctrl;
    public:
        MainWindow(wxWindow *parent, wxWindowID id, const wxString &title,
                   const wxPoint &pos, const wxSize &size, long style, const wxString &name);
        virtual ~MainWindow();
};

  MainWindow::MainWindow(wxWindow *parent, wxWindowID id, const wxString &title,
                       const wxPoint &pos, const wxSize &size, long style, const wxString &name)
          : wxFrame(parent,id, title, pos, size, style, name)
{
    text_ctrl  = new wxTextCtrl(this, wxID_ANY, wxEmptyString,
                                wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE);
    text_ctrl->SetDropTarget(new DnDFile(text_ctrl));
}

//-----------------------------------------
MainWindow::~MainWindow()
{
//-----------------------------------------

class Application : public wxApp{
    public:
        bool OnInit();
};
IMPLEMENT_APP(Application)

bool Application::OnInit()
{
        MainWindow *main_window = new MainWindow(NULL, MAIN_WINDOW_ID, wxT("test"),
                                                  wxPoint(100,100), wxSize(640,480),
                                                   wxDEFAULT_FRAME_STYLE, "test");
    main_window->Show();
    return true;
}

правда компилируется только под windows, под линуксом ругается на 9 строку: "expected class-name before '{' token", или что-то в этом роде. Подозреваю, что это как-то связано с подключением инклюдов... вобщем буду разбираться дальше...
ranger Дата 7.1.2009, 18:43
  есть у кого нибудь простой пример реализации перетаскивания файлов(из проводника) в wxTextCtrl?
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 29.3.2024, 18:06