Bild im Dialog anzeigen!



  • Unter Edit Eigenschaften vom EDIT Feld auf Multiline und den hacken von HScroll entfernen

    Frage: Was verstehst du unter zeile



  • Wusste nicht ob ich für jede Zeile aus meinem Text diese Funktion aufrufen muss. Aber das geht ja nicht da er immer nur den letzten funktionsaufruf dann in die Edit schreibt, bzw die vorhergehenden aufrufe halt überschrieben werden im Edit feld



  • geht schon wen man ne funktion schreibt hier n kleines Bsp.:

    http://www.winapi.net/index.php?inhalt=s10



  • ok danke

    das lp text ist dann ein String den ich der Funktion übergebe?

    muss ich statt hwnd mein Edit feld angeben oder? demnach wäre der hwnd übergabewert überflüssig oder?

    hab versucht durch

    char * lpText = {"test"};

    die funktion mal zu testen, kompilieren geht zwar aber es tut sich nix, habe auch das hwnd durch mein edit feld ersetzt.

    Glaub aber das dass noch net so richtig ist.



  • Eigentlich functioniert das so das positionierst du igendwo oben ueber WinMain

    BOOL Edit_AddText(HWND hWnd, LPCTSTR lpText)
    {
       DWORD dwStart = 0, dwEnd = 0;
       int nLen;
    
       nLen = GetWindowTextLength(hWnd);
       SendMessage(hWnd, EM_GETSEL, (WPARAM)&dwStart, (LPARAM)&dwEnd);
       SendMessage(hWnd, EM_SETSEL, (WPARAM)nLen, (LPARAM)nLen);
       SendMessage(hWnd, EM_REPLACESEL, (WPARAM)FALSE, (LPARAM)lpText);
       SendMessage(hWnd, EM_SETSEL, (WPARAM)dwStart, (LPARAM)dwEnd);
       return(TRUE);
    }
    

    und dan rufst du es so auf unter WM_CREATE oder WM_INITDIALOG:

    Edit_AddText(hEdit,"Dein Text");
    
    //oder
    char szText[]="Dein TEXT";
    Edit_AddText(GetDlgItem(hWnd,IDC_DEINEDIT),szText);
    


  • Ah ok Danke,

    Hab das jetzt aber folgendermaßen gelöst, zwar nicht für mich die perfekte lösung aber es geht schonmal.

    Ich lese den Text aus der Datei aus und sende ihn dann an das Edit feld.

    Problem ist nur das ich noch irgendein zeichen müll am ende mit bekomme wenn der Text schon aufgehört hat.
    Danke mal das muss am auslesen liegen, finde aber keinen Fehler.

    FILE *fp;
    	char *buffer;
    	int iFileSize;
    
    	fp = fopen(filename, "rb");			/* Öffnet Datei mit Lesezugriff */
    
    	if(fp != NULL)
        {
         fseek(fp, 0, SEEK_END);
         iFileSize = ftell(fp);
         buffer = malloc(iFileSize);
    
         fseek(fp, 0, SEEK_SET);
         fread(buffer, 1, iFileSize, fp);
         fclose(fp);
        }
    
    	Edit_AddText(GetDlgItem(hdlg, IDC_EDIT1), buffer);
    	free(buffer);
    


  • Was mir noch einfällt, ich musste damit das wie oben geht mein Text in 3 verschiedene Dateien Packen. Da ich jeden Text mit nem Seperaten Button in das Edit feld schreiben will.

    Finde das jetzt aber ziemlich blöd und würde die Texte lieber in ein Textfile machen. Aber die Funktionsweiße soll erhalten bleiben.

    Also das ich 3 Texte in nem Text File hab, Button 1 lädt nur Text eins, Button 2 zeigt nur Text 2 an usw.

    Damit müsste ich aber irgendwie in dem Textfile nen Start und Endpunkt zum auslesen festlegen können. ist das möglich nen bestimmten bereich auszulesen?



  • mueste mit strtok functioniern

    kl. bsp liest alles ein bis : ein
    und ab der while schleife den rest

    char* pToken;
    char time_0[6];
    char time_1[6]; 
    char szTextR1[10];
    
    pToken = strtok(szTextR1, ":");
    
    if (pToken) 
    { 
        sprintf(time_0,"%s",pToken); 
        while ( (pToken = strtok(NULL, ":")) ) 
        { 
           sprintf(time_1,"%s",pToken); 
        } 
    }
    

    must halt noch auf deine beduerfnisse abaendern obs geht



  • genau super funktion 🙂

    jetzt kann ich das alles in eine Datei Packen.

    Habe das jetzt so gemacht das ich die 3 Texte mit 3 unterschiedlichen Zeichen mit der strtok raushole.

    Also

    BLABLABLABLABLABLA
    BLABLABLALBLBLLAL
    |
    BLABLABLABLALBA
    BLALBLLLALBVLAL

    ERKGKREKGERGRE
    reKGKEJGREJGRE

    Das erste abzufragen ist ja einfach einfach mit strtok bis zum "|" abfragen.

    Wenn ich allerdings jetzt den Text zwischen "|" und "#" haben will wird schwerer.
    Also frage ich bis "#" damit der rest danach weg ist.

    Jetzt wollte ich den String bis zum "|" durchlaufen lassen und alles was danach kommt in einen neuen kopieren, damit ich den Text zwischen "|" und "#" nun bekomme.
    Denke von der Idee her ists soweit ok, aber ich kanns nicht in Code umsetzen da ich mit den String grad net klar komme.

    soweit habe ichs bereits:

    hilf = strtok(buffer, "#");
    
    			while(hilf[x] != "|")
    				x++;
    			for(x; hilf[x] != '\0'; x++)
    			{
    				temp[y] = hilf[x];
    				y++;
    			}
    			strcpy(ptoken, temp);
    

    Hier meine Variablen:

    char *buffer;
    	char *ptoken;
    	char temp[2048];
    	char hilf[2048];
    

    bekomme bei dieser Zeile ("hilf = strtok(buffer, "#");") immer die Meldung "Linker Operand muss ein L-Wert sein"

    ich hab grad irgendwie mit Strings/Array nen Problem.



  • So hab jetzt nochmal bissle gegoogelt und eine nette String funktion gefunden

    Strchr()

    Diese Sucht in einem String ein bestimmtes Zeichen.

    Habe das dann mal so Realisiert.

    ptoken = strtok(buffer, "#");
    			//strchr(ptoken, (int)'|'));
    			Edit_AddText(GetDlgItem(hdlg, IDC_EDIT1), strchr(ptoken, (char)'|'));
    

    jetzt sucht sie das | in meinem String.

    Dumm ist jetzt nur noch das sie das | auch noch mit Ausgibt. Jetzt müsste ich damit das weg geht sozusagen den beim String dieses Zeichen löschen und den Rest irgendwie behalten, aber ich weiß nicht wie.

    Noch ein PRoblem, damit ich dem Thread Titel auch wieder gerecht werde.

    Das mit dem Bild habe ich jetzt so geschrieben, allerdings passiert nichts.

    static HBITMAP hBitmap1;
    	static HDC BhDC;
    	static HDC hDC;
    
    ...
    
    /*HBITMAP*/ hBitmap1 = LoadImage(GetModuleHandle (NULL), "bitmap2.bmp", IMAGE_BITMAP, 405, 12, LR_DEFAULTCOLOR | LR_LOADFROMFILE);
    		 /*HDC*/ BhDC = CreateCompatibleDC(hDC);
    		 SelectObject(BhDC,hBitmap1);
    		 BitBlt(hDC,0,0,48,48,BhDC,0,0,SRCCOPY);
    

    Am anfang sagt mir VS2003 das er hDC nicht kennt. Also hab ich oben einfach "static HDC hDc"geschrieben. Im grunde weiß ich nicht mal wofür das ist. Denke das könnte es sein warum es nicht geht.

    Der Pfad zum Bild müsste richtig sein. die Bitmap ist im Projektordner und wird auch unter Ressourcendateien aufgelistet.



  • frage sind bestimmte voraussetzungen gesetzt um das logo/Bild aufzurufen denn das Picture Control oder auch Static Control mit SS_BITMAP Style Laden Bilddateien im format Bitmap direct aus der Resource

    vieleicht hilft dir dieses Bsp.: bei deinem Problem
    www.asajia.de/home/subpages/devlopment/sourcecodes/loadpicvcnet.rar


Anmelden zum Antworten