Visualizzazione dei risultati da 1 a 8 su 8

Visualizzazione discussione

  1. #4
    1. Per il parsing, fai molto prima con una wscanf;
    2. per costruire un COLORREF usa la macro RGB, come commentato nel tuo codice:
    codice:
    int r, g, b;
    if(wscanf(riga, L"BkColor = ( %d , %d , %d )", &r, &g, &b)==3) {
        FormaRect.bckground = RGB(r, g, b);
    }
    ma il risultato è che FormaRect.bckground vale solo 255 , io mi aspetto 255,0,0.
    Anche facendo le cose correttamente (con la macro RGB), ti verrà fuori un unico numero, dato che COLORREF è semplicemente un intero a 32 bit, in cui vengono "impaccati" i tre colori nei tre byte bassi. Il formato di un COLORREF è 0x00bbggrr, dove bb gg e rr sono (in esadecimale) i valori corrispondenti a blu, verde e rosso, per cui ad un RGB(10, 20, 30) corrisponde il valore 1971210. Infatti:
    R = 10 => 0x0a
    G = 20 => 0x14
    B = 30 => 0x1e
    e 1971210 == 0x1e140a
    (o anche, 1971210 == 30*65536 + 20*256 + 10)
    Ultima modifica di MItaly; 12-05-2016 a 14:53
    Amaro C++, il gusto pieno dell'undefined behavior.

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.