Кодим с wxWidgets

Использование и разработка софта (преимущественно на ПЦ)

Moderator: Shaos

User avatar
Shaos
Admin
Posts: 23892
Joined: 09 Jan 2003 06:22
Location: Silicon Valley
Contact:

Кодим с wxWidgets

Post by Shaos »

C wxWidgets я поработал в качестве платного консультанта в 2019 году (в том же году я и с Qt плотненько поработал) - вот краткие выборки из того опыта, проскользнувшие в теме про emu80v4:
Shaos wrote:Сегодня долго бодался с wxWidgets - написал тестовое приложение (аналогичное тому, что гоняли на Qt) и собрал его в линуксе (Debian и Ubuntu имеют wx3.0 "искаробки"), в WinXP (wx2.8 с помощью фришного Борланда C++ 5.5) и даже на PowerPC MacOS X 10.4 ( тоже wx2.8 ) :)

Так что я обеими руками голосую за wx :kruto:
Shaos wrote:Пока вёл разработку в линухе - всё было хорошо с WX (3.0), но как только пересел на Win10 - началось :idea:
Безобидный вызов контекста панели в обработчике OnPaint окна замечательно работал в линуксе (поверх GTK+), но напрочь стал подвешивать приложение в винде :rotate:
Пришлось городить дочерние классы, наследующие от wxPanel со своими обработчиками OnPaint - только после этого всё заработало
Частичная перерисовка окна достала (надо полную) - советуют перехватывать EVT_SIZE, перехватил - сломались Sizer-ы :mrgreen:
Короче везде свои грабли...
В этом топике планирую писать всё, связанное с wxWidgets, начиная с самого простейшего приложения (если вдруг кто решит с ними тоже покодить).

https://ru.wikipedia.org/wiki/WxWidgets
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23892
Joined: 09 Jan 2003 06:22
Location: Silicon Valley
Contact:

Re: Кодим с wxWidgets

Post by Shaos »

Вот пример того, что я собственно делал в 2019 году на WX:



P.S. Это с использованием PLplot-либы, а потом я всё тоже самое сделал средствами самого wxWidgets:

CICDec256.png
CICDec256.png (55.99 KiB) Viewed 2480 times

Attachments

video1.mp4
(401.25 KiB) Downloaded 203 times

Я тут за главного - если что шлите мыло на me собака shaos точка net
forthuser
Senior
Posts: 165
Joined: 12 Jan 2023 14:26

Re: Кодим с wxWidgets

Post by forthuser »

Shaos wrote:Вот пример того, что я собственно делал в 2019 году на WX:
Использование WxWidgets не так часто встречается в приложениях.
Из того что вспомнилось, к примеру, CodeBlocks.

P.S. А, вот с QT4 намедни у себя без особых вопросов собралась оболочка Yagf 0.9.5 для OCR (tesseract, cuneiform), при этом, почему то такая оболочка из репы Ubuntu при действиях в ней
сразу закрывалась.

А, c Allegro5 графической библиотекой не приходилось сталкиваться?
Примеры приложенные к ней вполне симпатичные.
User avatar
Shaos
Admin
Posts: 23892
Joined: 09 Jan 2003 06:22
Location: Silicon Valley
Contact:

Re: Кодим с wxWidgets

Post by Shaos »

forthuser wrote: Использование WxWidgets не так часто встречается в приложениях.
Из того что вспомнилось, к примеру, CodeBlocks.
Ну как не так часто то? Если верить википедии (ссылка в первом посте):
Распространённое ПО, написанное на wxWidgets
  • Amaya — веб-браузер и редактор
  • aMule — клиент файлообменной сети
  • Aegisub — кроссплатформенный редактор субтитров
  • Audacity — звуковой редактор
  • BitTorrent — клиент файлообменной сети
  • Code::Blocks — интегрированная среда разработки
  • CodeLite — редактор для программистов
  • Dolphin — эмулятор игровых приставок
  • FileZilla — FTP-клиент
  • KiCad — программа разводки печатных плат
  • RapidSVN — клиент Subversion
  • TrueCrypt — программа для шифрования
  • wxMaxima — система компьютерной алгебры
  • UnrealEd — редактор для Unreal Engine
  • и многие другие.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23892
Joined: 09 Jan 2003 06:22
Location: Silicon Valley
Contact:

Re: Кодим с wxWidgets

Post by Shaos »

Почти через 2 года вернулся к экспериментам с wxWidgets :lol:

Иконка icon16x16.xpm (такая же как favicon.ico у этого сайта):

Code: Select all

/* XPM */
static char * icon16x16_xpm[] = {
"16 16 5 1",
" 	c None",
".	c #000000",
"+	c #0000F2",
"@	c #F20000",
"#	c #00F200",
"................",
"................",
"..####....####..",
"..#..#@@@@#..#..",
"..#..#@@@@#..#..",
"..####....####..",
"...++......++...",
"...++......++...",
"...++......++...",
"...++......++...",
"..####....####..",
"..#..#@@@@#..#..",
"..#..#@@@@#..#..",
"..####....####..",
"................",
"................"};
Текст простейшей программки из книжки (лежащей в открытом виде у меня на компьютерном столе последние 2 года) с меню и строкой статуса wx1.cpp:

Code: Select all

// Minimal wxWidgets sample

#include "wx/wx.h"

class MyApp : public wxApp
{
 public:
  virtual bool OnInit();
};

class MyFrame : public wxFrame
{
 public:
  MyFrame(const wxString& title);

  void OnQuit(wxCommandEvent& event);
  void OnAbout(wxCommandEvent& event);

 private:
  DECLARE_EVENT_TABLE()
};

DECLARE_APP(MyApp)

IMPLEMENT_APP(MyApp)

bool MyApp::OnInit()
{
  MyFrame *frame = new MyFrame(wxT("Minimal wxWidets App"));

  frame->Show(true);

  return true;
}

BEGIN_EVENT_TABLE(MyFrame, wxFrame)
  EVT_MENU(wxID_ABOUT, MyFrame::OnAbout)
  EVT_MENU(wxID_EXIT,  MyFrame::OnQuit)
END_EVENT_TABLE()

void MyFrame::OnAbout(wxCommandEvent& event)
{
  wxString msg;
  msg.Printf(wxT("Hello and welcome tp %s"), wxVERSION_STRING);
  wxMessageBox(msg, wxT("About Minimal"), wxOK | wxICON_INFORMATION, this);
}

void MyFrame::OnQuit(wxCommandEvent& event)
{
  Close();
}

const
#include "icon16x16.xpm"

MyFrame::MyFrame(const wxString& title) : wxFrame(NULL, wxID_ANY, title)
{
  SetIcon(wxIcon(icon16x16_xpm));
  wxMenu *fileMenu = new wxMenu;
  wxMenu *helpMenu = new wxMenu;
  helpMenu->Append(wxID_ABOUT, wxT("&About...\tF1"), wxT("Show about dialog"));
  fileMenu->Append(wxID_EXIT, wxT("E&xit...\tAlt-X"), wxT("Quit this program"));
  wxMenuBar *menuBar = new wxMenuBar();
  menuBar->Append(fileMenu, wxT("&File"));
  menuBar->Append(helpMenu, wxT("&Help"));
  SetMenuBar(menuBar);
  CreateStatusBar(2);
  SetStatusText(wxT("Welcome to wxWidget!"));
}
Собираем вот таким образом:

Code: Select all

g++ wx1.cpp `wx-config --cxxflags` -o wx1 `wx-config --libs`
Запускаем 8)

Screenshot from 2025-02-11 22-28-09.png
Screenshot from 2025-02-11 22-28-09.png (10.36 KiB) Viewed 2765 times

При нажатии F1 (либо выборе пункта меню Help->About) появится вот такой попачик:

Screenshot from 2025-02-11 22-28-36.png
Screenshot from 2025-02-11 22-28-36.png (18.47 KiB) Viewed 2765 times

P.S. Тьфу опечатался - вместо tp надо to :oops:
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23892
Joined: 09 Jan 2003 06:22
Location: Silicon Valley
Contact:

Re: Кодим с wxWidgets

Post by Shaos »

Добавляем обработчик OnSize и кнопку OK:

Code: Select all

// wxWidgets sample #2

#include "wx/wx.h"

class MyApp : public wxApp
{
 public:
  virtual bool OnInit();
};

class MyFrame : public wxFrame
{
 public:
  MyFrame(const wxString& title);
  void OnQuit(wxCommandEvent& event);
  void OnAbout(wxCommandEvent& event);
  void OnSize(wxSizeEvent& event);
  void OnButtonOK(wxCommandEvent& event);
 private:
  DECLARE_EVENT_TABLE()
};

DECLARE_APP(MyApp)

IMPLEMENT_APP(MyApp)

bool MyApp::OnInit()
{
  MyFrame *frame = new MyFrame(wxT("Minimal wxWidets App"));
  frame->Show(true);
  return true;
}

BEGIN_EVENT_TABLE(MyFrame, wxFrame)
  EVT_MENU(wxID_ABOUT, MyFrame::OnAbout)
  EVT_MENU(wxID_EXIT,  MyFrame::OnQuit)
  EVT_SIZE(            MyFrame::OnSize)
  EVT_BUTTON(wxID_OK,  MyFrame::OnButtonOK)
END_EVENT_TABLE()

void MyFrame::OnAbout(wxCommandEvent& event)
{
  wxString msg;
  msg.Printf(wxT("Hello and welcome to %s"), wxVERSION_STRING);
  wxMessageBox(msg, wxT("About Minimal"), wxOK | wxICON_INFORMATION, this);
}

void MyFrame::OnQuit(wxCommandEvent& event)
{
  Close();
}

void MyFrame::OnSize(wxSizeEvent& event)
{
  wxSize size = GetSize();
  int dx = size.GetWidth();
  int dy = size.GetHeight();
  char str[16];
  sprintf(str,"OnSize %d:%d",dx,dy);
  SetStatusText(str);
}

void MyFrame::OnButtonOK(wxCommandEvent& event)
{
  SetStatusText(wxT("OnButtonOK!"));
}

const
#include "icon16x16.xpm"

MyFrame::MyFrame(const wxString& title) : wxFrame(NULL, wxID_ANY, title)
{
  SetIcon(wxIcon(icon16x16_xpm));
  wxMenu *fileMenu = new wxMenu;
  wxMenu *helpMenu = new wxMenu;
  helpMenu->Append(wxID_ABOUT, wxT("&About...\tF1"), wxT("Show about dialog"));
  fileMenu->Append(wxID_EXIT, wxT("E&xit...\tAlt-X"), wxT("Quit this program"));
  wxMenuBar *menuBar = new wxMenuBar();
  menuBar->Append(fileMenu, wxT("&File"));
  menuBar->Append(helpMenu, wxT("&Help"));
  SetMenuBar(menuBar);
  wxButton *button = new wxButton(this, wxID_OK, wxT("OK"),wxPoint(0,0));
  CreateStatusBar(2);
//  SetStatusText(wxT("Welcome to wxWidget!"));
}
Как можно видеть OnSize берет текущий размер и печатает его в строку статуса:

Screenshot from 2025-02-11 23-18-46.png
Screenshot from 2025-02-11 23-18-46.png (11.95 KiB) Viewed 2756 times

Если схватить окошко за правый-нижний угол и подвигать, то можно тем самым менять размер:

Screenshot from 2025-02-11 23-18-58.png
Screenshot from 2025-02-11 23-18-58.png (14.65 KiB) Viewed 2756 times

А если нажать на кнопку, то в строке статуса появится соответствующий текст:

Screenshot from 2025-02-11 23-19-10.png
Screenshot from 2025-02-11 23-19-10.png (13.67 KiB) Viewed 2756 times

Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23892
Joined: 09 Jan 2003 06:22
Location: Silicon Valley
Contact:

Re: Кодим с wxWidgets

Post by Shaos »

Убираем кнопку и добавляем обработчик OnMotion :mrgreen:

Code: Select all

// wxWidgets sample #3

#include "wx/wx.h"

class MyApp : public wxApp
{
 public:
  virtual bool OnInit();
};

class MyFrame : public wxFrame
{
 public:
  MyFrame(const wxString& title);
  void OnQuit(wxCommandEvent& event);
  void OnAbout(wxCommandEvent& event);
  void OnSize(wxSizeEvent& event);
  void OnMotion(wxMouseEvent& event);
 private:
  DECLARE_EVENT_TABLE()
};

DECLARE_APP(MyApp)

IMPLEMENT_APP(MyApp)

bool MyApp::OnInit()
{
  MyFrame *frame = new MyFrame(wxT("My wxWidets App"));
  frame->Show(true);
  return true;
}

BEGIN_EVENT_TABLE(MyFrame, wxFrame)
  EVT_MENU(wxID_ABOUT, MyFrame::OnAbout)
  EVT_MENU(wxID_EXIT,  MyFrame::OnQuit)
  EVT_SIZE(            MyFrame::OnSize)
  EVT_MOTION(          MyFrame::OnMotion)
END_EVENT_TABLE()

void MyFrame::OnAbout(wxCommandEvent& event)
{
  wxString msg;
  msg.Printf(wxT("Hello and welcome to %s"), wxVERSION_STRING);
  wxMessageBox(msg, wxT("About wxWidgets"), wxOK | wxICON_INFORMATION, this);
}

void MyFrame::OnQuit(wxCommandEvent& event)
{
  Close();
}

void MyFrame::OnSize(wxSizeEvent& event)
{
  wxSize size = GetSize();
  int dx = size.GetWidth();
  int dy = size.GetHeight();
  char str[16];
  sprintf(str,"OnSize %d:%d",dx,dy);
  SetStatusText(str);
}

void MyFrame::OnMotion(wxMouseEvent& event)
{
  if(event.Dragging())
  {
    wxClientDC dc(this);
    wxPen pen(*wxBLACK, 1);
    dc.SetPen(pen);
    wxPoint point = event.GetPosition();
    dc.DrawPoint(point);
    dc.SetPen(wxNullPen);
    char str[16];
    sprintf(str,"Draw %d:%d",point.x,point.y);
    SetStatusText(str);
  }
}

const
#include "icon16x16.xpm"

MyFrame::MyFrame(const wxString& title) : wxFrame(NULL, wxID_ANY, title)
{
  SetIcon(wxIcon(icon16x16_xpm));
  wxMenu *fileMenu = new wxMenu;
  wxMenu *helpMenu = new wxMenu;
  helpMenu->Append(wxID_ABOUT, wxT("&About...\tF1"), wxT("Show about dialog"));
  fileMenu->Append(wxID_EXIT, wxT("E&xit...\tAlt-X"), wxT("Quit this program"));
  wxMenuBar *menuBar = new wxMenuBar();
  menuBar->Append(fileMenu, wxT("&File"));
  menuBar->Append(helpMenu, wxT("&Help"));
  SetMenuBar(menuBar);
  CreateStatusBar(2);
}
Теперь в нашем аппе можно рисовать мышью :rotate:
Attachments

Screenshot from 2025-02-12 00-56-46.png
Screenshot from 2025-02-12 00-56-46.png (13.55 KiB) Viewed 2742 times

Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23892
Joined: 09 Jan 2003 06:22
Location: Silicon Valley
Contact:

Re: Кодим с wxWidgets

Post by Shaos »

Проблема вышеприведённого кода состоит в том, что рисование ведётся прямо в окно и если окно перекрыть другим окном, то нарисованное в перекрытой части очистится. Чтобы сохранить нарисованное надо завести графический контекст в памяти - вот пример, когда мы в конструкторе создаём битмап размером 2048 на 2048 и приделываем его к контексту в памяти, куда мы собственно и рисуем и который копируется в окно каждый раз, когда происходит вызов обработчика OnPaint (если окно перекрылось, а потом открылось, а также в случае изменения размеров окна или при явном вызове через метод Refresh):

Code: Select all

// wxWidgets sample #4

#include "wx/wx.h"

class MyApp : public wxApp
{
 public:
  virtual bool OnInit();
};

class MyFrame : public wxFrame
{
  int memdc_width;
  int memdc_height;
  wxMemoryDC *memdc;
  wxBitmap *bm;
 public:
  MyFrame(const wxString& title);
  void OnQuit(wxCommandEvent& event);
  void OnAbout(wxCommandEvent& event);
  void OnSize(wxSizeEvent& event);
  void OnMotion(wxMouseEvent& event);
  void OnPaint(wxPaintEvent& event);
 private:
  DECLARE_EVENT_TABLE()
};

DECLARE_APP(MyApp)

IMPLEMENT_APP(MyApp)

bool MyApp::OnInit()
{
  MyFrame *frame = new MyFrame(wxT("My wxWidets App"));
  frame->Show(true);
  return true;
}

BEGIN_EVENT_TABLE(MyFrame, wxFrame)
  EVT_MENU(wxID_ABOUT, MyFrame::OnAbout)
  EVT_MENU(wxID_EXIT,  MyFrame::OnQuit)
  EVT_SIZE(            MyFrame::OnSize)
  EVT_MOTION(          MyFrame::OnMotion)
  EVT_PAINT(           MyFrame::OnPaint)
END_EVENT_TABLE()

void MyFrame::OnAbout(wxCommandEvent& event)
{
  wxString msg;
  msg.Printf(wxT("Hello and welcome to %s"), wxVERSION_STRING);
  wxMessageBox(msg, wxT("About wxWidgets"), wxOK | wxICON_INFORMATION, this);
}

void MyFrame::OnQuit(wxCommandEvent& event)
{
  Close();
}

void MyFrame::OnSize(wxSizeEvent& event)
{
  wxSize size = GetSize();
  int dx = size.GetWidth();
  int dy = size.GetHeight();
  char str[16];
  sprintf(str,"OnSize %d:%d",dx,dy);
  SetStatusText(str);
}

void MyFrame::OnMotion(wxMouseEvent& event)
{
  if(event.Dragging())
  {
    wxPen pen(*wxBLACK, 1);
    memdc->SetPen(pen);
    wxPoint point = event.GetPosition();
//    printf("Draw %d:%d\n",point.x,point.y);
    memdc->DrawPoint(point);
    memdc->SetPen(wxNullPen);
    Refresh();
  }
}

void MyFrame::OnPaint(wxPaintEvent& event)
{
  int width, height;
  GetSize(&width,&height);
  wxPaintDC dc(this);
//  dc.SetClippingRegion(GetUpdateRegion());
  dc.Blit(0, 0, width, height, memdc, 0, 0);
//  printf("Paint %d:%d\n",width,height);
}

const
#include "icon16x16.xpm"

MyFrame::MyFrame(const wxString& title) : wxFrame(NULL, wxID_ANY, title)
{
  SetIcon(wxIcon(icon16x16_xpm));
  wxMenu *fileMenu = new wxMenu;
  wxMenu *helpMenu = new wxMenu;
  helpMenu->Append(wxID_ABOUT, wxT("&About...\tF1"), wxT("Show about dialog"));
  fileMenu->Append(wxID_EXIT, wxT("E&xit...\tAlt-X"), wxT("Quit this program"));
  wxMenuBar *menuBar = new wxMenuBar();
  menuBar->Append(fileMenu, wxT("&File"));
  menuBar->Append(helpMenu, wxT("&Help"));
  SetMenuBar(menuBar);
  CreateStatusBar(2);
  SetStatusText(wxT("Welcome to wxWidgets!"));
  memdc = new wxMemoryDC;
  memdc_width = 2048;
  memdc_height = 2048;
  bm = new wxBitmap(memdc_width,memdc_height,-1);
  memdc->SelectObject(*bm);
  memdc->SetBackground(*wxWHITE_BRUSH);
  memdc->Clear();
}
После того как что-то нарисовали можно перекрыть нарисованное:

Screenshot from 2025-02-12 19-51-07.png
Screenshot from 2025-02-12 19-51-07.png (13.93 KiB) Viewed 2706 times

И после закрытия перекрытия нарисованное снова проявится:

Screenshot from 2025-02-12 19-51-22.png
Screenshot from 2025-02-12 19-51-22.png (12.08 KiB) Viewed 2706 times

Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23892
Joined: 09 Jan 2003 06:22
Location: Silicon Valley
Contact:

Re: Кодим с wxWidgets

Post by Shaos »

Попробовал вышеизложенные примеры в MacOS (через brew) - всё собралось, но выглядит оно там иначе:

wxMac.jpg
wxMac.jpg (108.97 KiB) Viewed 2663 times

Во-первых, нету иконки нигде!

Во-вторых, меню там по маковски уходит наверх экрана и наш пункт меню Help с одним подпунктом About и пункт меню File с одним подпунктом Exit не получились - тот Help что нарисовался имеет только маковскую опцию Search, подменю File получилось пустым, а пункты About и Exit воткнулись в подменю wx4.

В-третьих, при увеличении окна больше, чем размер графического контекста в памяти (2048х2048) приложение крашится внутри метода OnSize:

 crash

Code: Select all

-------------------------------------
Translated Report (Full Report Below)
-------------------------------------

Process:               wx4 [33098]
Path:                  /Users/USER/*/wx4
Identifier:            wx4
Version:               ???
Code Type:             ARM-64 (Native)
Parent Process:        zsh [30106]
Responsible:           Terminal [1512]
User ID:               501

Date/Time:             2025-02-16 01:00:33.3895 -0800
OS Version:            macOS 15.3.1 (24D70)
Report Version:        12
Anonymous UUID:        F518E8EB-13A2-AD6E-85A7-144693E92704

Sleep/Wake UUID:       0A8B9223-9288-4991-8E06-0A985E918030

Time Awake Since Boot: 33000 seconds
Time Since Wake:       3520 seconds

System Integrity Protection: enabled

Crashed Thread:        0  Dispatch queue: com.apple.main-thread

Exception Type:        EXC_CRASH (SIGABRT)
Exception Codes:       0x0000000000000000, 0x0000000000000000

Termination Reason:    Namespace SIGNAL, Code 6 Abort trap: 6
Terminating Process:   wx4 [33098]

Application Specific Information:
stack buffer overflow


Thread 0 Crashed::  Dispatch queue: com.apple.main-thread
0   libsystem_kernel.dylib        	       0x197d23720 __pthread_kill + 8
1   libsystem_pthread.dylib       	       0x197d5bf70 pthread_kill + 288
2   libsystem_c.dylib             	       0x197c6899c __abort + 136
3   libsystem_c.dylib             	       0x197c59e74 __stack_chk_fail + 96
4   wx4                           	       0x1044244c8 MyFrame::OnSize(wxSizeEvent&) + 236
5   libwx_baseu-3.2.0.3.0.dylib   	       0x104be1004 wxEvtHandler::ProcessEventIfMatchesId(wxEventTableEntryBase const&, wxEvtHandler*, wxEvent&) + 112
6   libwx_baseu-3.2.0.3.0.dylib   	       0x104be0ecc wxEventHashTable::HandleEvent(wxEvent&, wxEvtHandler*) + 140
7   libwx_baseu-3.2.0.3.0.dylib   	       0x104be2280 wxEvtHandler::TryHereOnly(wxEvent&) + 80
8   libwx_baseu-3.2.0.3.0.dylib   	       0x104be217c wxEvtHandler::ProcessEventLocally(wxEvent&) + 48
9   libwx_baseu-3.2.0.3.0.dylib   	       0x104be2030 wxEvtHandler::ProcessEvent(wxEvent&) + 56
10  libwx_baseu-3.2.0.3.0.dylib   	       0x104be1e60 wxEvtHandler::SafelyProcessEvent(wxEvent&) + 24
11  libwx_osx_cocoau_core-3.2.0.3.0.dylib	       0x10511b3f0 wxWindowBase::SendSizeEvent(int) + 128
12  libwx_osx_cocoau_core-3.2.0.3.0.dylib	       0x104f9fe80 wxNonOwnedWindow::HandleResized(double) + 32
13  CoreFoundation                	       0x197e39370 __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__ + 148
14  CoreFoundation                	       0x197eca20c ___CFXRegistrationPost_block_invoke + 88
15  CoreFoundation                	       0x197eca154 _CFXRegistrationPost + 436
16  CoreFoundation                	       0x197e07fac _CFXNotificationPost + 732
17  Foundation                    	       0x198fc26b8 -[NSNotificationCenter postNotificationName:object:userInfo:] + 88
18  AppKit                        	       0x19b9fdd78 -[NSWindow _setFrameCommon:display:fromServer:] + 2868
19  AppKit                        	       0x19bc8f894 -[NSWindow(NSWindowResizing) _resizeWithEvent:] + 1680
20  AppKit                        	       0x19bbb0ec8 -[NSTitledFrame attemptResizeWithEvent:] + 156
21  AppKit                        	       0x19bbb0ce0 -[NSThemeFrame handleMouseDown:] + 196
22  AppKit                        	       0x19bc26404 -[NSThemeFrame mouseDown:] + 32
23  AppKit                        	       0x19bb560f0 -[NSWindow(NSEventRouting) _handleMouseDownEvent:isDelayedEvent:] + 3672
24  AppKit                        	       0x19bae16f8 -[NSWindow(NSEventRouting) _reallySendEvent:isDelayedEvent:] + 384
25  AppKit                        	       0x19bae13a8 -[NSWindow(NSEventRouting) sendEvent:] + 284
26  libwx_osx_cocoau_core-3.2.0.3.0.dylib	       0x1050300d8 -[wxNSWindow sendEvent:] + 116
27  AppKit                        	       0x19c31fa08 -[NSApplication(NSEventRouting) sendEvent:] + 1656
28  libwx_osx_cocoau_core-3.2.0.3.0.dylib	       0x104f9b8b0 -[wxNSApplication sendEvent:] + 84
29  AppKit                        	       0x19bf26b04 -[NSApplication _handleEvent:] + 60
30  AppKit                        	       0x19b9ad89c -[NSApplication run] + 520
31  libwx_osx_cocoau_core-3.2.0.3.0.dylib	       0x1050282e4 wxGUIEventLoop::OSXDoRun() + 112
32  libwx_baseu-3.2.0.3.0.dylib   	       0x104bc2cd8 wxCFEventLoop::DoRun() + 40
33  libwx_baseu-3.2.0.3.0.dylib   	       0x104b3a8d0 wxEventLoopBase::Run() + 192
34  libwx_baseu-3.2.0.3.0.dylib   	       0x104b109dc wxAppConsoleBase::MainLoop() + 96
35  libwx_osx_cocoau_core-3.2.0.3.0.dylib	       0x104fd7a04 wxApp::OnRun() + 36
36  libwx_baseu-3.2.0.3.0.dylib   	       0x104b63954 wxEntry(int&, wchar_t**) + 100
37  wx4                           	       0x104423dc8 main + 40
38  dyld                          	       0x1979dc274 start + 2840

Thread 1:: com.apple.NSEventThread
0   libsystem_kernel.dylib        	       0x197d1af54 mach_msg2_trap + 8
1   libsystem_kernel.dylib        	       0x197d2d604 mach_msg2_internal + 80
2   libsystem_kernel.dylib        	       0x197d23af8 mach_msg_overwrite + 480
3   libsystem_kernel.dylib        	       0x197d1b29c mach_msg + 24
4   CoreFoundation                	       0x197e44a4c __CFRunLoopServiceMachPort + 160
5   CoreFoundation                	       0x197e432ac __CFRunLoopRun + 1212
6   CoreFoundation                	       0x197e42734 CFRunLoopRunSpecific + 588
7   AppKit                        	       0x19badf278 _NSEventThread + 148
8   libsystem_pthread.dylib       	       0x197d5c2e4 _pthread_start + 136
9   libsystem_pthread.dylib       	       0x197d570fc thread_start + 8

Thread 2:
0   libsystem_pthread.dylib       	       0x197d570e8 start_wqthread + 0

Thread 3:
0   libsystem_pthread.dylib       	       0x197d570e8 start_wqthread + 0

Thread 4:
0   libsystem_pthread.dylib       	       0x197d570e8 start_wqthread + 0

Thread 5:
0   libsystem_pthread.dylib       	       0x197d570e8 start_wqthread + 0


Thread 0 crashed with ARM Thread State (64-bit):
    x0: 0x0000000000000000   x1: 0x0000000000000000   x2: 0x0000000000000000   x3: 0x0000000000000000
    x4: 0x0000000000000000   x5: 0x0000000000000000   x6: 0x0000000000000000   x7: 0x0000000197c6f560
    x8: 0xcf70b5445e6b5a45   x9: 0xcf70b5465f079205  x10: 0x00000000000000cb  x11: 0x0000000000001270
   x12: 0x00000000000007fb  x13: 0x00000000000007fd  x14: 0x00000000cd62703c  x15: 0x00000000cd426836
   x16: 0x0000000000000148  x17: 0x0000000209d0e2c0  x18: 0x0000000000000000  x19: 0x0000000000000006
   x20: 0x0000000000000103  x21: 0x00000002016cc920  x22: 0x0000000000000000  x23: 0x0000000000000002
   x24: 0x0000000000000000  x25: 0x0000000000041400  x26: 0x0000000000000000  x27: 0x000000370000002e
   x28: 0x000000016b9de108   fp: 0x000000016b9ddd40   lr: 0x0000000197d5bf70
    sp: 0x000000016b9ddd20   pc: 0x0000000197d23720 cpsr: 0x40001000
   far: 0x0000000000000000  esr: 0x56000080  Address size fault

Binary Images:
       0x104420000 -        0x10442bfff wx4 (*) <2d80d802-def7-383f-aba3-d4c1778236fc> /Users/USER/*/wx4
       0x10451c000 -        0x10458ffff libwx_osx_cocoau_xrc-3.2.0.3.0.dylib (*) <0af25311-5a34-3cf7-80df-d14c38780c5d> /opt/homebrew/*/libwx_osx_cocoau_xrc-3.2.0.3.0.dylib
       0x1045f4000 -        0x10464ffff libwx_osx_cocoau_html-3.2.0.3.0.dylib (*) <bd630658-8d30-3200-9799-962b13b27d93> /opt/homebrew/*/libwx_osx_cocoau_html-3.2.0.3.0.dylib
       0x10447c000 -        0x104493fff libwx_osx_cocoau_qa-3.2.0.3.0.dylib (*) <aca18afe-db59-3fc0-8af9-4ae7a21c7d8d> /opt/homebrew/*/libwx_osx_cocoau_qa-3.2.0.3.0.dylib
       0x104f84000 -        0x1052fbfff libwx_osx_cocoau_core-3.2.0.3.0.dylib (*) <3ce296af-6f3a-3ad9-a3b9-35ebab00aea3> /opt/homebrew/*/libwx_osx_cocoau_core-3.2.0.3.0.dylib
       0x1044b4000 -        0x1044bffff libwx_baseu_xml-3.2.0.3.0.dylib (*) <fab0ef8d-626b-3efa-8ee7-f56d63e01f67> /opt/homebrew/*/libwx_baseu_xml-3.2.0.3.0.dylib
       0x104714000 -        0x104747fff libwx_baseu_net-3.2.0.3.0.dylib (*) <a08f04c1-cb2a-33b9-9122-b6469826d26f> /opt/homebrew/*/libwx_baseu_net-3.2.0.3.0.dylib
       0x104b08000 -        0x104c33fff libwx_baseu-3.2.0.3.0.dylib (*) <89d9067c-8e5f-325c-aa61-58721d927775> /opt/homebrew/*/libwx_baseu-3.2.0.3.0.dylib
       0x1046b0000 -        0x1046d7fff libpng16.16.dylib (*) <e0434504-cd4b-32b6-8a3f-272d3e4a236b> /opt/homebrew/*/libpng16.16.dylib
       0x1047ec000 -        0x104847fff libjpeg.8.3.2.dylib (*) <905d524c-0642-3b18-95ed-cd3a79553001> /opt/homebrew/*/libjpeg.8.3.2.dylib
       0x1049a4000 -        0x104a07fff libtiff.6.dylib (*) <b82d8039-c589-3775-a450-26790d5b7f6b> /opt/homebrew/*/libtiff.6.dylib
       0x104a28000 -        0x104a8ffff libpcre2-32.0.dylib (*) <b225cb8e-effa-3aed-92ca-f1ff66dfb443> /opt/homebrew/*/libpcre2-32.0.dylib
       0x104d94000 -        0x104e1bfff libzstd.1.5.6.dylib (*) <f070d24c-56b5-394b-831d-191725bc4cba> /opt/homebrew/*/libzstd.1.5.6.dylib
       0x1044d4000 -        0x1044f3fff liblzma.5.dylib (*) <822a30a1-fbe1-38b4-b10d-4e2ae22ae8ad> /opt/homebrew/*/liblzma.5.dylib
       0x104eb4000 -        0x104ebffff libobjc-trampolines.dylib (*) <3d687e9b-e092-3632-bc1d-74b19d492de0> /usr/lib/libobjc-trampolines.dylib
       0x10aed0000 -        0x10b573fff com.apple.AGXMetal13-3 (324.6) <4127f44c-9853-3b87-b300-dc4614ed8bcc> /System/Library/Extensions/AGXMetal13_3.bundle/Contents/MacOS/AGXMetal13_3
       0x197d1a000 -        0x197d54ff7 libsystem_kernel.dylib (*) <eee9d0d3-dffc-37cb-9ced-b27cd0286d8c> /usr/lib/system/libsystem_kernel.dylib
       0x197d55000 -        0x197d61fff libsystem_pthread.dylib (*) <642faf7a-874e-37e6-8aba-2b0cc09a3025> /usr/lib/system/libsystem_pthread.dylib
       0x197bef000 -        0x197c70ffb libsystem_c.dylib (*) <92699527-645f-3d8d-aed8-1cfb0c034e15> /usr/lib/system/libsystem_c.dylib
       0x197dc7000 -        0x1982bbfff com.apple.CoreFoundation (6.9) <190e6a36-fcaa-3ea3-94bb-7009c44653da> /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation
       0x198fb9000 -        0x199e00fff com.apple.Foundation (6.9) <16d282d0-8b48-3e76-8036-fcb45dece518> /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation
       0x19b97f000 -        0x19cdbbfff com.apple.AppKit (6.9) <b88a44c1-d617-33dc-90ed-b6ab417c428e> /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit
       0x1979d6000 -        0x197a57f3f dyld (*) <398a133c-9bcb-317f-a064-a40d3cea3c0f> /usr/lib/dyld
               0x0 - 0xffffffffffffffff ??? (*) <00000000-0000-0000-0000-000000000000> ???

External Modification Summary:
  Calls made by other processes targeting this process:
    task_for_pid: 0
    thread_create: 0
    thread_set_state: 0
  Calls made by this process:
    task_for_pid: 0
    thread_create: 0
    thread_set_state: 0
  Calls made by all processes on this machine:
    task_for_pid: 0
    thread_create: 0
    thread_set_state: 0

VM Region Summary:
ReadOnly portion of Libraries: Total=1.6G resident=0K(0%) swapped_out_or_unallocated=1.6G(100%)
Writable regions: Total=1.4G written=787K(0%) resident=787K(0%) swapped_out=0K(0%) unallocated=1.4G(100%)

                                VIRTUAL   REGION 
REGION TYPE                        SIZE    COUNT (non-coalesced) 
===========                     =======  ======= 
Accelerate framework               128K        1 
Activity Tracing                   256K        1 
CG image                          16.5M       22 
CG raster data                    7984K        3 
ColorSync                          672K       34 
CoreAnimation                      800K       36 
CoreGraphics                        48K        3 
CoreUI image data                 1952K       14 
Foundation                          48K        2 
Kernel Alloc Once                   32K        1 
MALLOC                             1.3G       50 
MALLOC guard page                  192K       12 
STACK GUARD                       56.1M        6 
Stack                             10.6M        6 
VM_ALLOCATE                        144K        9 
__AUTH                            5139K      660 
__AUTH_CONST                      69.4M      900 
__CTF                               824        1 
__DATA                            24.4M      891 
__DATA_CONST                      24.6M      922 
__DATA_DIRTY                      2748K      333 
__FONT_DATA                        2352        1 
__INFO_FILTER                         8        1 
__LINKEDIT                       612.0M       17 
__OBJC_RW                         2374K        1 
__TEXT                             1.0G      943 
__TPRO_CONST                       272K        2 
mapped file                      511.8M       47 
owned unmapped memory              432K        1 
page table in kernel               787K        1 
shared memory                      880K       15 
===========                     =======  ======= 
TOTAL                              3.7G     4936 



-----------
Full Report
-----------

{"app_name":"wx4","timestamp":"2025-02-16 01:00:35.00 -0800","app_version":"","sroute_id":4,"slice_uuid":"2d80d802-def7-383f-aba3-d4c1778236fc","build_version":"","platform":1,"share_with_app_devs":1,"is_first_party":1,"bug_type":"309","os_version":"macOS 15.3.1 (24D70)","roots_installed":0,"incident_id":"CC1EBEC1-EF82-4CE0-B448-2F114F02F282","name":"wx4"}
{
  "uptime" : 33000,
  "procRole" : "Foreground",
  "version" : 2,
  "userID" : 501,
  "deployVersion" : 210,
  "modelCode" : "Macmini9,1",
  "coalitionID" : 1818,
  "osVersion" : {
    "train" : "macOS 15.3.1",
    "build" : "24D70",
    "releaseType" : "User"
  },
  "captureTime" : "2025-02-16 01:00:33.3895 -0800",
  "codeSigningMonitor" : 1,
  "incident" : "CC1EBEC1-EF82-4CE0-B448-2F114F02F282",
  "pid" : 33098,
  "translated" : false,
  "cpuType" : "ARM-64",
  "roots_installed" : 0,
  "bug_type" : "309",
  "procLaunch" : "2025-02-16 00:58:54.7541 -0800",
  "procStartAbsTime" : 811485062615,
  "procExitAbsTime" : 813852329647,
  "procName" : "wx4",
  "procPath" : "\/Users\/USER\/*\/wx4",
  "parentProc" : "zsh",
  "parentPid" : 30106,
  "coalitionName" : "com.apple.Terminal",
  "crashReporterKey" : "F518E8EB-13A2-AD6E-85A7-144693E92704",
  "responsiblePid" : 1512,
  "responsibleProc" : "Terminal",
  "codeSigningID" : "wx4",
  "codeSigningTeamID" : "",
  "codeSigningFlags" : 570556929,
  "codeSigningValidationCategory" : 10,
  "codeSigningTrustLevel" : 4294967295,
  "instructionByteStream" : {"beforePC":"fyMD1f17v6n9AwCRcuD\/l78DAJH9e8Go\/w9f1sADX9YQKYDSARAA1A==","atPC":"AwEAVH8jA9X9e7+p\/QMAkWfg\/5e\/AwCR\/XvBqP8PX9bAA1\/WcAqA0g=="},
  "bootSessionUUID" : "5B303525-B557-4048-89BA-A589E1B5F048",
  "wakeTime" : 3520,
  "sleepWakeUUID" : "0A8B9223-9288-4991-8E06-0A985E918030",
  "sip" : "enabled",
  "sroute_id" : 4,
  "exception" : {"codes":"0x0000000000000000, 0x0000000000000000","rawCodes":[0,0],"type":"EXC_CRASH","signal":"SIGABRT"},
  "termination" : {"flags":0,"code":6,"namespace":"SIGNAL","indicator":"Abort trap: 6","byProc":"wx4","byPid":33098},
  "asi" : {"libsystem_c.dylib":["stack buffer overflow"]},
  "extMods" : {"caller":{"thread_create":0,"thread_set_state":0,"task_for_pid":0},"system":{"thread_create":0,"thread_set_state":0,"task_for_pid":0},"targeted":{"thread_create":0,"thread_set_state":0,"task_for_pid":0},"warnings":0},
  "faultingThread" : 0,
  "threads" : [{"triggered":true,"id":725796,"threadState":{"x":[{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":6841365856,"symbolLocation":2518,"symbol":"hexlist"},{"value":14947646468489173573},{"value":14947646477089346053},{"value":203},{"value":4720},{"value":2043},{"value":2045},{"value":3445780540},{"value":3443681334},{"value":328},{"value":8754619072},{"value":0},{"value":6},{"value":259},{"value":8613841184,"symbolLocation":224,"symbol":"_main_thread"},{"value":0},{"value":2},{"value":0},{"value":267264},{"value":0},{"value":236223201326},{"value":6100476168}],"flavor":"ARM_THREAD_STATE64","lr":{"value":6842335088},"cpsr":{"value":1073745920},"fp":{"value":6100475200},"sp":{"value":6100475168},"esr":{"value":1442840704,"description":" Address size fault"},"pc":{"value":6842103584,"matchesCrashFrame":1},"far":{"value":0}},"queue":"com.apple.main-thread","frames":[{"imageOffset":38688,"symbol":"__pthread_kill","symbolLocation":8,"imageIndex":16},{"imageOffset":28528,"symbol":"pthread_kill","symbolLocation":288,"imageIndex":17},{"imageOffset":498076,"symbol":"__abort","symbolLocation":136,"imageIndex":18},{"imageOffset":437876,"symbol":"__stack_chk_fail","symbolLocation":96,"imageIndex":18},{"imageOffset":17608,"symbol":"MyFrame::OnSize(wxSizeEvent&)","symbolLocation":236,"imageIndex":0},{"imageOffset":888836,"symbol":"wxEvtHandler::ProcessEventIfMatchesId(wxEventTableEntryBase const&, wxEvtHandler*, wxEvent&)","symbolLocation":112,"imageIndex":7},{"imageOffset":888524,"symbol":"wxEventHashTable::HandleEvent(wxEvent&, wxEvtHandler*)","symbolLocation":140,"imageIndex":7},{"imageOffset":893568,"symbol":"wxEvtHandler::TryHereOnly(wxEvent&)","symbolLocation":80,"imageIndex":7},{"imageOffset":893308,"symbol":"wxEvtHandler::ProcessEventLocally(wxEvent&)","symbolLocation":48,"imageIndex":7},{"imageOffset":892976,"symbol":"wxEvtHandler::ProcessEvent(wxEvent&)","symbolLocation":56,"imageIndex":7},{"imageOffset":892512,"symbol":"wxEvtHandler::SafelyProcessEvent(wxEvent&)","symbolLocation":24,"imageIndex":7},{"imageOffset":1668080,"symbol":"wxWindowBase::SendSizeEvent(int)","symbolLocation":128,"imageIndex":4},{"imageOffset":114304,"symbol":"wxNonOwnedWindow::HandleResized(double)","symbolLocation":32,"imageIndex":4},{"imageOffset":467824,"symbol":"__CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__","symbolLocation":148,"imageIndex":19},{"imageOffset":1061388,"symbol":"___CFXRegistrationPost_block_invoke","symbolLocation":88,"imageIndex":19},{"imageOffset":1061204,"symbol":"_CFXRegistrationPost","symbolLocation":436,"imageIndex":19},{"imageOffset":266156,"symbol":"_CFXNotificationPost","symbolLocation":732,"imageIndex":19},{"imageOffset":38584,"symbol":"-[NSNotificationCenter postNotificationName:object:userInfo:]","symbolLocation":88,"imageIndex":20},{"imageOffset":519544,"symbol":"-[NSWindow _setFrameCommon:display:fromServer:]","symbolLocation":2868,"imageIndex":21},{"imageOffset":3213460,"symbol":"-[NSWindow(NSWindowResizing) _resizeWithEvent:]","symbolLocation":1680,"imageIndex":21},{"imageOffset":2301640,"symbol":"-[NSTitledFrame attemptResizeWithEvent:]","symbolLocation":156,"imageIndex":21},{"imageOffset":2301152,"symbol":"-[NSThemeFrame handleMouseDown:]","symbolLocation":196,"imageIndex":21},{"imageOffset":2782212,"symbol":"-[NSThemeFrame mouseDown:]","symbolLocation":32,"imageIndex":21},{"imageOffset":1929456,"symbol":"-[NSWindow(NSEventRouting) _handleMouseDownEvent:isDelayedEvent:]","symbolLocation":3672,"imageIndex":21},{"imageOffset":1451768,"symbol":"-[NSWindow(NSEventRouting) _reallySendEvent:isDelayedEvent:]","symbolLocation":384,"imageIndex":21},{"imageOffset":1450920,"symbol":"-[NSWindow(NSEventRouting) sendEvent:]","symbolLocation":284,"imageIndex":21},{"imageOffset":704728,"symbol":"-[wxNSWindow sendEvent:]","symbolLocation":116,"imageIndex":4},{"imageOffset":10095112,"symbol":"-[NSApplication(NSEventRouting) sendEvent:]","symbolLocation":1656,"imageIndex":21},{"imageOffset":96432,"symbol":"-[wxNSApplication sendEvent:]","symbolLocation":84,"imageIndex":4},{"imageOffset":5929732,"symbol":"-[NSApplication _handleEvent:]","symbolLocation":60,"imageIndex":21},{"imageOffset":190620,"symbol":"-[NSApplication run]","symbolLocation":520,"imageIndex":21},{"imageOffset":672484,"symbol":"wxGUIEventLoop::OSXDoRun()","symbolLocation":112,"imageIndex":4},{"imageOffset":765144,"symbol":"wxCFEventLoop::DoRun()","symbolLocation":40,"imageIndex":7},{"imageOffset":207056,"symbol":"wxEventLoopBase::Run()","symbolLocation":192,"imageIndex":7},{"imageOffset":35292,"symbol":"wxAppConsoleBase::MainLoop()","symbolLocation":96,"imageIndex":7},{"imageOffset":342532,"symbol":"wxApp::OnRun()","symbolLocation":36,"imageIndex":4},{"imageOffset":375124,"symbol":"wxEntry(int&, wchar_t**)","symbolLocation":100,"imageIndex":7},{"imageOffset":15816,"symbol":"main","symbolLocation":40,"imageIndex":0},{"imageOffset":25204,"symbol":"start","symbolLocation":2840,"imageIndex":22}]},{"id":725813,"name":"com.apple.NSEventThread","threadState":{"x":[{"value":268451845},{"value":21592279046},{"value":8589934592,"symbolLocation":227536,"symbol":"apple::vision::libraries::facecore::mod::keypoints::secondEyeNegPcaModes"},{"value":115461605818368},{"value":0},{"value":115461605818368},{"value":2},{"value":4294967295},{"value":18446744073709550527},{"value":2},{"value":0},{"value":0},{"value":0},{"value":26883},{"value":0},{"value":0},{"value":18446744073709551569},{"value":8754601464},{"value":0},{"value":4294967295},{"value":2},{"value":115461605818368},{"value":0},{"value":115461605818368},{"value":6102179944},{"value":8589934592,"symbolLocation":227536,"symbol":"apple::vision::libraries::facecore::mod::keypoints::secondEyeNegPcaModes"},{"value":21592279046},{"value":21592279046},{"value":4412409862}],"flavor":"ARM_THREAD_STATE64","lr":{"value":6842144260},"cpsr":{"value":4096},"fp":{"value":6102179792},"sp":{"value":6102179712},"esr":{"value":1442840704,"description":" Address size fault"},"pc":{"value":6842068820},"far":{"value":0}},"frames":[{"imageOffset":3924,"symbol":"mach_msg2_trap","symbolLocation":8,"imageIndex":16},{"imageOffset":79364,"symbol":"mach_msg2_internal","symbolLocation":80,"imageIndex":16},{"imageOffset":39672,"symbol":"mach_msg_overwrite","symbolLocation":480,"imageIndex":16},{"imageOffset":4764,"symbol":"mach_msg","symbolLocation":24,"imageIndex":16},{"imageOffset":514636,"symbol":"__CFRunLoopServiceMachPort","symbolLocation":160,"imageIndex":19},{"imageOffset":508588,"symbol":"__CFRunLoopRun","symbolLocation":1212,"imageIndex":19},{"imageOffset":505652,"symbol":"CFRunLoopRunSpecific","symbolLocation":588,"imageIndex":19},{"imageOffset":1442424,"symbol":"_NSEventThread","symbolLocation":148,"imageIndex":21},{"imageOffset":29412,"symbol":"_pthread_start","symbolLocation":136,"imageIndex":17},{"imageOffset":8444,"symbol":"thread_start","symbolLocation":8,"imageIndex":17}]},{"id":725816,"frames":[{"imageOffset":8424,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":17}],"threadState":{"x":[{"value":6102757376},{"value":64283},{"value":6102220800},{"value":0},{"value":409604},{"value":18446744073709551615},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0}],"flavor":"ARM_THREAD_STATE64","lr":{"value":0},"cpsr":{"value":4096},"fp":{"value":0},"sp":{"value":6102757376},"esr":{"value":1442840704,"description":" Address size fault"},"pc":{"value":6842314984},"far":{"value":0}}},{"id":726050,"frames":[{"imageOffset":8424,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":17}],"threadState":{"x":[{"value":6103330816},{"value":83727},{"value":6102794240},{"value":0},{"value":409604},{"value":18446744073709551615},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0}],"flavor":"ARM_THREAD_STATE64","lr":{"value":0},"cpsr":{"value":4096},"fp":{"value":0},"sp":{"value":6103330816},"esr":{"value":1442840704,"description":" Address size fault"},"pc":{"value":6842314984},"far":{"value":0}}},{"id":726060,"frames":[{"imageOffset":8424,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":17}],"threadState":{"x":[{"value":6104477696},{"value":10479},{"value":6103941120},{"value":0},{"value":409604},{"value":18446744073709551615},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0}],"flavor":"ARM_THREAD_STATE64","lr":{"value":0},"cpsr":{"value":4096},"fp":{"value":0},"sp":{"value":6104477696},"esr":{"value":1442840704,"description":" Address size fault"},"pc":{"value":6842314984},"far":{"value":0}}},{"id":726061,"frames":[{"imageOffset":8424,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":17}],"threadState":{"x":[{"value":6105051136},{"value":0},{"value":6104514560},{"value":0},{"value":278532},{"value":18446744073709551615},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0}],"flavor":"ARM_THREAD_STATE64","lr":{"value":0},"cpsr":{"value":4096},"fp":{"value":0},"sp":{"value":6105051136},"esr":{"value":0,"description":" Address size fault"},"pc":{"value":6842314984},"far":{"value":0}}}],
  "usedImages" : [
  {
    "source" : "P",
    "arch" : "arm64",
    "base" : 4366401536,
    "size" : 49152,
    "uuid" : "2d80d802-def7-383f-aba3-d4c1778236fc",
    "path" : "\/Users\/USER\/*\/wx4",
    "name" : "wx4"
  },
  {
    "source" : "P",
    "arch" : "arm64",
    "base" : 4367433728,
    "size" : 475136,
    "uuid" : "0af25311-5a34-3cf7-80df-d14c38780c5d",
    "path" : "\/opt\/homebrew\/*\/libwx_osx_cocoau_xrc-3.2.0.3.0.dylib",
    "name" : "libwx_osx_cocoau_xrc-3.2.0.3.0.dylib"
  },
  {
    "source" : "P",
    "arch" : "arm64",
    "base" : 4368318464,
    "size" : 376832,
    "uuid" : "bd630658-8d30-3200-9799-962b13b27d93",
    "path" : "\/opt\/homebrew\/*\/libwx_osx_cocoau_html-3.2.0.3.0.dylib",
    "name" : "libwx_osx_cocoau_html-3.2.0.3.0.dylib"
  },
  {
    "source" : "P",
    "arch" : "arm64",
    "base" : 4366778368,
    "size" : 98304,
    "uuid" : "aca18afe-db59-3fc0-8af9-4ae7a21c7d8d",
    "path" : "\/opt\/homebrew\/*\/libwx_osx_cocoau_qa-3.2.0.3.0.dylib",
    "name" : "libwx_osx_cocoau_qa-3.2.0.3.0.dylib"
  },
  {
    "source" : "P",
    "arch" : "arm64",
    "base" : 4378345472,
    "size" : 3637248,
    "uuid" : "3ce296af-6f3a-3ad9-a3b9-35ebab00aea3",
    "path" : "\/opt\/homebrew\/*\/libwx_osx_cocoau_core-3.2.0.3.0.dylib",
    "name" : "libwx_osx_cocoau_core-3.2.0.3.0.dylib"
  },
  {
    "source" : "P",
    "arch" : "arm64",
    "base" : 4367007744,
    "size" : 49152,
    "uuid" : "fab0ef8d-626b-3efa-8ee7-f56d63e01f67",
    "path" : "\/opt\/homebrew\/*\/libwx_baseu_xml-3.2.0.3.0.dylib",
    "name" : "libwx_baseu_xml-3.2.0.3.0.dylib"
  },
  {
    "source" : "P",
    "arch" : "arm64",
    "base" : 4369498112,
    "size" : 212992,
    "uuid" : "a08f04c1-cb2a-33b9-9122-b6469826d26f",
    "path" : "\/opt\/homebrew\/*\/libwx_baseu_net-3.2.0.3.0.dylib",
    "name" : "libwx_baseu_net-3.2.0.3.0.dylib"
  },
  {
    "source" : "P",
    "arch" : "arm64",
    "base" : 4373643264,
    "size" : 1228800,
    "uuid" : "89d9067c-8e5f-325c-aa61-58721d927775",
    "path" : "\/opt\/homebrew\/*\/libwx_baseu-3.2.0.3.0.dylib",
    "name" : "libwx_baseu-3.2.0.3.0.dylib"
  },
  {
    "source" : "P",
    "arch" : "arm64",
    "base" : 4369088512,
    "size" : 163840,
    "uuid" : "e0434504-cd4b-32b6-8a3f-272d3e4a236b",
    "path" : "\/opt\/homebrew\/*\/libpng16.16.dylib",
    "name" : "libpng16.16.dylib"
  },
  {
    "source" : "P",
    "arch" : "arm64",
    "base" : 4370382848,
    "size" : 376832,
    "uuid" : "905d524c-0642-3b18-95ed-cd3a79553001",
    "path" : "\/opt\/homebrew\/*\/libjpeg.8.3.2.dylib",
    "name" : "libjpeg.8.3.2.dylib"
  },
  {
    "source" : "P",
    "arch" : "arm64",
    "base" : 4372185088,
    "size" : 409600,
    "uuid" : "b82d8039-c589-3775-a450-26790d5b7f6b",
    "path" : "\/opt\/homebrew\/*\/libtiff.6.dylib",
    "name" : "libtiff.6.dylib"
  },
  {
    "source" : "P",
    "arch" : "arm64",
    "base" : 4372725760,
    "size" : 425984,
    "uuid" : "b225cb8e-effa-3aed-92ca-f1ff66dfb443",
    "path" : "\/opt\/homebrew\/*\/libpcre2-32.0.dylib",
    "name" : "libpcre2-32.0.dylib"
  },
  {
    "source" : "P",
    "arch" : "arm64",
    "base" : 4376313856,
    "size" : 557056,
    "uuid" : "f070d24c-56b5-394b-831d-191725bc4cba",
    "path" : "\/opt\/homebrew\/*\/libzstd.1.5.6.dylib",
    "name" : "libzstd.1.5.6.dylib"
  },
  {
    "source" : "P",
    "arch" : "arm64",
    "base" : 4367138816,
    "size" : 131072,
    "uuid" : "822a30a1-fbe1-38b4-b10d-4e2ae22ae8ad",
    "path" : "\/opt\/homebrew\/*\/liblzma.5.dylib",
    "name" : "liblzma.5.dylib"
  },
  {
    "source" : "P",
    "arch" : "arm64e",
    "base" : 4377493504,
    "size" : 49152,
    "uuid" : "3d687e9b-e092-3632-bc1d-74b19d492de0",
    "path" : "\/usr\/lib\/libobjc-trampolines.dylib",
    "name" : "libobjc-trampolines.dylib"
  },
  {
    "source" : "P",
    "arch" : "arm64e",
    "base" : 4478271488,
    "CFBundleShortVersionString" : "324.6",
    "CFBundleIdentifier" : "com.apple.AGXMetal13-3",
    "size" : 6963200,
    "uuid" : "4127f44c-9853-3b87-b300-dc4614ed8bcc",
    "path" : "\/System\/Library\/Extensions\/AGXMetal13_3.bundle\/Contents\/MacOS\/AGXMetal13_3",
    "name" : "AGXMetal13_3",
    "CFBundleVersion" : "324.6"
  },
  {
    "source" : "P",
    "arch" : "arm64e",
    "base" : 6842064896,
    "size" : 241656,
    "uuid" : "eee9d0d3-dffc-37cb-9ced-b27cd0286d8c",
    "path" : "\/usr\/lib\/system\/libsystem_kernel.dylib",
    "name" : "libsystem_kernel.dylib"
  },
  {
    "source" : "P",
    "arch" : "arm64e",
    "base" : 6842306560,
    "size" : 53248,
    "uuid" : "642faf7a-874e-37e6-8aba-2b0cc09a3025",
    "path" : "\/usr\/lib\/system\/libsystem_pthread.dylib",
    "name" : "libsystem_pthread.dylib"
  },
  {
    "source" : "P",
    "arch" : "arm64e",
    "base" : 6840840192,
    "size" : 532476,
    "uuid" : "92699527-645f-3d8d-aed8-1cfb0c034e15",
    "path" : "\/usr\/lib\/system\/libsystem_c.dylib",
    "name" : "libsystem_c.dylib"
  },
  {
    "source" : "P",
    "arch" : "arm64e",
    "base" : 6842773504,
    "CFBundleShortVersionString" : "6.9",
    "CFBundleIdentifier" : "com.apple.CoreFoundation",
    "size" : 5197824,
    "uuid" : "190e6a36-fcaa-3ea3-94bb-7009c44653da",
    "path" : "\/System\/Library\/Frameworks\/CoreFoundation.framework\/Versions\/A\/CoreFoundation",
    "name" : "CoreFoundation",
    "CFBundleVersion" : "3302.1.400"
  },
  {
    "source" : "P",
    "arch" : "arm64e",
    "base" : 6861590528,
    "CFBundleShortVersionString" : "6.9",
    "CFBundleIdentifier" : "com.apple.Foundation",
    "size" : 14974976,
    "uuid" : "16d282d0-8b48-3e76-8036-fcb45dece518",
    "path" : "\/System\/Library\/Frameworks\/Foundation.framework\/Versions\/C\/Foundation",
    "name" : "Foundation",
    "CFBundleVersion" : "3302.1.400"
  },
  {
    "source" : "P",
    "arch" : "arm64e",
    "base" : 6905393152,
    "CFBundleShortVersionString" : "6.9",
    "CFBundleIdentifier" : "com.apple.AppKit",
    "size" : 21221376,
    "uuid" : "b88a44c1-d617-33dc-90ed-b6ab417c428e",
    "path" : "\/System\/Library\/Frameworks\/AppKit.framework\/Versions\/C\/AppKit",
    "name" : "AppKit",
    "CFBundleVersion" : "2575.40.6"
  },
  {
    "source" : "P",
    "arch" : "arm64e",
    "base" : 6838640640,
    "size" : 532288,
    "uuid" : "398a133c-9bcb-317f-a064-a40d3cea3c0f",
    "path" : "\/usr\/lib\/dyld",
    "name" : "dyld"
  },
  {
    "size" : 0,
    "source" : "A",
    "base" : 0,
    "uuid" : "00000000-0000-0000-0000-000000000000"
  }
],
  "sharedCache" : {
  "base" : 6837829632,
  "size" : 4865835008,
  "uuid" : "d272b91e-f9f0-3854-b5b9-508b21c25dcc"
},
  "vmSummary" : "ReadOnly portion of Libraries: Total=1.6G resident=0K(0%) swapped_out_or_unallocated=1.6G(100%)\nWritable regions: Total=1.4G written=787K(0%) resident=787K(0%) swapped_out=0K(0%) unallocated=1.4G(100%)\n\n                                VIRTUAL   REGION \nREGION TYPE                        SIZE    COUNT (non-coalesced) \n===========                     =======  ======= \nAccelerate framework               128K        1 \nActivity Tracing                   256K        1 \nCG image                          16.5M       22 \nCG raster data                    7984K        3 \nColorSync                          672K       34 \nCoreAnimation                      800K       36 \nCoreGraphics                        48K        3 \nCoreUI image data                 1952K       14 \nFoundation                          48K        2 \nKernel Alloc Once                   32K        1 \nMALLOC                             1.3G       50 \nMALLOC guard page                  192K       12 \nSTACK GUARD                       56.1M        6 \nStack                             10.6M        6 \nVM_ALLOCATE                        144K        9 \n__AUTH                            5139K      660 \n__AUTH_CONST                      69.4M      900 \n__CTF                               824        1 \n__DATA                            24.4M      891 \n__DATA_CONST                      24.6M      922 \n__DATA_DIRTY                      2748K      333 \n__FONT_DATA                        2352        1 \n__INFO_FILTER                         8        1 \n__LINKEDIT                       612.0M       17 \n__OBJC_RW                         2374K        1 \n__TEXT                             1.0G      943 \n__TPRO_CONST                       272K        2 \nmapped file                      511.8M       47 \nowned unmapped memory              432K        1 \npage table in kernel               787K        1 \nshared memory                      880K       15 \n===========                     =======  ======= \nTOTAL                              3.7G     4936 \n",
  "legacyInfo" : {
  "threadTriggered" : {
    "queue" : "com.apple.main-thread"
  }
},
  "logWritingSignature" : "d340a37652ed5bd4bbb7c11bea9ea0a960b83b64",
  "trialInfo" : {
  "rollouts" : [
    {
      "rolloutId" : "654d8c0661e7447155256fcd",
      "factorPackIds" : {
        "SIRI_TEXT_TO_SPEECH" : "6798311d431b3972542d1bcf"
      },
      "deploymentId" : 240000274
    }
  ],
  "experiments" : [

  ]
}
}

Model: Macmini9,1, BootROM 11881.81.4, proc 8:4:4 processors, 8 GB, SMC 
Graphics: Apple M1, Apple M1, Built-In
Display: 50R7+, 5120 x 2880 (5K/UHD+ - Ultra High Definition Plus), Main, MirrorOff, Online
Memory Module: LPDDR4, Micron
AirPort: spairport_wireless_card_type_wifi (0x14E4, 0x4378), wl0: Sep 28 2024 04:40:32 version 18.20.462.0.7.8.175 FWID 01-10fa77df
IO80211_driverkit-1345.10 "IO80211_driverkit-1345.10" Dec 14 2024 17:47:07
AirPort: 
Bluetooth: Version (null), 0 services, 0 devices, 0 incoming serial ports
Network Service: Wi-Fi, AirPort, en1
PCI Card: pci1b21,625, AHCI Controller, Thunderbolt@5,0,0
PCI Card: pci1b21,1142, USB eXtensible Host Controller, Thunderbolt@3,0,0
PCI Card: pci1b21,1142, USB eXtensible Host Controller, Thunderbolt@4,0,0
Serial ATA Device: LaCie   2big Dock Thunderbolt 3  Raid 1, 8 TB
USB Device: USB31Bus
USB Device: USB31Bus
USB Device: USB30Bus
USB Device: USB30Bus
USB Device: USB3.1 Card Reader
USB Device: USB30Bus
USB Device: RaidConfig
Thunderbolt Bus: Mac mini, Apple Inc.
Thunderbolt Bus: Mac mini, Apple Inc.
Thunderbolt Device: 2big Dock Thunderbolt 3, LaCie, 1, 20.4

P.S. Блин ясно понятно отчего оно падало - там тупо места в строке не хватало :lol:

Code: Select all

void MyFrame::OnSize(wxSizeEvent& event)
{
  wxSize size = GetSize();
  int dx = size.GetWidth();
  int dy = size.GetHeight();
  char str[16];
  sprintf(str,"OnSize %d:%d",dx,dy);
  SetStatusText(str);
}
P.P.S. Ещё там кнопки по-умолчанию растягиваются во всю ширь окна...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23892
Joined: 09 Jan 2003 06:22
Location: Silicon Valley
Contact:

Re: Кодим с wxWidgets

Post by Shaos »

Пробую добавить тулбар как в RW1_EDIT (пока в линухе):

Screenshot from 2025-02-16 10-44-33.png
Screenshot from 2025-02-16 10-44-33.png (10.4 KiB) Viewed 2639 times

Интересно, что тулбар в wxWidgets может быть не только горизонтальный, но и вертикальный:

Screenshot from 2025-02-16 10-59-03.png
Screenshot from 2025-02-16 10-59-03.png (12.9 KiB) Viewed 2639 times

Как можно видеть тут вылезшее за пределы упаковывается в выпадающее подменю :)

Мне кажется расстояние между иконками крупновато - возможно надо иконки побольше сделать (тут они 20х20)...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23892
Joined: 09 Jan 2003 06:22
Location: Silicon Valley
Contact:

Re: Кодим с wxWidgets

Post by Shaos »

Добавил в иконки прозрачность - стало сильно лучше:

Screenshot from 2025-02-16 11-44-57.png
Screenshot from 2025-02-16 11-44-57.png (10.51 KiB) Viewed 2636 times

Полный исходник:

Code: Select all

// wxWidgets sample #5

#include "wx/wx.h"

#include "wx/toolbar.h"

class MyApp : public wxApp
{
 public:
  virtual bool OnInit();
};

class MyFrame : public wxFrame
{
  int memdc_width;
  int memdc_height;
  wxMemoryDC *memdc;
  wxBitmap *bm;
 public:
  MyFrame(const wxString& title);
  void OnQuit(wxCommandEvent& event);
  void OnAbout(wxCommandEvent& event);
  void OnSize(wxSizeEvent& event);
  void OnMotion(wxMouseEvent& event);
  void OnPaint(wxPaintEvent& event);
 private:
  DECLARE_EVENT_TABLE()
};

DECLARE_APP(MyApp)

IMPLEMENT_APP(MyApp)

bool MyApp::OnInit()
{
  MyFrame *frame = new MyFrame(wxT("My wxWidets App"));
  frame->Show(true);
  return true;
}

BEGIN_EVENT_TABLE(MyFrame, wxFrame)
  EVT_MENU(wxID_ABOUT, MyFrame::OnAbout)
  EVT_MENU(wxID_EXIT,  MyFrame::OnQuit)
  EVT_SIZE(            MyFrame::OnSize)
  EVT_MOTION(          MyFrame::OnMotion)
  EVT_PAINT(           MyFrame::OnPaint)
END_EVENT_TABLE()

void MyFrame::OnAbout(wxCommandEvent& event)
{
  wxString msg;
  msg.Printf(wxT("Hello and welcome to %s"), wxVERSION_STRING);
  wxMessageBox(msg, wxT("About wxWidgets"), wxOK | wxICON_INFORMATION, this);
}

void MyFrame::OnQuit(wxCommandEvent& event)
{
  Close();
}

void MyFrame::OnSize(wxSizeEvent& event)
{
  wxSize size = GetSize();
  int dx = size.GetWidth();
  int dy = size.GetHeight();
  char str[20];
  sprintf(str,"OnSize %d:%d",dx,dy);
  SetStatusText(str);
}

void MyFrame::OnMotion(wxMouseEvent& event)
{
  if(event.Dragging())
  {
    wxPen pen(*wxBLACK, 1);
    memdc->SetPen(pen);
    wxPoint point = event.GetPosition();
//    printf("Draw %d:%d\n",point.x,point.y);
    memdc->DrawPoint(point);
    memdc->SetPen(wxNullPen);
    Refresh();
  }
}

void MyFrame::OnPaint(wxPaintEvent& event)
{
  int width, height;
  GetSize(&width,&height);
  wxPaintDC dc(this);
//  dc.SetClippingRegion(GetUpdateRegion());
  dc.Blit(0, 0, width, height, memdc, 0, 0);
//  printf("Paint %d:%d\n",width,height);
}

const
#include "icon16x16.xpm"
const
#include "icon20x20_new.xpm"
const
#include "icon20x20_open.xpm"
const
#include "icon20x20_save.xpm"
const
#include "icon20x20_cut.xpm"
const
#include "icon20x20_copy.xpm"
const
#include "icon20x20_paste.xpm"
const
#include "icon20x20_compile.xpm"
const
#include "icon20x20_explode.xpm"

MyFrame::MyFrame(const wxString& title) : wxFrame(NULL, wxID_ANY, title)
{
  SetIcon(wxIcon(icon16x16_xpm));
  wxMenu *fileMenu = new wxMenu;
  wxMenu *helpMenu = new wxMenu;
  helpMenu->Append(wxID_ABOUT, wxT("&About...\tF1"), wxT("Show about dialog"));
  fileMenu->Append(wxID_EXIT, wxT("E&xit...\tAlt-X"), wxT("Quit this program"));
  wxMenuBar *menuBar = new wxMenuBar();
  menuBar->Append(fileMenu, wxT("&File"));
  menuBar->Append(helpMenu, wxT("&Help"));
  SetMenuBar(menuBar);
  CreateStatusBar(2);
  SetStatusText(wxT("Welcome to wxWidgets!"));

  wxToolBar* toolBar = new wxToolBar(this, wxID_ANY,
    wxDefaultPosition, wxDefaultSize, wxTB_HORIZONTAL|wxNO_BORDER);
  wxBitmap bmpNew    (icon20x20_new_xpm);
  wxBitmap bmpOpen   (icon20x20_open_xpm);
  wxBitmap bmpSave   (icon20x20_save_xpm);
  wxBitmap bmpCut    (icon20x20_cut_xpm);
  wxBitmap bmpCopy   (icon20x20_copy_xpm);
  wxBitmap bmpPaste  (icon20x20_paste_xpm);
  wxBitmap bmpCompile(icon20x20_compile_xpm);
  wxBitmap bmpExplode(icon20x20_explode_xpm);
//  toolBar->SetToolBitmapSize(wxSize(64,64));
  toolBar->AddTool (wxID_NEW,     bmpNew,     wxT("New"));
  toolBar->AddTool (wxID_OPEN,    bmpOpen,    wxT("Open"));
  toolBar->AddTool (wxID_SAVE,    bmpSave,    wxT("Save"));
  toolBar->AddSeparator();
  toolBar->AddTool (wxID_CUT,     bmpCut,     wxT("Cut"));
  toolBar->AddTool (wxID_COPY,    bmpCopy,    wxT("Copy"));
  toolBar->AddTool (wxID_PASTE,   bmpPaste,   wxT("Paste"));
  toolBar->AddSeparator();
  toolBar->AddTool (wxID_CONVERT, bmpCompile, wxT("Compile"));
  toolBar->AddTool (wxID_EXECUTE, bmpExplode, wxT("Execute"));
  toolBar->Realize();
  SetToolBar(toolBar);

  memdc = new wxMemoryDC;
  memdc_width = 2048;
  memdc_height = 2048;
  bm = new wxBitmap(memdc_width,memdc_height,-1);
  memdc->SelectObject(*bm);
  memdc->SetBackground(*wxWHITE_BRUSH);
  memdc->Clear();
}
Архив с XPM-иконками приаттачен ниже:
Attachments

icons-20x20.zip
(2.69 KiB) Downloaded 22 times

Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23892
Joined: 09 Jan 2003 06:22
Location: Silicon Valley
Contact:

Re: Кодим с wxWidgets

Post by Shaos »

Shaos wrote: 16 Feb 2025 19:00 Мне кажется расстояние между иконками крупновато - возможно надо иконки побольше сделать (тут они 20х20)...
Вот сравнение того что было (RW_EDIT.EXE собранный борландом в 2003 году) с тем, что получилось сейчас (wxWidgets 3.0.4 в линухе):
Attachments

Screenshot from 2025-02-16 15-09-50.png
Screenshot from 2025-02-16 15-09-50.png (45.04 KiB) Viewed 2626 times

Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23892
Joined: 09 Jan 2003 06:22
Location: Silicon Valley
Contact:

Re: Кодим с wxWidgets

Post by Shaos »

Старые микрософтовские иконки для тулбара есть в виде картинки например вот тут:

https://learn.microsoft.com/en-us/previous-versions/windows/desktop/bb226807%28v=vs.85%29

Microsoft-icons.png
Microsoft-icons.png (5.86 KiB) Viewed 2593 times

Когда-нибудь можно будет перейти на иконки посовременнее и поопенсорснее, а пока пусть будут эти...

P.S. В данный момент я хочу построить скелет оконного приложения, пригодный для дальнейшего развития в разные стороны, а именно
  • мультиплатформенной реинкарнации редактора роботов RW1_EDIT
  • редактора крупнопиксельной графики для ретрокомпьютеров nedopixels
  • редактора печатных плат и схем vulturedсимуляцией?)
P.P.S. Наткнулся на пример из 2019 года, который я собирал борландом с wxWidgets v2.8 в WinXP - осталось найти где это было и дёрнуть оттудава либы, чтобы попробовать пересобрать вышеприведённые примерчики тем же способом под винды...

P.P.P.S. Нашёл - это было на старом Lenovo ThinkCentre с WinXP SP3, где я в апреле 2019 года собирал борландом wxWidgets v2.8.12 (а вот v3.0.4 судя по всему у меня там "не полетел")...

P.P.P.P.S. Попытался в Wine пособирать - хренушки! Борландовский ilink32.exe падает на проектах чуть больших нежели wx-пример minimal :(

Code: Select all

0035:err:seh:setup_exception_record stack overflow 1088 bytes in thread 0035 eip f7b1f9cd esp 00240ef0 stack 0x240000-0x241000-0x340000
P.P.P.P.P.S. Хотя многие достаточно большие проекты из samples таки собрались - похожая ошибка случается примерно в половине случаев...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23892
Joined: 09 Jan 2003 06:22
Location: Silicon Valley
Contact:

Re: Кодим с wxWidgets

Post by Shaos »

Shaos wrote: 17 Feb 2025 05:56 P.P.P.P.S. Попытался в Wine пособирать - хренушки! Борландовский ilink32.exe падает на проектах чуть больших нежели wx-пример minimal :(

Code: Select all

0035:err:seh:setup_exception_record stack overflow 1088 bytes in thread 0035 eip f7b1f9cd esp 00240ef0 stack 0x240000-0x241000-0x340000
P.P.P.P.P.S. Хотя многие достаточно большие проекты из samples таки собрались - похожая ошибка случается примерно в половине случаев...
Обновил дебиян до версии 11 - там новый Wine, но ilink32.exe продолжает падать :(
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23892
Joined: 09 Jan 2003 06:22
Location: Silicon Valley
Contact:

Re: Кодим с wxWidgets

Post by Shaos »

Интересно что успешно собранное в Wine (используя либы скомпилированные мною в WinXP 6 лет назад) замечательно запускается в эмулируемой Win98SE в VirtualBox :lol:
Attachments

Screenshot from 2025-02-19 23-00-14.png
Screenshot from 2025-02-19 23-00-14.png (6.22 KiB) Viewed 2548 times

Я тут за главного - если что шлите мыло на me собака shaos точка net
Post Reply