Torna indietro   Hardware Upgrade Forum > Software > Programmazione

MSI Maestro 500 Wireless: ANC e 90 ore di autonomia a 70 euro
MSI Maestro 500 Wireless: ANC e 90 ore di autonomia a 70 euro
Wireless 2.4 GHz, Bluetooth 5.4, cancellazione attiva del rumore, design pieghevole e un'autonomia che mette in imbarazzo prodotti che costano il doppio. Le Maestro 500 non eccellono in nulla, ma offrono tutto. E a questo prezzo è difficile chiedere di più
NL-LC1 è il primo dissipatore a liquido AIO di Noctua: silenzio è la parola d'ordine
NL-LC1 è il primo dissipatore a liquido AIO di Noctua: silenzio è la parola d'ordine
Dopo anni di attesa e una lunga fase di sviluppo, Noctua entra nel mercato dei dissipatori a liquido AIO con la nuova serie NL-LC1. Forte dell'esperienza maturata nel raffreddamento ad aria, l'azienda austriaca promette di portare la propria filosofia fatta di qualità costruttiva, attenzione ai dettagli e silenziosità anche in questo segmento. Abbiamo provato il nuovo sistema per scoprire se riesce a distinguersi in un mercato ormai molto competitivo.
Boox Go 10.3 (Gen II) Lumi: il tablet e-ink con Android 15 e penna, dal prezzo super
Boox Go 10.3 (Gen II) Lumi: il tablet e-ink con Android 15 e penna, dal prezzo super
Arrivato sul mercato italiano a fine marzo, la serie Boox Go 10.3 (Gen II) offre Android 15, penna da 4096 livelli e retroilluminazione opzionale (nel modello da noi provato, Lumi, presente). La serie si compone di due tablet ePaper che fanno da e-reader, blocco note digitale e persino browser, tutto a un prezzo che fa dimenticare i prodotti di brand più blasonati
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 16-01-2008, 00:39   #1
IceCoder
Member
 
Iscritto dal: Dec 2007
Messaggi: 121
[C++]Colorare un singolo Button

sto impazzendo..devo riuscire a colorare un singolo button di una finestra..ho provato con SetSysColors e ho messo KO tutti i colori del sistema

questo è l'ultimo codice che ho provato a scrivere:
Codice:
	case WM_PAINT:
		PAINTSTRUCT ps;
		POINT p;
		HDC hButLoginDC = BeginPaint(hButtonLogin, &ps);
		RECT r;
		SetBkMode(hButLoginDC, OPAQUE);
		GetClientRect(hButtonLogin, &r);
		FillRect(hButLoginDC, &r, CreateSolidBrush(RGB(0, 255, 0)));
		EndPaint(hButtonLogin, &ps);

		
		break;
eseguendo il programma, ogni volta che viene generato WM_PAINT quel tasto diventa trasparente al 100% :|
IceCoder è offline   Rispondi citando il messaggio o parte di esso
Old 16-01-2008, 00:45   #2
vizzz
Senior Member
 
L'Avatar di vizzz
 
Iscritto dal: Mar 2006
Città: Bergamo
Messaggi: 2499
ma stai subclassando CButton?
http://cowo.supersized.org/archives/...d-CButton.html
__________________
ho concluso con: kvegeta, doctordb, Leland Gaunt.
vizzz è offline   Rispondi citando il messaggio o parte di esso
Old 16-01-2008, 00:49   #3
IceCoder
Member
 
Iscritto dal: Dec 2007
Messaggi: 121
non uso MFC, mi piace complicarmi la vita asd
IceCoder è offline   Rispondi citando il messaggio o parte di esso
Old 16-01-2008, 09:45   #4
kk3z
Senior Member
 
L'Avatar di kk3z
 
Iscritto dal: Nov 2003
Messaggi: 980
Quella roba li la stai facendo nella procedura del pulsante, vero? Lo hai subclassato?
kk3z è offline   Rispondi citando il messaggio o parte di esso
Old 16-01-2008, 10:39   #5
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da kk3z Guarda i messaggi
Quella roba li la stai facendo nella procedura del pulsante, vero? Lo hai subclassato?
Mi sa che sta programmando direttamente con le API Win32 e quella dovrebbe essere una WindowProc.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 16-01-2008, 10:52   #6
kk3z
Senior Member
 
L'Avatar di kk3z
 
Iscritto dal: Nov 2003
Messaggi: 980
Quote:
Originariamente inviato da cionci Guarda i messaggi
Mi sa che sta programmando direttamente con le API Win32 e quella dovrebbe essere una WindowProc.
(ok, so riconoscere le api e le windowproc )
Comunque, l'importante è quale procedura, se lo fa in quella della finestra che contiene il button, è chiaro che non funziona.
kk3z è offline   Rispondi citando il messaggio o parte di esso
Old 16-01-2008, 11:22   #7
IceCoder
Member
 
Iscritto dal: Dec 2007
Messaggi: 121
Quote:
Originariamente inviato da kk3z Guarda i messaggi
(ok, so riconoscere le api e le windowproc )
Comunque, l'importante è quale procedura, se lo fa in quella della finestra che contiene il button, è chiaro che non funziona.
si è la windowproc della finestra che contiene il button, e uso direttamente le API di windows..sapete come posso fare?
IceCoder è offline   Rispondi citando il messaggio o parte di esso
Old 16-01-2008, 14:35   #8
IceCoder
Member
 
Iscritto dal: Dec 2007
Messaggi: 121
scusate se faccio un piccolo UP ma sono curioso di capire dove sbaglio O.o
IceCoder è offline   Rispondi citando il messaggio o parte di esso
Old 16-01-2008, 17:13   #9
kk3z
Senior Member
 
L'Avatar di kk3z
 
Iscritto dal: Nov 2003
Messaggi: 980
Prova questo:

Codice:
#include <windows.h>

LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);

char szClassName[ ] = "CodeBlocksWindowsApp";

int WINAPI WinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument, int nCmdShow)
{
    HWND hwnd;
    MSG messages;
    WNDCLASSEX wincl;

    wincl.hInstance = hThisInstance;
    wincl.lpszClassName = szClassName;
    wincl.lpfnWndProc = WindowProcedure;
    wincl.style = CS_DBLCLKS;
    wincl.cbSize = sizeof (WNDCLASSEX);

    wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
    wincl.lpszMenuName = NULL;
    wincl.cbClsExtra = 0;
    wincl.cbWndExtra = 0;
    wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;

    if (!RegisterClassEx (&wincl))
        return 0;

    hwnd = CreateWindowEx (
           0,                   /* Extended possibilites for variation */
           szClassName,         /* Classname */
           "Code::Blocks Template Windows App",       /* Title Text */
           WS_OVERLAPPEDWINDOW, /* default window */
           CW_USEDEFAULT,       /* Windows decides the position */
           CW_USEDEFAULT,       /* where the window ends up on the screen */
           544,                 /* The programs width */
           375,                 /* and height in pixels */
           HWND_DESKTOP,        /* The window is a child-window to desktop */
           NULL,                /* No menu */
           hThisInstance,       /* Program Instance handler */
           NULL                 /* No Window Creation data */
           );

    ShowWindow (hwnd, nCmdShow);

    while (GetMessage (&messages, NULL, 0, 0))
    {
        TranslateMessage(&messages);
        DispatchMessage(&messages);
    }

    return messages.wParam;
}

LRESULT CALLBACK ButtonWindowProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    WNDPROC originalProc = (WNDPROC)GetProp(hwnd, "OriginalProc");
    
    switch(message)
    {
        case WM_PAINT:
        {
            RECT r;
            GetClientRect(hwnd, &r);
            
            PAINTSTRUCT ps;
            HDC hdc = BeginPaint(hwnd, &ps);
            
            FillRect(hdc, &r, CreateSolidBrush(RGB(0, 255, 0)));
            
            char windowText[256];
            GetWindowText(hwnd, windowText, 256);
            
            SetBkMode(hdc, TRANSPARENT);
            DrawText(hdc, windowText, strlen(windowText), &r, DT_CENTER|DT_VCENTER);
            
            EndPaint(hwnd, &ps);
        }
        return TRUE;
        
        case WM_MOUSEMOVE:
        case WM_LBUTTONDOWN:
        case WM_LBUTTONDBLCLK:
        case WM_LBUTTONUP:
        case WM_RBUTTONDOWN:
        case WM_RBUTTONDBLCLK:
        case WM_RBUTTONUP:
        {
            InvalidateRect(hwnd, NULL, TRUE);
        }
        break;
        
        case WM_DESTROY:
        {
            SetWindowLong(hwnd, GWL_WNDPROC, (LONG)originalProc);
            RemoveProp(hwnd, "OriginalProc");
        }
        break;
    }
    
    return CallWindowProc(originalProc, hwnd, message, wParam, lParam);
}

LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)
    {
        case WM_CREATE:
        {
            HWND button = CreateWindow("BUTTON", "sono colorato!", WS_CHILD|WS_VISIBLE, 10,10,150,25,
                hwnd, 0, GetModuleHandle(0), 0);
            SetProp(button, "OriginalProc", (HANDLE)GetWindowLong(button, GWL_WNDPROC));
            SetWindowLong(button, GWL_WNDPROC, (LONG)ButtonWindowProc);
        }
        break;
        
        case WM_DESTROY:
            PostQuitMessage (0);
            break;
            
        default:
            return DefWindowProc (hwnd, message, wParam, lParam);
    }

    return 0;
}
PS: è davvero una brutta abitudine colorare i pulsanti.
kk3z è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


MSI Maestro 500 Wireless: ANC e 90 ore di autonomia a 70 euro MSI Maestro 500 Wireless: ANC e 90 ore di autono...
NL-LC1 è il primo dissipatore a liquido AIO di Noctua: silenzio è la parola d'ordine NL-LC1 è il primo dissipatore a liquido A...
Boox Go 10.3 (Gen II) Lumi: il tablet e-ink con Android 15 e penna, dal prezzo super Boox Go 10.3 (Gen II) Lumi: il tablet e-ink con ...
Gigabyte MO32U24 OLED: il 4K a 240Hz su un pannello OLED ideale per il gaming Gigabyte MO32U24 OLED: il 4K a 240Hz su un panne...
Recensione realme 16 5G: lo smartphone con Selfie Mirror ha una batteria da 6550mAh Recensione realme 16 5G: lo smartphone con Selfi...
ASUS ROG Strix LC IV: prestazioni e impa...
Gemini Code Assist e Gemini CLI danno l'...
Windows: problemi di avvio per alcune ap...
QuEra sbaraglia tutte le previsioni e pr...
Reno16 Series ufficiale: OPPO annuncia l...
Previsioni sempre più fosche per il 2026...
GTA V: upgrade gratuito a PS5 e Xbox Ser...
Lenovo ThinkTab X11: il tablet impermeab...
Android 17: problemi di connettività Wi-...
Quarto giorno di Prime Day anticipato Am...
SwitchBot Smart Lock Ultra, ecco perch&e...
Altro che transistor, il vero limite dei...
Ring sconta due videocamere nuovissime: ...
Prime Day anticipato, sfida action cam d...
L'IA si diffonde tra gli adulti, ma la f...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 13:15.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v