|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Mar 2001
Città: Roma
Messaggi: 2532
|
[C-WIN32] Disegnare finestra con editor grafico
Ciao,
ho un'applicazione che sto creando in .NET che usa la chiamata CreateWindowEx() con vari parametri per creare una finestra non modale sullo schermo. Volevo sapere se possibile modificare l'aspetto della finestra tamite l'editor grafico di VS piuttosto che con le chiamate a funzione dal codice. Di solito uso i dialog non modali che sono tranquillamente editabili, ma non riesco a sostituire la finestra con un dialog modale, anche se la CreateDialogParam dovrebbe sfruttare proprio la CreateWindowEx, quindi essere equivalente.. Mi consigliate di passare ai dialog modali (se si, come?) o qualche sistema per editare le finestre dall'editor grafico? grazie |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Scusa ... fammi capire. Stai lavorando proprio in .NET?? Cioè con un linguaggio tipo C#, VB.NET, ecc... e vuoi chiamare la CreateWindowEx???
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Mar 2001
Città: Roma
Messaggi: 2532
|
Lavoro con Visual Studio .NET ..linguaggio C++ misto C...
non con il framework .NET .. Forse mi sono espresso male.. ciao |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Comunque ti posso dire questo: intanto ti consiglio di usare le dialog modali, sono più semplici da gestire. Le dialog modali si creano con le funzioni DialogBoxXXX (ci sono 4 versioni) e si editano con il dialog editor del VC++. La dialog procedure deve essere gestita in modo un pochino diverso da quella per una dialog non modale. Ma non hai più bisogno di gestire il loop dei messaggi.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Mar 2001
Città: Roma
Messaggi: 2532
|
Grazie.
purtroppo i dialog modali bloccano l'esecuzione del programma, mentre io non devo bloccarla in attesa di eventi sulla finestra.. Non posso neppure usare un thread perchè ci ho già provato e non và... cioè, quella finestra non deve bloccare nessun flusso esecutivo, principale o thread che sia.. ciao |
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Se usi una dialog modale (DialogBoxXXX) il loop dei messaggi è già gestito internamente a queste funzioni mentre se usi una dialog "modeless" cioè non modale (CreateDialogXXX) devi gestire tu il loop dei messaggi. In ogni caso il thread principale di una applicazione è tipicamente sempre "occupato" nel loop dei messaggi per riceverli e dispacciarli alle finestre. Se devi fare una qualche elaborazione lunga che non deve essere interrotta devi usare per forza un thread separato perché comunque non devi interrompere il loop dei messaggi e non devi nemmeno bloccare l'esecuzione per troppo tempo in risposta ad un messaggio nella window/dialog procedure! Ma non sapendo bene cosa devi fare di preciso mi è difficile suggerirti qualcosa. Ciao.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Il thread deve funzionare a tutti i costi... Da sempre si fa così con i dialoghi modali...
Se la tua applicazione deve fare dei calcoli che non devono essere bloccati dai dialog modali allora crea un thread dove devi svolgere questi calcoli (fin dall'inizio) e la gestione dell'interfaccia la demandi al thread principale... Questo deve funzionare perchè l'ho fatto tante volte |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Mar 2001
Città: Roma
Messaggi: 2532
|
Se non fosse che io devo fare una libreria di sistema, ovvero una Gina di autenticazione per Windows...
è un componente critico, non un applicativo.. Quindi anche la gestione dei thread è delicata... Se metto un dialog modeless che blocca il flusso principale, mi si pianta tutto e l'autenticazione non funziona.. Se uso un thread, non riesco a "pilotarlo" come vorrei e introduco rischi di sicurezza.. L'unica soluzione che al momento mi funziona è una finestra non modale lanciata dal processo principale... se lancio un dialog, questo non mi funziona... Se decidessi di usare un thread per gestire un dialog modale, come dovrei fare? usare una createThread dal processo e poi all'interno della procedura del thread chiamare la DialogBox.... all'interno di un ciclo while infinito? (perchè altrimenti ad ogni risposta del dialog mi si chiuderebbe il thread Inoltre, è fondamentale che io possa gestire il messaggio WM_DEVICECHANGE in questa finestra perchè è l'unico avviso che il sistema manda quando c'è l'inserimento di un dispositivo esterno...quindi se per "gestione automatica" dei messaggi intendete che non posso controllare il WM_DEVICECHANGE, allora il dialog modale non và.. Non so se ora vi ho fatto capire meglio, ma visto il tipo di software non è tanto facile grazie cmq.. Ultima modifica di fedo : 21-12-2005 alle 00:47. |
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Mar 2001
Città: Roma
Messaggi: 2532
|
.
|
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Mar 2001
Città: Roma
Messaggi: 2532
|
non vi ho più sentito
Che mi dite? Intanto auguri! |
|
|
|
|
|
#11 | ||
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Ma il tuo caso è molto specifico perché stai lavorando a livello di sistema con le API Gina di autenticazione! E quindi essendo un argomento molto "delicato" e sicuramente complesso bisogna fare molta attenzione. Io personalmente non ho mai lavorato con queste API (e non sono esperto di sicurezza) e quindi non saprei darti alcuna "dritta". Quote:
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
||
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Mar 2001
Città: Roma
Messaggi: 2532
|
OK,
ma non esiste un GUI Designer per il C Win32? Ovvero, io sto creando le finestre con la CreateWindowEx e ci sto disegnando sopra con funzioni del tipo 'LineTo' , 'Rectangle', etc... Una scomodità mostruosa! Non esite un tool che mi fa disegnare cerchi, rettangoli , bottoni.. e poi mi tira fuori il codice C Win32 usando le funzioni che ho succitato? Grazie |
|
|
|
|
|
#13 |
|
Bannato
Iscritto dal: Apr 2005
Messaggi: 260
|
Non vedo l'utilità di costruire l'intera gui con lineto quando già l's.o. lo fa, se poi devi fare cose ke l's.o. nn fa, disegnale a mano con un editor di immagini e gliele piazzi su, nel caso ridimensioni, disegni la gui con immagini a blocchi.
|
|
|
|
|
|
#14 | |
|
Senior Member
Iscritto dal: Mar 2001
Città: Roma
Messaggi: 2532
|
Quote:
purtroppo è proprio la seconda cosa che hai detto vabbè, mi darò alla grafica "rozza" ciao |
|
|
|
|
|
|
#15 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#16 | |
|
Bannato
Iscritto dal: Apr 2005
Messaggi: 260
|
Quote:
nnn ti preoccupare, se vedi interfaccie fuori dallo standard di windows, tipo winamp, windows media player stesso, vuol dire ke usano immagini :P |
|
|
|
|
|
|
#17 |
|
Senior Member
Iscritto dal: Mar 2001
Città: Roma
Messaggi: 2532
|
Addirittura? Pure MediaPlayer? Non l'avrei mai detto
|
|
|
|
|
|
#18 | |
|
Senior Member
Iscritto dal: Mar 2001
Città: Roma
Messaggi: 2532
|
Quote:
ora sto cercando di mettere su un dialog, ma è un pò complesso.. ciao |
|
|
|
|
|
|
#19 | |
|
Bannato
Iscritto dal: Apr 2005
Messaggi: 260
|
Quote:
Ti dirò di +..........presente molti settaggi nel pannello di controllo ke hanno un interfaccia diversa ? anche il semplice "cerca" di windows ? Ecco quelli sono fatti in html |
|
|
|
|
|
|
#20 |
|
Senior Member
Iscritto dal: Mar 2001
Città: Roma
Messaggi: 2532
|
mai usata una tecnica simile..
Comunque interessante! Grazie |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 22:59.











Scusa ... fammi capire. Stai lavorando proprio in .NET?? Cioè con un linguaggio tipo C#, VB.NET, ecc... e vuoi chiamare la CreateWindowEx???








