kostenloser Webspace werbefrei: lima-city


Mein gemachter Texteditorr

lima-cityForumProgrammiersprachenC/C++ und D

  1. Autor dieses Themas

    gollum1990

    gollum1990 hat kostenlosen Webspace.

    Ich habe ein Problem mit nem Texteditor, der will die Daten nicht als PHP abspeichern:
    include <windows.h>

    #include "Main.h"

    static char g_szClassName[] = "MyWindowClass";
    static HINSTANCE g_hInst = NULL;

    #define IDC_MAIN_TEXT 1001

    BOOL LoadFile(HWND hEdit, LPSTR pszFileName)
    {
    HANDLE hFile;
    BOOL bSuccess = FALSE;

    hFile = CreateFile(pszFileName, GENERIC_READ, FILE_SHARE_READ, NULL,
    OPEN_EXISTING, 0, 0);
    if(hFile != INVALID_HANDLE_VALUE)
    {
    DWORD dwFileSize;
    dwFileSize = GetFileSize(hFile, NULL);
    if(dwFileSize != 0xFFFFFFFF)
    {
    LPSTR pszFileText;
    pszFileText = (LPSTR)GlobalAlloc(GPTR, dwFileSize + 1);
    if(pszFileText != NULL)
    {
    DWORD dwRead;
    if(ReadFile(hFile, pszFileText, dwFileSize, &dwRead, NULL))
    {
    pszFileText[dwFileSize] = 0; // Null terminator
    if(SetWindowText(hEdit, pszFileText))
    bSuccess = TRUE; // It worked!
    }
    GlobalFree(pszFileText);
    }
    }
    CloseHandle(hFile);
    }
    return bSuccess;
    }

    BOOL SaveFile(HWND hEdit, LPSTR pszFileName)
    {
    HANDLE hFile;
    BOOL bSuccess = FALSE;

    hFile = CreateFile(pszFileName, GENERIC_WRITE, 0, 0,
    CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
    if(hFile != INVALID_HANDLE_VALUE)
    {
    DWORD dwTextLength;
    dwTextLength = GetWindowTextLength(hEdit);
    if(dwTextLength > 0)// No need to bother if there's no text.
    {
    LPSTR pszText;
    pszText = (LPSTR)GlobalAlloc(GPTR, dwTextLength + 1);
    if(pszText != NULL)
    {
    if(GetWindowText(hEdit, pszText, dwTextLength + 1))
    {
    DWORD dwWritten;
    if(WriteFile(hFile, pszText, dwTextLength, &dwWritten, NULL))
    bSuccess = TRUE;
    }
    GlobalFree(pszText);
    }
    }
    CloseHandle(hFile);
    }
    return bSuccess;
    }

    BOOL DoFileOpenSave(HWND hwnd, BOOL bSave)
    {
    OPENFILENAME ofn;
    char szFileName[MAX_PATH];

    ZeroMemory(&ofn, sizeof(ofn));
    szFileName[0] = 0;

    ofn.lStructSize = sizeof(ofn);
    ofn.hwndOwner = hwnd;
    ofn.lpstrFilter = "PHP Files (*.php)\0*.php\0";
    ofn.lpstrFile = szFileName;
    ofn.nMaxFile = MAX_PATH;
    ofn.lpstrDefExt = "php";

    if(bSave)
    {
    ofn.Flags = OFN_EXPLORER | OFN_PATHMUSTEXIST | OFN_HIDEREADONLY |
    OFN_OVERWRITEPROMPT;

    if(GetSaveFileName(&ofn))
    {
    if(!SaveFile(GetDlgItem(hwnd, IDC_MAIN_TEXT), szFileName))
    {
    MessageBox(hwnd, "Tut mir Leid die Datei konnte nicht gespeichert werden.", "Error",
    MB_OK | MB_ICONEXCLAMATION);
    return FALSE;
    }
    }
    }
    else
    {
    ofn.Flags = OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
    if(GetOpenFileName(&ofn))
    {
    if(!LoadFile(GetDlgItem(hwnd, IDC_MAIN_TEXT), szFileName))
    {
    MessageBox(hwnd, "Datei konnte nicht geldaen werden", "Error",
    MB_OK | MB_ICONEXCLAMATION);
    return FALSE;
    }
    }
    }
    return TRUE;
    }

    LRESULT CALLBACK WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam)
    {
    switch(Message)
    {
    case WM_CREATE:
    CreateWindow("EDIT", "",
    WS_CHILD | WS_VISIBLE | WS_HSCROLL | WS_VSCROLL | ES_MULTILINE |
    ES_WANTRETURN,
    CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
    hwnd, (HMENU)IDC_MAIN_TEXT, g_hInst, NULL);

    SendDlgItemMessage(hwnd, IDC_MAIN_TEXT, WM_SETFONT,
    (WPARAM)GetStockObject(DEFAULT_GUI_FONT), MAKELPARAM(TRUE, 0));
    break;
    case WM_SIZE:
    if(wParam != SIZE_MINIMIZED)
    MoveWindow(GetDlgItem(hwnd, IDC_MAIN_TEXT), 0, 0, LOWORD(lParam),
    HIWORD(lParam), TRUE);
    break;
    case WM_SETFOCUS:
    SetFocus(GetDlgItem(hwnd, IDC_MAIN_TEXT));
    break;
    case WM_COMMAND:
    switch(LOWORD(wParam))
    {
    case CM_FILE_OPEN:
    DoFileOpenSave(hwnd, FALSE);
    break;
    case CM_FILE_SAVEAS:
    DoFileOpenSave(hwnd, TRUE);
    break;
    case CM_FILE_EXIT:
    PostMessage(hwnd, WM_CLOSE, 0, 0);
    break;
    case CM_ABOUT:
    MessageBox (NULL, "Das ist mein Texteditor" , "About...", 0);
    }
    break;
    case WM_CLOSE:
    DestroyWindow(hwnd);
    break;
    case WM_DESTROY:
    PostQuitMessage(0);
    break;
    default:
    return DefWindowProc(hwnd, Message, wParam, lParam);
    }
    return 0;
    }


    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
    LPSTR lpCmdLine, int nCmdShow)
    {
    WNDCLASSEX WndClass;
    HWND hwnd;
    MSG Msg;

    g_hInst = hInstance;

    WndClass.cbSize = sizeof(WNDCLASSEX);
    WndClass.style = 0;
    WndClass.lpfnWndProc = WndProc;
    WndClass.cbClsExtra = 0;
    WndClass.cbWndExtra = 0;
    WndClass.hInstance = g_hInst;
    WndClass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    WndClass.hCursor = LoadCursor(NULL, IDC_ARROW);
    WndClass.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
    WndClass.lpszMenuName = "MAINMENU";
    WndClass.lpszClassName = g_szClassName;
    WndClass.hIconSm = LoadIcon(NULL, IDI_APPLICATION);

    if(!RegisterClassEx(&WndClass))
    {
    MessageBox(0, "Fenster Register unterbrochen", "Error!",
    MB_ICONEXCLAMATION | MB_OK | MB_SYSTEMMODAL);
    return 0;
    }

    hwnd = CreateWindowEx(
    WS_EX_CLIENTEDGE,
    g_szClassName,
    "Hansen?s Editor",
    WS_OVERLAPPEDWINDOW,
    CW_USEDEFAULT, CW_USEDEFAULT, 320, 240,
    NULL, NULL, g_hInst, NULL);

    if(hwnd == NULL)
    {
    MessageBox(0, "Window Creation Failed!", "Error!",
    MB_ICONEXCLAMATION | MB_OK | MB_SYSTEMMODAL);
    return 0;
    }

    ShowWindow(hwnd, nCmdShow);
    UpdateWindow(hwnd);

    while(GetMessage(&Msg, NULL, 0, 0))
    {
    TranslateMessage(&Msg);
    DispatchMessage(&Msg);
    }
    return Msg.wParam;
    }


  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. n********r

    Kannst du vielleicht deinen Code eingrenzen, wo es vielleicht ungef?hr dran liegen k?nnte?
    Das w?re dann einfach und uns vielleicht sagen, welches Betriebsystem, und was f?r einen Compilier du nutzt.
    Danke
  4. Autor dieses Themas

    gollum1990

    gollum1990 hat kostenlosen Webspace.

    Ich benutze Visual Studio, aber den Edotor habe ich mit Dev-c++ kompiliert. Also auf Deutsch

    Geschrieben in Visual Studio 2005, kompiliert in Dev-c++
  5. Ich hab's kompiliert und keine Fehler gehabt. Auch bei der Ausf?hrung des Programms gibt's nix zu meckern. Sag mal was dein genaues Problem ist. Aso und kann es sein das der Code garnet von dir ist sondern von hier http://cboard.cprogramming.com/archive/index.php/t-27434.html ?
  6. Autor dieses Themas

    gollum1990

    gollum1990 hat kostenlosen Webspace.

    Das Problem ist wenn ich in starte und
    ein "Hello" mache in PHP und es speichere, tut er es als txt abspecherrn
  7. n********r

    Bitte pass auf, was du als deins verkaufst, wenn es nicht deins ist.
    Es k?nnte sp?ter vielleicht mal ?rger geben.

    Also wenn ich den Code von der Seite compiliere, mit Dev-C++ dann bekomme ich folgende Meldung:


    [Linker error] undefined reference to `GetSaveFileNameA@4'

    [Linker error] undefined reference to `GetOpenFileNameA@4'

    [Linker error] undefined reference to `GetStockObject@4'

    Es kann nat?rlich auch an mir liegen.:blah:
  8. Oh Gott.

    Ich habe ein Problem mit nem Texteditor, der will die Daten nicht als PHP abspeichern:
    [...]

    Das ist C++! und kein PHP!
    PHP ist eine Sprache, die interpretiert wird! C++ wird complimiert...
  9. lucas er meint die Endung *.php aber wie gesagt bei mir klappt es keine Fehler beim compeliren keine beim Ausf?hren und die Datei wird als *.php abgespeichert.

    newwarrior schrieb:
    [Linker error] undefined reference to `GetSaveFileNameA@4'

    [Linker error] undefined reference to `GetOpenFileNameA@4'

    [Linker error] undefined reference to `GetStockObject@4'

    Es kann nat?rlich auch an mir liegen.:blah:


    Das tut es auch, du musst die Libs mit einbinden/linken in dem Fall m?sste es gdi32.lib und comdlg32.lib sein.
  10. n********r

    Und wie genau kann ich bitte die beiden Libs einf?gen?
    Danke
  11. Ich kenn mich leider nicht mit Dev-C++ aus, mir is aber so als k?nnte man das auch ?ber die Option der IDE l?sen.
  12. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!