Avatar billede snuseren.dk Nybegynder
22. maj 2003 - 14:29 Der er 13 kommentarer og
1 løsning

Hvad er fejlen?

Hej!

Jeg har fået sammen sat følgende:

#define IDC_MAIN_EDIT    101
int main()
{
    case WM_CREATE:
    {
        HFONT hfDefault;
        HWND hEdit;

        hEdit = CreateWindowEx(WS_EX_CLIENTEDGE, "EDIT", "",
            WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_HSCROLL | ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL,
            0, 0, 100, 100, hwnd, (HMENU)IDC_MAIN_EDIT, GetModuleHandle(NULL), NULL);
        if(hEdit == NULL)
            MessageBox(hwnd, "Could not create edit box.", "Error", MB_OK | MB_ICONERROR);

        hfDefault = GetStockObject(DEFAULT_GUI_FONT);
        SendMessage(hEdit, WM_SETFONT, (WPARAM)hfDefault, MAKELPARAM(FALSE, 0));
    }
    break;
    case WM_SIZE:
        hEdit = CreateWindowEx(WS_EX_CLIENTEDGE, "EDIT", "",
        WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_HSCROLL | ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL,
        0, 0, 100, 100, hwnd, (HMENU)IDC_MAIN_EDIT, GetModuleHandle(NULL), NULL);
    if(hEdit == NULL)
        MessageBox(hwnd, "Could not create edit box.", "Error", MB_OK | MB_ICONERROR);
    GetClientRect(hwnd, &rcClient);

    hEdit = GetDlgItem(hwnd, IDC_MAIN_EDIT);
    SetWindowPos(hEdit, NULL, 0, 0, rcClient.right, rcClient.bottom, SWP_NOZORDER);

    {
        HWND hEdit;
        RECT rcClient;

        GetClientRect(hwnd, &rcClient);

        hEdit = GetDlgItem(hwnd, IDC_MAIN_EDIT);
        SetWindowPos(hEdit, NULL, 0, 0, rcClient.right, rcClient.bottom, SWP_NOZORDER);
    }
    break;
}

Men der kommer fejl, i den der første "case".

Hvis i ikke kan finde fejlen, er der så ikke nogen der gider sammensætte dette til en hel kode? ( er helt newbie)http://winprog.org/tutorial/app_one.html


MVH
Anders
Avatar billede soreno Praktikant
22. maj 2003 - 14:33 #1
Den kode Arne postede i går vil være et fint udgangspunkt.

http://www.eksperten.dk/spm/355532

Se dette indlæg:
21/05-2003 20:23:37
Avatar billede soreno Praktikant
22. maj 2003 - 14:33 #2
Ellers kan du jo evt. hente koden her:
http://winprog.org/tutorial/files/source.zip
Avatar billede snuseren.dk Nybegynder
22. maj 2003 - 14:34 #3
ok, men den har jeg prøvet masser af gange, efter han postede den :o)

Jeg vil bare prøve at se, hvordan det virkede mht. compileren osv., med ovenstående kode.
Avatar billede snuseren.dk Nybegynder
22. maj 2003 - 14:36 #4
Takker!

Det var lige det jeg skulle bruge :o)
Avatar billede soreno Praktikant
22. maj 2003 - 14:37 #5
Ovenstående kode er ikke valid c/c++ syntaks.

Det kan heller ikke umiddelbart bruges til at lave et vindue med.

Du mangler en del initialisering (og en switch(..) før dine case ..:
Avatar billede snuseren.dk Nybegynder
22. maj 2003 - 14:39 #6
ok. Men den source du linkede til, er det C eller C++? Og er det WinApi?
Avatar billede snuseren.dk Nybegynder
22. maj 2003 - 14:40 #7
Fordi det er .C filer.
Avatar billede soreno Praktikant
22. maj 2003 - 14:43 #8
Så er det C kode..

Det er win32 kode (winapi).

Win32 er en betegnelse for en række funktioner som Windows stiller til rådighed.
Avatar billede snuseren.dk Nybegynder
22. maj 2003 - 14:44 #9
ok. Kender du ikke nogle steder til C++ WinApi kode?
Avatar billede snuseren.dk Nybegynder
22. maj 2003 - 14:45 #10
Er du sikker på at det her ikke er C++ kode?

#include <windows.h>

#include "resource.h"

const char g_szClassName[] = "myWindowClass";

LRESULT CALLBACK WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam)
{
    switch(Message)
    {
        case WM_COMMAND:
            switch(LOWORD(wParam))
            {
                case ID_FILE_EXIT:
                    PostMessage(hwnd, WM_CLOSE, 0, 0);
                break;
                case ID_STUFF_GO:
                    MessageBox(hwnd, "You clicked Go!", "Woo!", MB_OK);
                break;
            }
        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 wc;
    HWND hwnd;
    MSG Msg;

    wc.cbSize        = sizeof(WNDCLASSEX);
    wc.style        = 0;
    wc.lpfnWndProc    = WndProc;
    wc.cbClsExtra    = 0;
    wc.cbWndExtra    = 0;
    wc.hInstance    = hInstance;
    wc.hIcon        = LoadIcon(GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_MYICON));
    wc.hCursor        = LoadCursor(NULL, IDC_ARROW);
    wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
    wc.lpszMenuName  = MAKEINTRESOURCE(IDR_MYMENU);
    wc.lpszClassName = g_szClassName;
    wc.hIconSm        = (HICON)LoadImage(GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_MYICON), IMAGE_ICON, 16, 16, 0);

    if(!RegisterClassEx(&wc))
    {
        MessageBox(NULL, "Window Registration Failed!", "Error!",
            MB_ICONEXCLAMATION | MB_OK);
        return 0;
    }

    hwnd = CreateWindowEx(
        WS_EX_CLIENTEDGE,
        g_szClassName,
        "A Menu",
        WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT, CW_USEDEFAULT, 240, 120,
        NULL, NULL, hInstance, NULL);

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

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

    while(GetMessage(&Msg, NULL, 0, 0) > 0)
    {
        TranslateMessage(&Msg);
        DispatchMessage(&Msg);
    }
    return Msg.wParam;
}
Avatar billede soreno Praktikant
22. maj 2003 - 14:54 #11
Langt det meste C kode kan kompileres i en C++ compiler. Men ikke omvendt.
Avatar billede snuseren.dk Nybegynder
22. maj 2003 - 15:00 #12
ok. Men er ovenstående C kode?
Avatar billede soreno Praktikant
22. maj 2003 - 15:02 #13
Well, det kan jeg ikke udtale mig 100% nøjagtigt om.

Men du kan selv teste det.

Kompiler det med en C compiler. Hvis det er success er det C kode..

Umiddelbart vil jeg sige det er C kode.
Avatar billede snuseren.dk Nybegynder
22. maj 2003 - 15:10 #14
ok
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester