Cambio testo in un Static Text

di il
17 risposte

Cambio testo in un Static Text

Salve a tutti!!! avrei bisogno di un chiarimento riguardo l'uso della funzione SetWindowText... allora, quello che ho fatto è un semplice dialogo con resedit in cui messo solo una Static Text... da codeblock poi ho scritto un codice che mi fa chiudere il programma quando pigio la frecci in giù (VK_DOWN per intenderci), mediante la funzione GetAsyncKeyState().. fin qui tutto bene... ora se voglio cambiare il testo dello Static Text quando pigio un altro tasto, quale potrebbe essere la soluzione ? usando SetWindowText?? ho provato ma non succede nulla...
per farla breve, pigio per esempio VK_UP e mi appare scritto nello static text ad esempio "hai pigiato la freccia sù"...
grazie a tutti per eventuali risposte!!

17 Risposte

  • Re: Cambio testo in un Static Text

    Ma ti serve per un keylogger ?
  • Re: Cambio testo in un Static Text

    Penso che il keylogger sia moooooooooolto più difficile da fare... è solo per capire come potrebbe funzionare... tutto qui... si lo so, a prima impressione uno dice quello che hai detto tu... ma quel che chiedo è un 'altra cosa, non come fare un keylogger ?
  • Re: Cambio testo in un Static Text

    Puoi mostrare il codice che hai scritto e che non funziona?

    Descrivi anche il contesto (IDE, compilatore, librerie grafiche ...) ...
  • Re: Cambio testo in un Static Text

    Ok... allora uso CodeBlocks e ResEdit per sviluppare le finestre di dialogo, poi aggiungo nei file rc e h che mi crea CodeBlock quando faccio uno nuovo progetto Win32 , quelli che mi crea ResEdit una volta che finisco la finestra... il codice del main è:
    #define WIN32_LEAN_AND_MEAN
    
    #include <windows.h>
    
    #include "resource.h"
    
    HINSTANCE hInst;
    
    BOOL CALLBACK DialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
    
    {
    
      if (GetAsyncKeyState(VK_DOWN)) {
          EndDialog(hwndDlg, 0);
                return FALSE;
    
    }
    if (GetAsyncKeyState(VK_UP)) {
     BOOL WINAPI SetWindowText(
          HWND CAPTION,
          LPCTSTR lpString
    );
    
    }
    }
    
    int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
    {
        hInst = hInstance;
    
        // The user interface is a modal dialog box
        return DialogBox(hInstance, MAKEINTRESOURCE(DLG_MAIN), NULL, (DLGPROC)DialogProc);
    }
    
    quello di resource.rc :
    // Generated by ResEdit 1.5.11
    // Copyright (C) 2006-2012
    // http://www.resedit.net
    
    #include <windows.h>
    #include <commctrl.h>
    #include <richedit.h>
    #include "resource.h"
    
    
    
    
    //
    // Dialog resources
    //
    LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
    IDD_DIALOG1 DIALOG 0, 0, 186, 95
    STYLE DS_3DLOOK | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_CAPTION | WS_VISIBLE | WS_POPUP | WS_SYSMENU
    CAPTION "Dialog"
    FONT 8, "Ms Shell Dlg"
    {
        LTEXT           "", IDC_STATIC, 15, 10, 146, 69, SS_LEFT
       
    }
    e quello di resource.h :
    #ifndef IDC_STATIC
    #define IDC_STATIC (-1)
    #endif
    
    #define IDD_DIALOG1                             100
    #define DLG_MAIN 100
    #define WM_CLOSE 0x0010
    #define WM_SETTEXT                      0x000C
  • Re: Cambio testo in un Static Text

    Quando compilo e lancio il programma tutto ok ma quando pigio la freccia in su, mi aspetto che al posto di "Dialog", mi venga fuori "lpString"... inceve nulla.. forse sbaglio che sicuramente non ho capito come funziona bene la funzione... sicuro...
  • Re: Cambio testo in un Static Text

    Se anche qualcuno mi possa fare un esempio di come si può usare SetWindowText() , mi sarebbe molto utile...
  • Re: Cambio testo in un Static Text

    In quel modo non stai richiamando la funzione.

    E' meglio usare la SetDlgItemText in questo modo
    
    if (GetAsyncKeyState(VK_UP))
        SetDlgItemText(hwndDlg, IDC_STATIC, "Quello che vuoi");
    
    In ogni caso, nella DialogProc ci dovrebbe stare lo switch che serve a gestire i vari messaggi. Stai usando male quella funzione (o forse non sai esattamente a cosa serve e come si usa ...)
  • Re: Cambio testo in un Static Text

    Grazie mille... si lo so che bisogna usare switch e poi i vari case... hai ragione comunque sono ancora un po' inesperto è che non sono cose poi tanto semplici ma meno male che ci sono esperti come te ... grazie
  • Re: Cambio testo in un Static Text

    Scusami... non mi succede niente neanche aggiungendo quel che hai detto tu...
  • Re: Cambio testo in un Static Text

    Cerca di porre il focus sulla finestra altrimenti la DialogProc non riceve nessun messaggio.

    Prova e vedrai che funziona ma è l'uso sbagliato della DialogProc il problema....
  • Re: Cambio testo in un Static Text

    Dov'è il MessageLoop con TranslateMessage e DispatchMessage? Studia prima come funziona una applicazione Win32 GUI poi crei un programma.

    http://www.codeproject.com/Articles/227831/A-dialog-based-Win32-C-program
  • Re: Cambio testo in un Static Text

    Studierò ma non sono facili da capire....
  • Re: Cambio testo in un Static Text

    Tranqui non era una offesa. Volevo solo dirti che il programma è incompleto e non può partire così.
  • Re: Cambio testo in un Static Text

    Come non parte? Non capisco.. Quando faccio compila e avvia mi viene fuori la finestra e quando pigio la freccettina in bsso si chiude... Non dovrebbe??? O.o
Devi accedere o registrarti per scrivere nel forum
17 risposte