Problem mit Einlesen aus EditFeld



  • Hey @ all,

    ich habe das Problem,dass beim Auslesen eines Edit Feldes nur 1 Zeichen ausgelesen wird.Würde gerne die Anzahl der eingelesenen Character und den eingelesenen String in eine Datei schreiben.Die Anzahl wird richtig gezählt nur der String besteht immer nur aus dem ersten Character.Wäre super,wenn ihr mir helfen könntet.

    Anbei der Quellcode:

    Danke schonmal im vorraus

    #include <windows.h>
    #include <stdio.h>
    #include "functions.h"

    //Neues Produkt Dialog
    LRESULT CALLBACK neuesProduktProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam )
    {
    CHAR lpszName[16];
    WORD anzChar;
    FILE *fp;
    switch(msg)
    {
    case WM_CREATE:
    CreateWindow(TEXT("Edit"), TEXT(""),
    WS_VISIBLE | WS_CHILD | WS_BORDER,
    50, 50, 80, 25,
    hwnd, (HMENU) ID_EDITNAME, NULL, NULL);
    CreateWindow(TEXT("Button"), TEXT("Hinzu"),
    WS_VISIBLE | WS_CHILD | WS_BORDER,
    100, 50, 80, 25,
    hwnd, (HMENU) ID_EDITHINZU, NULL, NULL);
    break;

    case WM_COMMAND:
    if(LOWORD(wParam) == ID_EDITHINZU) {
    anzChar = (WORD) SendDlgItemMessage(hwnd,
    ID_EDITNAME,
    EM_LINELENGTH,
    (WPARAM) 0,
    (LPARAM) 0);
    *((LPWORD)lpszName) = anzChar;
    SendDlgItemMessage(hwnd,
    ID_EDITNAME,
    EM_GETLINE,
    (WPARAM) 0, // line 0
    (LPARAM) lpszName);
    lpszName[anzChar] = '\0';
    fp = fopen("test.txt","a");
    if(fp == NULL) {
    MessageBox(hwnd,TEXT("Datei konnte nicht geöffnet werden"),TEXT("Fehler beim Öffnen der Datei"),MB_OK);
    }
    else {
    fprintf(fp,"%i%s",anzChar,lpszName);
    fclose(fp);
    }
    }
    break;

    case WM_CLOSE:
    DestroyWindow(hwnd);
    break;

    }
    return (DefWindowProc(hwnd, msg, wParam, lParam));

    }



  • Benutze bitte die C++-Tags.
    Warum holst du dir nicht einfach das Handle deines Fensters und fragst es mit

    GetWindowText();
    

    aus, der Return-Wert gibt die ausgelesenen Zeichen an.

    edit:

    Es ist sowieso sinnlos, warum nimmst du nicht den Return-Wert von

    CreateWindow(...);
    

    und liest dann den Text mit

    GetWindowText(...);
    

    aus?
    Das ist ja überhaupt kein Dialog!


Anmelden zum Antworten