win32 api output wie printf

elfvyn

Mitglied
Also ich hab ne editbox erstellt in die ich mit diversen Messages Nachrichten schreiben kann.. also so wie
Code:
SendMessage(hWndEditView,WM_SETTEXT,0, (LPARAM)(LPCTSTR)"test");
So da für habe ich eine Funktion geschrieben die mir von jeder beliebigen stelle in meinem Prog zu testzwecken etc in meinem editfenster was ausgibt.

Code:
OutputMsg(const char *string)

Jetzt möchte ich aber diese Funktion wie printf aufrufen.. also mit variabler parameteranzahl und steuerzeichen im string etc.!

Code:
OutputMsg(const char *id, ...)

soweit so gut aber gibts nun ne Funktion mit der ich das auch mein Fenster umbiegen kann ohne den String auseinanderzuplücken und die Variablen auszuwerten.. oder gehts vielleicht ganz anders?

thx schonmal im vorraus
 
Jo super.. das ist genau das was ich suche nur leider verwenden die in dem Beispiel
Code:
_vscprintf()
nur leider ist dies soweit ich das jetzt herausgefunden habe ab VC++.NET und nicht in meinem 6.0er drin. somit kann ich das Beispile nicht so verwenden und brauche eine alternative Funktion um die Länge herauszufinden!
Hier nochmal das Beispiel:
Code:
// crt_vsprintf.c
// This program uses vsprintf to write to a buffer.
// The size of the buffer is determined by _vscprintf.

#include <stdlib.h>
#include <stdarg.h>

void test( char * format, ... )
{
   va_list args;
   int len;
   char * buffer;

   va_start( args, format );
   len = _vscprintf( format, args ) // _vscprintf doesn't count
                               + 1; // terminating '\0'
   buffer = malloc( len * sizeof(char) );
   vsprintf( buffer, format, args );
   printf( buffer );
   free( buffer );
}

int main( void )
{
   test( "%d %c %d\n", 123, '<', 456 );
   test( "%s\n", "This is a string" );
}
 
Habs raus geht so, wen es interessiert
Code:
void MeinPrintf(const char *fmt,...)
{    
       
    int nTxtLen;
    va_list arg_ptr;
    int i=0;
    char buffer[]={'\0','\0'};
    char string[500];

    for(i=0;i<500;i++)
    {
      string[i]='\0';
    }

    va_start(arg_ptr, fmt);
    vsprintf(string, fmt, arg_ptr);
    va_end(arg_ptr);
//jetzt steht in string mein string ;-)
}
 
Zurück