Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15

Hybrid View

  1. #1

    [Builder c++ 6] Gestione richiami codice

    Ho scritto un codice (versione console) che legge all' infinito da un file di testo alcuni numeri.
    Quando trova per esempio il numero 10 e 12
    richiama un altro exe (sempre compilato da me in builder questa volta con form) in questo modo:
    ShellExecute( NULL, "open","visualizza.exe",visualizza,0, SW_HIDE);
    Passo all'altro exe in "visualizza" il numero e lui visualizza una form con l'immagine associata al numero.
    (tramite T-image)
    Poi quando il codice uno trova un altro numero (perchè va avanti all'infinito) chiudo l'exe e lo riapro subito con l'immagine nuova in questo modo:
    HWND hWindow = FindWindow(NULL, "visualizza");
    PostMessage(hWindow, WM_CLOSE, 0, 0);
    ShellExecute( NULL, "open","visualizza.exe",visualizza,0, SW_HIDE);
    E tutto funziona...
    Ma mi chiedevo non c'è un modo per modificare il t-image realtime mantenendo sempre il secondo exe aperto. (praticamente modifico solo il percorso dell'immagine , glielo passo e lui cambia immagine senza chidersi)?
    Ultima modifica di luigi.ghi67; 23-11-2013 a 09:51

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    577
    non puoi usare i thread?

  3. #3
    Quote Originariamente inviata da misterx Visualizza il messaggio
    non puoi usare i thread?
    Come si fa? mi spieghi? Non li ho mai usati....
    Se riesci postami anche un esempio per il mio caso... grazie!

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ma non può fare tutto il programma "visualizza"? Ovvero cercare nel file e visualizzare?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Quote Originariamente inviata da oregon Visualizza il messaggio
    Ma non può fare tutto il programma "visualizza"? Ovvero cercare nel file e visualizzare?
    All'inizio pensavo anche io di fare un programma unico con form... ma quando mettevo il controllo infinito nel form_create per farlo partire alla creazione della form... alla visualizzazione della prima immagine , non riuscivo a muovere la finestra con il mouse.... era bloccata probabilmente perchè lavora il processo sul ciclo infinito while...

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    577
    il metodo più banale è aggiungere all'interno del ciclo Application->ProcessMessage();

  7. #7
    Quote Originariamente inviata da misterx Visualizza il messaggio
    il metodo più banale è aggiungere all'interno del ciclo Application->ProcessMessage();
    me lo metti in un esempio pratico?
    Devo metterlo nell'applicazione 1 che richiama l'applicazione 2?
    non ho capto cosa fa e come fuziona... perchè cercando su google non ci capisco molto.... grazie!

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    577
    fai prima a postare il tuo codice, quello con la form

  9. #9
    PARTE PROGRAMMA 1 CONSOLE
    codice:
    int main() 
    {
        char visualizza2[3];
        int c=0;
    
    
            while(1)
            {
            ifstream OpenFile("file_numeri.txt");
            char visualizza[3];
            openFile>>visualizza;
            OpenFile.close();
            strcpy(visualizza2,visualizza);
            if(c>0)
            {
            if(strcmp(visualizza2,visualizza)!=0)
            {
            HWND hWindow = FindWindow(NULL, "visualizza");
            PostMessage(hWindow, WM_CLOSE, 0, 0);
            ShellExecute( NULL, "open","visualizza.exe",visualizza,0, SW_HIDE);
            c++;
            }
            }
            else
            {
                
            HWND hWindow = FindWindow(NULL, "visualizza");
            PostMessage(hWindow, WM_CLOSE, 0, 0);
            ShellExecute( NULL, "open","visualizza.exe",visualizza,0, SW_HIDE);
            c++;    
            }
            
            
            break;
    }
    PARTE PROGRAMMA 2 FORM

    codice:
    void __fastcall TForm1::FormCreate(TObject *Sender)
    {
    
    
    Form1->Image1->Picture->LoadFromFile(ParamStr(2));
    
    }

  10. #10
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    577
    devi modificare il tuo codice in modo che legga il tuo file di testo con i numeri e visualizzi la relativa immanine nel componente T-Image; credo che tu sia in grado di farlo con estrema semplicità e con molto meno codice visto che lo scopo di Borland Builder è ottenere programmi con poco codice

    codice:
    //---------------------------------------------------------------------------
    #include <vcl.h>
    #pragma hdrstop
    #include "Unit1.h"
    bool bAbort;
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
            bAbort=true;
            char visualizza2[3];
            int c=0;
            while(bAbort)
            {
                    Application->ProcessMessages();
                    ifstream OpenFile("file_numeri.txt");
                    char visualizza[3];
                    openFile>>visualizza;
                    OpenFile.close();
                    strcpy(visualizza2,visualizza);
                    if(c>0)
                    {
                            if(strcmp(visualizza2,visualizza)!=0)
                            {
                                    HWND hWindow = FindWindow(NULL, "visualizza");
                                    PostMessage(hWindow, WM_CLOSE, 0, 0);
                                    ShellExecute( NULL, "open","visualizza.exe",visualizza,0, SW_HIDE);
                                    c++;
                            }
                    }
                    else
                    {
                            HWND hWindow = FindWindow(NULL, "visualizza");
                            PostMessage(hWindow, WM_CLOSE, 0, 0);
                            ShellExecute( NULL, "open","visualizza.exe",visualizza,0, SW_HIDE);
                            c++;
                    }
                    break;
            }
            Form1->Image1->Picture->LoadFromFile(ParamStr(2));
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button2Click(TObject *Sender)
    {
            bAbort=false;
    }
    //---------------------------------------------------------------------------
    Ultima modifica di misterx; 24-11-2013 a 12:21

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.