Color Dialog

Moderator: Enrico Maria Giordano

Color Dialog

Postby stefano » Tue Aug 30, 2011 8:36 pm

Ciao,

Utilizzo GradBrush() per colorare lo sfondo delle fineste di dialogo e mi sono accorto che se passo da dialog 1 a dialog 2 il colore è ok. Mentre quando ritorno da dialog 2 a dialog 1 ed eseguo un refresh … dialog 1 prende il colore del 2 dialogbox .

Ho risolto facendo eseguire nuovamente GradBrush() dopo la chiusura del 2 dialog

@ 3, 2 BUTTON "dialog 2" OF oDlg ACTION (DIALOG2(),GradBrush( oDlg,nRGB( 255, 255, 255 ), rgb(255,246,143 )))

… ci sono altre idee ??

Gazie e Saluti
Stefano


un pezzo di codice per prova:

// Color Dialog test

#include "FiveWin.ch"

static oDlg,oDlg2
//----------------------------------------------------------------------------//

function Main()

DEFINE DIALOG oDlg TITLE "Dialog 1" FROM 0, 0 TO 20, 40 TRANSPARENT

@ 3, 2 BUTTON "dialog 2" OF oDlg ACTION DIALOG2()

* Per ottenere la pittura corretta
* @ 3, 2 BUTTON "dialog 2" OF oDlg ACTION (DIALOG2(),GradBrush( oDlg,nRGB( 255, 255, 255 ),rgb(255,246,143 )))

ACTIVATE DIALOG oDlg CENTERED ON INIT GradBrush( oDlg,nRGB( 255, 255, 255 ),rgb(255,246,143 ))

return nil

function DIALOG2()

DEFINE DIALOG oDlg2 TITLE "Dialog 2" FROM 0, 0 TO 10, 20 TRANSPARENT

@ 3, 2 BUTTON "dialog 1" OF oDlg2 ACTION (oDlg2:END(),oDlg:refresh())

ACTIVATE DIALOG oDlg2 CENTERED ON INIT GradBrush( oDlg2,nRGB( 255, 25, 25 ),nRGB(255, 69, 0))

return nil

STATIC FUNCTION GradBrush( oDlgkk,color1,color2)
local hDC, hBmp, hBmpOld,obrush

hDC = CreateCompatibleDC( oDlgkK:GetDC() )
hBmp = CreateCompatibleBitMap( oDlgkK:hDC, oDlgkK:nWidth, oDlgkK:nHeight )
hBmpOld = SelectObject( hDC, hBmp )

Gradient( hDC, {0, 0, oDlgkk:nHeight, oDlgKk:nWidth } ,color1,color2, .t. )

DeleteObject( oDlgkK:oBrush:hBrush )
oDlgkK:oBrush:hBitmap = hBmp
oDlgkK:oBrush:hBrush = CreatePatternBrush( hBmp )
SelectObject( hDC, hBmpOld )
oDlgKk:ReleaseDC()

RETURN (nil)

//-------------------------------------------------------------------//
DLL32 FUNCTION CREATECOMPATIBLEBITMAP( hDC AS LONG,;
nWidth AS LONG,;
nHeight AS LONG) AS LONG;
PASCAL FROM "CreateCompatibleBitmap" LIB "gdi32.dll"
FWH 14.11 + xHarbour + bcc582
stefano
 
Posts: 80
Joined: Tue Mar 25, 2008 9:03 pm
Location: ITALIA

Re: Color Dialog

Postby Enrico Maria Giordano » Wed Aug 31, 2011 8:02 am

Ho provato il tuo esempio ma non ho riscontrato il problema (almeno su XP). Comunque, se la tua versione la supporta, è meglio utilizzare la nuova clausola GRADIENT del comando DEFINE DIALOG.

Comunque, prova ad aggiungere anche la clausola ON PAINT con la chiamata a GradBrush().

EMG
User avatar
Enrico Maria Giordano
 
Posts: 8715
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia

Re: Color Dialog

Postby Maurizio » Wed Aug 31, 2011 10:36 am

Ciao Enrico ,
qualè la nuova clausola GRADIENT del comando DEFINE DIALOG ?
forse _GRADIENTBRUSH ?

Maurizio
User avatar
Maurizio
 
Posts: 824
Joined: Mon Oct 10, 2005 1:29 pm

Re: Color Dialog

Postby Enrico Maria Giordano » Wed Aug 31, 2011 11:12 am

Ops! Volevo dire la clausola GRADIENT del comando DEFINE BRUSH, sorry.

EMG
User avatar
Enrico Maria Giordano
 
Posts: 8715
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia


Return to All products support

Who is online

Users browsing this forum: No registered users and 5 guests