elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


  Mostrar Mensajes
Páginas: [1] 2
1  Programación / Programación C/C++ / Re: gui con wxwidgets en: 20 Julio 2024, 19:46 pm
te lo agradezco ahora por unos dias a estudiar esto y despues a ver que sale
2  Programación / Programación C/C++ / Re: gui con wxwidgets en: 20 Julio 2024, 00:43 am
por tu respuesta, yo no tengo idea de como usar los hilos tenes alguna idea de donde hay un buen tutorial sobre eso, tutoriales debe haber pero uno bueno nivel principiante no muchos
3  Programación / Programación C/C++ / Re: gui con wxwidgets en: 19 Julio 2024, 19:01 pm
gracias daniel por contestar si eso lo intente y sigue el problema y creo que encontre la causa

#include "errorMain.h"
#include <wx/msgdlg.h>
#include <ctime>

//(*InternalHeaders(errorFrame)
#include <wx/intl.h>
#include <wx/string.h>
//*)

//helper functions
enum wxbuildinfoformat {
    short_f, long_f };

wxString wxbuildinfo(wxbuildinfoformat format)
{
    wxString wxbuild(wxVERSION_STRING);

    if (format == long_f )
    {
#if defined(__WXMSW__)
        wxbuild << _T("-Windows");
#elif defined(__UNIX__)
        wxbuild << _T("-Linux");
#endif

#if wxUSE_UNICODE
        wxbuild << _T("-Unicode build");
#else
        wxbuild << _T("-ANSI build");
#endif // wxUSE_UNICODE
    }

    return wxbuild;
}

//(*IdInit(errorFrame)
const long errorFrame::ID_TEXTCTRL1 = wxNewId();
const long errorFrame::ID_BUTTON1 = wxNewId();
//*)

BEGIN_EVENT_TABLE(errorFrame,wxFrame)
    //(*EventTable(errorFrame)
    //*)
END_EVENT_TABLE()

errorFrame::errorFrame(wxWindow* parent,wxWindowID id)
{
    //(*Initialize(errorFrame)
    Create(parent, id, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxDEFAULT_FRAME_STYLE, _T("id"));
    TextCtrl1 = new wxTextCtrl(this, ID_TEXTCTRL1, _("Text"), wxPoint(16,64), wxSize(368,280), 0, wxDefaultValidator, _T("ID_TEXTCTRL1"));
    Button1 = new wxButton(this, ID_BUTTON1, _("Label"), wxPoint(136,408), wxDefaultSize, 0, wxDefaultValidator, _T("ID_BUTTON1"));

    Connect(ID_BUTTON1,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&errorFrame::OnButton1Click);
    //*)
}

errorFrame::~errorFrame()
{
    //(*Destroy(errorFrame)
    //*)
}


void errorFrame::OnButton1Click(wxCommandEvent& event)
{
    unsigned t0,t1;
    double tim;

    t0=clock();
    do{
        t1=clock();
        tim= (double(t1-t0)/CLOCKS_PER_SEC);
    }while(tim<40.00);

}

en este ejemplo muy simple y bobo ocurre exactamente lo mismo, ojo esto esta hecho a proposito para imitar el ejemplo, en este caso se tarda tanto tiempo en el bucle, igual que en el bucle, igual que en los bucles donde hago el cifrado, que el programa durante ese tiempo, deja de prosesar los mensajes, o algo asi, y entonces se cuelga, de hecho si tratas de cerrar este programa windows alerta de que el programa no responde, pero cuando termina el bucle todo vuelve a la normalidad, este es exactamente el problemaque tengo y no puedo resolver, porque la funcion de cifrado va a tardar lo que tenga que tardar, ni mas ni menos.
no se y solo es pura especulacion, si en este ejemplo, justo debajo de la asignacion a tim colocara una funcion que llamara al prosesamiento de los mensajes por ahi estaria la solucion
pero no se si exista esa funcion, que te parece?
4  Programación / Programación C/C++ / Re: gui con wxwidgets en: 18 Julio 2024, 19:00 pm
al final lo logre o casi todo todavía me queda un ultimo inconveniente, y es este, para mostrar el progreso del programa uso una wxgauge, hasta ahi todo bien, el problema surge cuando por algun motivo el formulario pierde el foco, al pasar eso el programa sigue y al terminar recupera el foco y todo anda bien, pero hasta que termina la barra de progreso deja de actualizar, es mas pienso que como se queda en los bucles mucho tiempo, impido que el programa procese los eventos y es eso lo que lleva a la falla, recuerdo que en visual basic se agregaba un comando que lo resolvia pero no me acuerdo como se llamaba, habra algun comando similar. aca les dejo el main del programa

/***************************************************************
 * Name:      exploradorMain.cpp
 * Purpose:   Code for Application Frame
 * Author:     ()
 * Created:   2024-06-15
 * Copyright:  ()
 * License:
 **************************************************************/

#include "exploradorMain.h"
#include <wx/msgdlg.h>
#include <wx/dir.h>
#include <wx/file.h>
#include <wx/volume.h>
#include <Windowsx.h>
#include <wx/msw/winundef.h>
#include "cifrado.h"
#include <string>
#include <wx/msgdlg.h>
#include <wx/filedlg.h>
#include "mydialog.h"
#include <ctime>
#include "supercifrado.h"

//(*InternalHeaders(exploradorFrame)
#include <wx/bitmap.h>
#include <wx/font.h>
#include <wx/icon.h>
#include <wx/image.h>
#include <wx/intl.h>
#include <wx/settings.h>
#include <wx/string.h>
//*)


//helper functions
enum wxbuildinfoformat {
    short_f, long_f };

wxString wxbuildinfo(wxbuildinfoformat format)
{
    wxString wxbuild(wxVERSION_STRING);

    if (format == long_f )
    {
#if defined(__WXMSW__)
        wxbuild << _T("-Windows");
#elif defined(__UNIX__)
        wxbuild << _T("-Linux");
#endif

#if wxUSE_UNICODE
        wxbuild << _T("-Unicode build");
#else
        wxbuild << _T("-ANSI build");
#endif // wxUSE_UNICODE
    }

    return wxbuild;
}

//(*IdInit(exploradorFrame)
const long exploradorFrame::ID_LISTBOX1 = wxNewId();
const long exploradorFrame::ID_COMBOBOX1 = wxNewId();
const long exploradorFrame::ID_GENERICDIRCTRL1 = wxNewId();
const long exploradorFrame::ID_STATICTEXT1 = wxNewId();
const long exploradorFrame::ID_GAUGE1 = wxNewId();
const long exploradorFrame::ID_PROGRESSDIALOG1 = wxNewId();
//*)

BEGIN_EVENT_TABLE(exploradorFrame,wxFrame)
    //(*EventTable(exploradorFrame)
    //*)
END_EVENT_TABLE()

exploradorFrame::exploradorFrame(wxWindow* parent,wxWindowID id)
{
    wxArrayString Lista;
    Lista = wxFSVolume::GetVolumes();

    //(*Initialize(exploradorFrame)
    Create(parent, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxDEFAULT_FRAME_STYLE, _T("wxID_ANY"));
    SetClientSize(wxSize(600,320));
    SetBackgroundColour(wxColour(0,128,192));
    {
       wxIcon FrameIcon;
       FrameIcon.CopyFromBitmap(wxBitmap(wxImage(_T("C:\\Users\\tca15\\Downloads\\keys_security_private_lock_1739.ico"))));
       SetIcon(FrameIcon);
    }
    ListBox1 = new wxListBox(this, ID_LISTBOX1, wxPoint(260,40), wxSize(335,255), 0, 0, 0, wxDefaultValidator, _T("ID_LISTBOX1"));
    wxFont ListBox1Font(10,wxFONTFAMILY_MODERN,wxFONTSTYLE_NORMAL,wxFONTWEIGHT_NORMAL,false,_T("Terminal"),wxFONTENCODING_DEFAULT);
    ListBox1->SetFont(ListBox1Font);
    ComboBox1 = new wxComboBox(this, ID_COMBOBOX1, wxEmptyString, wxPoint(16,176), wxSize(192,32), 0, 0, wxCB_READONLY|wxTE_PROCESS_ENTER|wxBORDER_DOUBLE|wxBORDER_SUNKEN|wxBORDER_STATIC, wxDefaultValidator, _T("ID_COMBOBOX1"));
    ComboBox1->Hide();
    wxFont ComboBox1Font(12,wxFONTFAMILY_MODERN,wxFONTSTYLE_NORMAL,wxFONTWEIGHT_BOLD,false,_T("Terminal"),wxFONTENCODING_DEFAULT);
    ComboBox1->SetFont(ComboBox1Font);
    DirCtrl1 = new wxGenericDirCtrl(this, ID_GENERICDIRCTRL1, wxEmptyString, wxPoint(5,40), wxSize(250,255), wxDIRCTRL_DIR_ONLY, wxEmptyString, 0, _T("ID_GENERICDIRCTRL1"));
    Statico = new wxStaticText(this, ID_STATICTEXT1, wxEmptyString, wxPoint(5,5), wxSize(590,30), wxBORDER_SIMPLE, _T("ID_STATICTEXT1"));
    Statico->SetForegroundColour(wxColour(255,0,128));
    Statico->SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW));
    wxFont StaticoFont(14,wxFONTFAMILY_MODERN,wxFONTSTYLE_NORMAL,wxFONTWEIGHT_BOLD,false,_T("Terminal"),wxFONTENCODING_DEFAULT);
    Statico->SetFont(StaticoFont);
    Gauge = new wxGauge(this, ID_GAUGE1, 100, wxPoint(5,300), wxSize(590,15), wxGA_HORIZONTAL|wxGA_SMOOTH|wxGA_PROGRESS, wxDefaultValidator, _T("ID_GAUGE1"));
    Gauge->Hide();

    Connect(ID_GENERICDIRCTRL1,wxEVT_DIRCTRL_SELECTIONCHANGED,(wxObjectEventFunction)&exploradorFrame::OnGenericDirCtrl1SelectionChanged);
    //*)
    Connect(ID_LISTBOX1,wxEVT_LISTBOX_DCLICK,(wxObjectEventFunction)&exploradorFrame::OnListBox1DClick);
    DirCtrl1->ShowHidden(true);
    DirCtrl1->ExpandPath(wxGetCwd());
    explorar(wxGetCwd());
}

exploradorFrame::~exploradorFrame()
{
    //(*Destroy(exploradorFrame)
    //*)
}

void exploradorFrame::explorar(wxString Ruta)
{
    wxSetWorkingDirectory (Ruta);
    wxDir dir(wxGetCwd());
    wxArrayString Lista;
    wxString filename;
    unsigned int i=0;
    bool cont;
    HWND hctrl = (HWND)ListBox1->GetHandle();  //de aca consigo el handler del listbox

    SendMessageW(hctrl, LB_RESETCONTENT, 0, 0); // y enviando esto logro borrar el listbox
    if ( !dir.IsOpened() )
    {
        Lista.Add("No Existe",1);
        ListBox1->InsertItems(Lista,0);
        dir.Close();
        return;
    }
    Statico->SetLabel(dir.GetNameWithSep());
    cont = dir.GetFirst(&filename, "", wxDIR_DIRS|wxDIR_DOTDOT);
    while ( cont )
    {
        if(filename!=".")
        {
            Lista.Add(filename.MakeUpper());
            i++;
        }
        cont = dir.GetNext(&filename);
    }
    cont = dir.GetFirst(&filename, "", wxDIR_FILES|wxDIR_HIDDEN);
    while ( cont )
    {
        if(filename!=".")
        {
            Lista.Add(filename);
            i++;
        }
        cont = dir.GetNext(&filename);
    }
    ListBox1->InsertItems(Lista,0);
    dir.Close();
}

void exploradorFrame::OnClose(wxCommandEvent& event)
{
    Destroy();
}

void exploradorFrame::OnListBox1DClick(wxCommandEvent& event)
{
    wxDir dir;
    MyDialog Password(this,-1,_("Ingrese la Clave"));
    int Boton;
    if(!wxDirExists(ListBox1->GetString(ListBox1->GetSelection())))
    {
        Boton = Password.ShowModal();
        if(Boton != wxID_CANCEL)
            cifrar(Password.GetPassWord(), Boton);
        explorar(Statico->GetLabel());
    }
    else
    {
        DirCtrl1->CollapseTree();
        explorar(ListBox1->GetString(ListBox1->GetSelection()));
        DirCtrl1->ExpandPath(wxGetCwd());
    }
}

void exploradorFrame::cifrar(wxString Clave, int Boton)
{
    SuperCifrado code;
    unsigned char TPlano[2048],Salida[2048];
    wxString aux;
    wxFile plano, cifrado;
    std::string paso;
    unsigned long long bucle, resto, i;
    wxFileDialog saveFileDialog;

    if(Boton == 9001 || Boton == 9003)
        saveFileDialog.Create(this, _ ( "Guardar archivo ngm" ), wxEmptyString, wxEmptyString, "Archivos ngm (*.ngm)|*.ngm", wxFD_SAVE | wxFD_OVERWRITE_PROMPT);
    if(Boton == 9002 || Boton == 9002)
        saveFileDialog.Create(this, _ ( "Guardar archivo" ), wxEmptyString, wxEmptyString, "Archivos  (*.*)|*.*", wxFD_SAVE | wxFD_OVERWRITE_PROMPT);
    if(saveFileDialog.ShowModal()== wxID_CANCEL)
        return;

    aux=Statico->GetLabel() + ListBox1->GetString(ListBox1->GetSelection());
    plano.Open(aux,wxFile::read);

    if(!plano.IsOpened())
    {
        wxMessageBox (_("No se puede abrir"),_("ERROR") ,  wxOK | wxCENTRE | wxICON_ERROR , this);
        return;
    }

    if(!cifrado.Create(saveFileDialog.GetPath()))
    {
        wxMessageBox (_("No se puede crear"),_("ERROR") ,  wxOK | wxCENTRE | wxICON_ERROR , this);
        return;
    }

    wxString p;
    paso=Clave;
    code.Init(paso);
    Gauge->Show(true);

    resto = plano.Length() & 0x7ff; //lenght es un tipo longlong
    bucle = plano.Length() >> 11;
    Gauge->SetRange((int)bucle);
    DirCtrl1->Enable(false);
    DirCtrl1->Update();

        int y0=clock();
    switch (Boton)
    {
        case 9001:
            {
            for (i=0;i<bucle;i++)
            {
                plano.Read(TPlano,2048);
                code.DesOrden(TPlano);
                code.Codec(2048,TPlano,Salida);
                cifrado.Write(Salida,2048);
                Gauge->SetFocus();
                Gauge->SetValue(i);
            }
            if(resto)
            {
                plano.Read(TPlano,resto);
                code.Codec(resto,TPlano,Salida);
                cifrado.Write(Salida,resto);
            }
            Gauge->Hide();
                int y1=clock();
                double t=(double(y1-y0)/CLOCKS_PER_SEC);

                p.Printf("%f",t);
                wxMessageBox (_("rclick"), p,  wxOK | wxCENTRE , this);
            DirCtrl1->Enable(true);
            plano.Close();
            cifrado.Close();
            return;
            }
        case 9002:
            {
            for (i=0;i<bucle;i++)
            {
                plano.Read(TPlano,2048);
                code.Codec(2048,TPlano,Salida);
                code.Orden(Salida);
                cifrado.Write(Salida,2048);
                Gauge->SetFocus();
                Gauge->SetValue(i);
            }
            if(resto)
            {
                plano.Read(TPlano,resto);
                code.Codec(resto,TPlano,Salida);
                cifrado.Write(Salida,resto);
            }
            Gauge->Hide();
                int y1=clock();
                double t=(double(y1-y0)/CLOCKS_PER_SEC);
                wxString p;
                p.Printf("%f",t);
                wxMessageBox (_("rclick"), p,  wxOK | wxCENTRE , this);
            DirCtrl1->Enable(true);
            plano.Close();
            cifrado.Close();
            return;
            }
        case 9003:
            {
            for (i=0;i<bucle;i++)
            {
                plano.Read(TPlano,2048);
                code.SuperDesOrden(TPlano,2048);
                code.Codec(2048,TPlano,Salida);
                cifrado.Write(Salida,2048);
                Gauge->SetFocus();
                Gauge->SetValue(i);
            }
            if(resto)
            {
                plano.Read(TPlano,resto);
                code.Codec(resto,TPlano,Salida);
                cifrado.Write(Salida,resto);
            }
            Gauge->Hide();
                int y1=clock();
                double t=(double(y1-y0)/CLOCKS_PER_SEC);
                wxString p;
                p.Printf("%f",t);
                wxMessageBox (_("rclick"), p,  wxOK | wxCENTRE , this);
            DirCtrl1->Enable(true);
            plano.Close();
            cifrado.Close();
            return;
            }
        case 9004:
            {
            for (i=0;i<bucle;i++)
            {
                plano.Read(TPlano,2048);
                code.Codec(2048,TPlano,Salida);
                code.SuperOrden(Salida,2048);
                cifrado.Write(Salida,2048);
                Gauge->SetFocus();
                Gauge->SetValue(i);
            }
            if(resto)
            {
                plano.Read(TPlano,resto);
                code.Codec(resto,TPlano,Salida);
                cifrado.Write(Salida,resto);
            }
            Gauge->Hide();
                int y1=clock();
                double t=(double(y1-y0)/CLOCKS_PER_SEC);
                wxString p;
                p.Printf("%f",t);
                wxMessageBox (_("rclick"), p,  wxOK | wxCENTRE , this);
            DirCtrl1->Enable(true);
            plano.Close();
            cifrado.Close();
            return;
            }
    }
}

void exploradorFrame::OnGenericDirCtrl1SelectionChanged(wxTreeEvent& event)
{
    wxString ruta;

    ruta=DirCtrl1->GetPath();
    if(!ruta.ends_with("\\"))
        ruta.append("\\");
    explorar(ruta);
}
5  Programación / Programación C/C++ / Re: gui con wxwidgets en: 11 Junio 2024, 17:28 pm
si perdona es en C++



gracias, en cuanto a codeblocks lo uso porque me resulta mas liviano, otro que probé fue vscode pero en mi maquina esta muy lento, y como también tengo una maquina con linux no estoy usando dev-c++



hola de nuevo, encontré de casualidad  el control wxgenericdirctrl que se supone puede hacer todo lo que quiero, pero, al probarlo en un frame no compila, codeblock no reconoce el tipo, pero si lo intento desde un programa hecho en fase a dialogos (dialog base) si anda, como puedo usar este control en un frame?



de nuevo ya resolvi a medias el problema, pero ahora tengo otro, ya que puedo llenar un listbox con los archivos de una carpeta, ahora quiero poder navegar por todas las carpetas pero al cambiar de carpeta, el contenido de la anterior permanece, intente de todo para borrar la lista vieja pero no lo hace solo agrega el contenido del directorio nuevo al viejo. Hay alguna forma de borrar ya intente con DESELECTED pero no consegui nada, vi que hay una funcion DOCLEAR pero es protegida, hererada de wxITEMCONTAINER, y no se como hacerla funcionar, si alguien dabe como se puede hacer esto?



al final lo descubri, la unica forma de borrar un listbox es usando una funcion del winapi, que en codeblocks, no se si sera igual en las demas, es SendMessadeW, (en la descripcion de winapi hecha en la pagina conclase.com usan SendMessage sin la W). Y hay que hacerlo asi

HWND hctrl = (HWND)ListBox1->GetHandle();  //de aca consigo el handler del listbox
SendMessageW(hctrl, LB_RESETCONTENT, 0, 0); // y enviando esto logro borrar el listbox

Ya lo probe y funciona bien, y como dije es la unica forma que encontre
6  Programación / Programación C/C++ / Re: clase array en: 10 Junio 2024, 19:31 pm
muchisimas gracias por tu respuesta, tu respuesta me sirvio, gracias por tomarte el tiempo de ayudarme
7  Programación / Programación C/C++ / gui con wxwidgets en: 10 Junio 2024, 19:25 pm
hola estoy tratando de hacer un programa para windows usando codeblocks y wxwidgets, el programa tiene que seleccionar un archivo para luego mostrarlo en hexa pero la parte de la seleccion me esta matando, no de que hacer, si fuera un winapi32 usaria DLGDIRLIST pero necesiat que le pase el HWND de la ventana padre, y en wxwidgets no se como hacerlo, tiene algo parecido pero su prototipo es wxwindow y no se si es compatible, alguien sabe como hacer la seleccion de archivos desde un wxlistbox?
8  Programación / Programación C/C++ / clase array en: 2 Mayo 2024, 17:41 pm
hola estoy empezando en c++ y tengo una duda que no puedo encontrar en ningun lugar, se que se puede hacer un vector de objetos usando el contenedor stl vector, pero se puede crear un vector de objetos usando el contenedor array? se que array es para longitudes fijas y que a vector se le puede cambiar dinamicamente el tamaño pero hustamante no necesito de esa propiedad ya que el vector que pretendo crear seria de tamaño fijo
9  Programación / Programación C/C++ / ayuda con ncurses en: 29 Agosto 2021, 02:00 am
buen dia a todos, estoy haciendo un programa algo tonto con ncurses, un juego, y una de las clases me esta dando problemas, la de manejo de pantalla, tengo 2 problemas que son:
1-cuando se ejecuta la ventana del terminal siempre es muy chica, de alrededor de1/4 a 1/3 del area de la pantalla, en ese momento las zonas que dibujo en pantalla estan bien, pero cuando la maximizo quedan chicas.
2-para realizar un mapa uso 9 sub ventanas llamadas bloques, pero resulta que estas no me toman los atributos de color, lo demas anda.
El mas importante seria el primero, necesitaria saber como arrancar ya con la pantalla maximizada por soft, si es que se puede (lei por ahi que si y tambien vi una funciones llamadas resizeterm y resize_term que no se si tendran algo que ver) y adaptar la escala al nuevo tamaño de forma automatica (tambien he podido ver que puedo interceptar el evento de maximizado como una pulsacion con getch()). lo otro seria mas por prolijidad

Código:
#ifndef PANTALLA_H
    #define PANTALLA_H
    #include <ncurses.h>

    class Pantalla
    {
        private:
            WINDOW *mapa, *dialogo, *inventario, *bloques[9];
        public:
            Pantalla();
            ~Pantalla();
            int Mapa(void);
            int Dialogo(void);
            int Inventario(void);
    };

#endif // PANTALLA_H

Código:
#include "Pantalla.h"
#include <ncurses.h>
#include <iostream>

Pantalla::Pantalla()
{
    int8_t i;
    initscr();
    start_color();
    cbreak();
    noecho();
    keypad(stdscr,TRUE);
    init_pair(1,COLOR_RED,COLOR_GREEN);
    init_pair(2,COLOR_RED,COLOR_WHITE);
    init_pair(3,COLOR_BLUE,COLOR_YELLOW);
    init_pair(4,COLOR_BLACK,COLOR_RED);
    init_pair(5,COLOR_BLACK,COLOR_CYAN);
    mapa=subwin(stdscr,22,38,1,1);

    if(mapa == NULL)
    {
        endwin();
        std::cout << "imposible crear ventana";
        getch();
        return;
    }
    dialogo=subwin(stdscr,10,38,1,41);
    if(dialogo == NULL)
    {
        delwin(mapa);
        endwin();
        std::cout << "imposible crear ventana";
        getch();
        return;
    }
    inventario=subwin(stdscr,10,38,13,41);
    if(inventario == NULL)
    {
        delwin(mapa);
        delwin(dialogo);
        endwin();
        std::cout << "imposible crear ventana";
        getch();
        return;
    }
    for(i=0;i<3;i++)
    {
        bloques[i]=subwin(mapa,5,7,5,9+(7*i));
        bloques[i+3]=subwin(mapa,5,7,10,9+(7*i));
        bloques[i+6]=subwin(mapa,5,7,15,9+(7*i));
    }
    for(i=0;i<9;i++)
    {
        box(bloques[i],0,0);
    }
    attron(COLOR_PAIR(1));
    bkgd(COLOR_PAIR(1));
    attroff(COLOR_PAIR(1));
    wattron(mapa,COLOR_PAIR(2));
    wbkgd(mapa,COLOR_PAIR(2));
    wattroff(mapa,COLOR_PAIR(2));
    wattron(dialogo,COLOR_PAIR(3));
    wbkgd(dialogo,COLOR_PAIR(3));
    wattroff(dialogo,COLOR_PAIR(3));
    wattron(inventario,COLOR_PAIR(4));
    wbkgd(inventario,COLOR_PAIR(4));
    wattroff(inventario,COLOR_PAIR(4));
    box(mapa,0,0);
    box(dialogo,0,0);
    box(inventario,0,0);
    refresh();
    getch();
}

Pantalla::~Pantalla()
{
    delwin(mapa);
    delwin(dialogo);
    delwin(inventario);
    endwin();
}
10  Programación / Programación C/C++ / Re: problemas con la instalacion de codeblock en: 25 Agosto 2021, 20:26 pm
gracias a todos por sus respuestas, ya resolvi el problema, lo que si no se porque se produjo, resulta que la ruta en la que buscaba al compilador era c:\mingw, no se porque buscaba por defecto ahi en lugar de en c:\programfile\codeblocks\mingw me di cuenta cuando revise bien en la pestaña compiler y ahi estaban las rutas mal las corregi y listo ya funciona bien.
Como punto final quiero decir, si es que sirve de algo, en la captura que manda bloodsharp
que figuran dos items marcados, si tienen un windows de 32 bits NO DESCARGUEN, repito NO DESCARGUEN la version que dice 32 bits, porque estan mal marcadas, esa es la de 64 bits, deben descargar la que NO DICE 32 bits, y busquen en FossHUB tendran mas control de que descargan, por ultimo esas son las que descargue. Muchas gracias a los dos por su valiosa ayuda, y espero que me sigan ayudando en el futuro. Mil Gracias y chau
Páginas: [1] 2
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines