CString -> unsinged char



  • Kann mir einer von euch sagen wie ich CString in unsinged char konvertiere



  • dürfte ich fragen wozu?



  • Also auf nen char* "castest" du mit LPCTSTR(meinString);
    Aber auf ein unsigned char (1 byte, u know?) is imho nonsens.



  • Um den inhalt des CStrings in der Funktion drawLine( RGB(rot,grun,blau),xapos,yapos,xepos,yepos). Da ich die Werte für rot grün und blau in jeweils einem CString habe.

    Wenns ned direkt geht kann es auch über eine zwischenkonvertierung laufen.

    PS kann ich int in unsinged char konvertieren?



  • da musst du nichts casten, das geht mit dem [] operator



  • blind schrieb:

    PS kann ich int in unsinged char konvertieren?

    int a = 2;
    char b = a;
    


  • Ich weiß ja nicht was du wirklich willst,
    aber wenn du dem Markro RGB() 3 Integer übergibst dann bastelt er dir daraus den gewünschten COLORREF, oder?

    Und einen CString wandle ich meistens mit "atoi()" in einen Integer um.

    CString str = "200";
    int a = atoi(str);
    
    drawLine( RGB(atoi(rot),atoi(grun),atoi(blau)),xapos,yapos,xepos,yepos);
    

    Der Senf von mir kommt zwar reichlich spät aber ich wolt halt auch was sag´n 😉

    MFG Sigi



  • Hier noch ein kleines Beispiel zur eigendlichen Frage.

    blind schrieb:

    Kann mir einer von euch sagen wie ich CString in unsinged char konvertiere

    CString str = "200";
    UCHAR c[10];
    
    strcpy((char*)c,str);
    
    //jetzt steht im c[] "200" (wozu auch immer du das brauchst)
    

    BYE, SIGI



  • BigSigi schrieb:

    Ich weiß ja nicht was du wirklich willst,
    aber wenn du dem Markro RGB() 3 Integer übergibst dann bastelt er dir daraus den gewünschten COLORREF, oder?

    nö, beim RGB Makro übergibt man 3 unsigned chars, integer ist zu groß



  • COLORREF RGB(
      BYTE bRed,    // red component of color
      BYTE bGreen,  // green component of color
      BYTE bBlue    // blue component of color
    );
    
    #define RGB(r, g ,b)  ((DWORD) (((BYTE) (r) | \ 
                          ((WORD) (g) << 8)) | \ 
                          (((DWORD) (BYTE) (b)) << 16)))
    

    bRed,bGreen,bBlue können einen Wertebereich zwischen 0 und 255 einnehmen, stimmt!

    und ich hab bis jetzt immer integer verwendet. Wird im MACRO eh in BYTE gecastet.
    ich werd mich aber umstellen, denn wenn ich mich recht erinnere verwenden nicht alle PC´s für einen Integer 4 Bytes(sowie bei mir) sondern 2. 😃

    Meisten verwend ich sowieso die 0x00FFFFFFL

    TSCHAU, SIGI


Anmelden zum Antworten