Ah you mean it's like a wxMessageBox where I have to put a string... that works
Hm, as I have rearranged my program (main window) somehow my problem has strangely disappeared. But I still have another one that I haven't mentioned yet. If a user opens the printer list from the wxDialog that pops up if a user has more than 1 printer and he chooses 2 or more printers from the list, after the second printer install the program crashes without an error. If he chooses only 1 printer, everything is fine. If the chooses only from the printers in the wxDialog itself, everything works fine.
Here is the code for my wxDialog where the user has the choise to choose from the found 2 or 3 printers or if he wants he can open the list of all printers as well:
Code: Select all
#include "MorePrinters.h"
#include "User_Info.h"
#include "Funktionen.h"
//(*InternalHeaders(MorePrinters)
#include <wx/font.h>
#include <wx/intl.h>
#include <wx/string.h>
//*)
//(*IdInit(MorePrinters)
const long MorePrinters::ID_STATICTEXT1 = wxNewId();
const long MorePrinters::ID_STATICTEXT2 = wxNewId();
const long MorePrinters::ID_CHECKBOX1 = wxNewId();
const long MorePrinters::ID_CHECKBOX2 = wxNewId();
const long MorePrinters::ID_CHECKBOX3 = wxNewId();
const long MorePrinters::ID_BUTTON1 = wxNewId();
const long MorePrinters::ID_BUTTON2 = wxNewId();
const long MorePrinters::ID_BUTTON3 = wxNewId();
const long MorePrinters::ID_PANEL1 = wxNewId();
//*)
BEGIN_EVENT_TABLE(MorePrinters,wxDialog)
//(*EventTable(MorePrinters)
//*)
END_EVENT_TABLE()
MorePrinters::MorePrinters(wxWindow* parent,wxWindowID id,const wxPoint& pos,const wxSize& size)
{
//(*Initialize(MorePrinters)
wxBoxSizer* BoxSizer4;
wxBoxSizer* BoxSizer2;
wxBoxSizer* BoxSizer1;
wxBoxSizer* BoxSizer3;
Create(parent, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, _T("wxID_ANY"));
BoxSizer1 = new wxBoxSizer(wxHORIZONTAL);
Panel1 = new wxPanel(this, ID_PANEL1, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL, _T("ID_PANEL1"));
BoxSizer2 = new wxBoxSizer(wxVERTICAL);
StaticText1 = new wxStaticText(Panel1, ID_STATICTEXT1, _("Es wurden mehrere Drucker automatisch ermittelt.\n\n Zur Installation gewünschte Drucker markieren:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT1"));
wxFont StaticText1Font(12,wxFONTFAMILY_SWISS,wxFONTSTYLE_NORMAL,wxFONTWEIGHT_NORMAL,false,wxEmptyString,wxFONTENCODING_DEFAULT);
StaticText1->SetFont(StaticText1Font);
BoxSizer2->Add(StaticText1, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, wxDLG_UNIT(Panel1,wxSize(5,0)).GetWidth());
StaticText2 = new wxStaticText(Panel1, ID_STATICTEXT2, _("Hinweis: Standarddrucker kann im nächsten Schritt gewählt werden\nHinweis 2: Der Grosskopierer Papercut (Sharp) ist bereits vorinstalliert"), wxDefaultPosition, wxDefaultSize, wxALIGN_CENTER, _T("ID_STATICTEXT2"));
wxFont StaticText2Font(10,wxFONTFAMILY_SWISS,wxFONTSTYLE_NORMAL,wxFONTWEIGHT_NORMAL,false,_T("Arial"),wxFONTENCODING_DEFAULT);
StaticText2->SetFont(StaticText2Font);
BoxSizer2->Add(StaticText2, 0, wxBOTTOM|wxALIGN_CENTER_HORIZONTAL, 15);
BoxSizer4 = new wxBoxSizer(wxHORIZONTAL);
CheckBox1 = new wxCheckBox(Panel1, ID_CHECKBOX1, _(_User.UserDrucker[0]), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_CHECKBOX1"));
CheckBox1->SetValue(false);
BoxSizer4->Add(CheckBox1, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
CheckBox2 = new wxCheckBox(Panel1, ID_CHECKBOX2, _(_User.UserDrucker[1]), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_CHECKBOX2"));
CheckBox2->SetValue(false);
BoxSizer4->Add(CheckBox2, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
if(_User.UserDrucker[2] != "")
{
CheckBox3 = new wxCheckBox(Panel1, ID_CHECKBOX3, _(_User.UserDrucker[2]), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_CHECKBOX3"));
CheckBox3->SetValue(false);
BoxSizer4->Add(CheckBox3, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
}
BoxSizer2->Add(BoxSizer4, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
BoxSizer3 = new wxBoxSizer(wxHORIZONTAL);
Button1 = new wxButton(Panel1, ID_BUTTON1, _("OK"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_BUTTON1"));
BoxSizer3->Add(Button1, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
Button2 = new wxButton(Panel1, ID_BUTTON2, _("Andere(n) Drucker suchen"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_BUTTON2"));
BoxSizer3->Add(Button2, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
Button3 = new wxButton(Panel1, ID_BUTTON3, _("Einrichtung abbrechen"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_BUTTON3"));
BoxSizer3->Add(Button3, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
BoxSizer2->Add(BoxSizer3, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
Panel1->SetSizer(BoxSizer2);
BoxSizer2->Fit(Panel1);
BoxSizer2->SetSizeHints(Panel1);
BoxSizer1->Add(Panel1, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 0);
SetSizer(BoxSizer1);
BoxSizer1->Fit(this);
BoxSizer1->SetSizeHints(this);
Center();
Connect(ID_BUTTON1,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&MorePrinters::OnButton1Click);
Connect(ID_BUTTON2,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&MorePrinters::OnButton2Click);
Connect(ID_BUTTON3,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&MorePrinters::OnButton3Click);
//*)
}
MorePrinters::~MorePrinters()
{
//(*Destroy(MorePrinters)
//*)
}
void MorePrinters::OnButton1Click(wxCommandEvent& event)
{
_User.UserCancel = 0;
int Printer_Count = 2;
if(_User.UserDrucker[3] != "")
{
Printer_Count = 3;
}
if(Printer_Count == 2)
{
if(CheckBox1->GetValue() == false && CheckBox2->GetValue() == false)
{
wxMessageDialog checkSelection(0,("Es wurden keine Drucker gewählt."),"",wxYES|wxNO);
checkSelection.SetYesNoLabels(_("Keine Drucker installieren"),_("Drucker erneut wählen"));
if(checkSelection.ShowModal() == wxID_YES)
{
_User.UserCancel = 1;
EndModal(wxID_CANCEL);
return;
}
else
{
//_User.UserCancel = 1;
return;
}
}
}
if(Printer_Count == 3)
{
if(CheckBox1->GetValue() == false && CheckBox2->GetValue() == false && CheckBox3->GetValue() == false)
{
wxMessageDialog checkSelection(0,("Es wurden keine Drucker gewählt."),"",wxYES|wxNO);
checkSelection.SetYesNoLabels(_("OK"),_("Drucker erneut wählen"));
if(checkSelection.ShowModal() == wxID_YES)
{
_User.UserCancel = 1;
EndModal(wxID_CANCEL);
return;
}
else
{
//_User.UserCancel = 1;
return;
}
}
}
int i = 0; //Zähler, um UserDrucker_installiert zu füllen; wird nur hochgezählt, wenn ein Drucker installiert wird, sonst bleibt es null, wichtig!
if(CheckBox1->GetValue() == true)
{
Install_Printer(_User.UserDrucker[0]);
wxBusyInfo wait("Drucker werden installiert...\nEs kann eine Bestätigung zur Treiberinstallation nötig sein!");
_User.UserDrucker_installiert[i] = _User.UserDrucker[0];
i = i + 1;
Sleep(5000);
}
if(CheckBox2->GetValue() == true)
{
Install_Printer(_User.UserDrucker[1]);
wxBusyInfo wait("Drucker werden installiert...\nEs kann eine Bestätigung zur Treiberinstallation nötig sein!");
_User.UserDrucker_installiert[i] = _User.UserDrucker[1];
i = i + 1;
Sleep(5000);
}
if(Printer_Count == 3)
{
if(CheckBox3->GetValue() == true)
{
Install_Printer(_User.UserDrucker[2]);
wxBusyInfo wait("Drucker werden installiert...\nJe nach Drucker kann eine Bestätigung zur Treiberinstallation nötig sein!");
_User.UserDrucker_installiert[i] = _User.UserDrucker[2];
Sleep(5000);
}
}
if(_User.UserCancel == 0)
{
EndModal(wxID_CANCEL);
Standarddrucker dialog3(this);
dialog3.ShowModal();
}
_User.UserCancel = 1;
EndModal(wxID_CANCEL);
return;
}
void MorePrinters::OnButton2Click(wxCommandEvent& event)
{
Printer_List dialog2(0);
dialog2.ShowModal();
EndModal(wxID_CANCEL);
Standarddrucker dialog4(this);
dialog4.ShowModal();
//return;
}
void MorePrinters::OnButton3Click(wxCommandEvent& event)
{
_User.UserCancel = 1;
EndModal(wxID_CANCEL);
return;
}