질문과 답변

윈도우즈 API정복 1권 194페이지 질문입니다. 날짜:2022-6-5 7:25:54 조회수:75
작성자 : 황금가물치
포인트 : 30
가입일 : 2022-05-06 15:33:18
방문횟수 : 28
글 4개, 댓글 5개
소개 : 안녕하세요. 윈도우즈api를 공부하기위하여 가입했습니다. 잘 부탁드립니다.
작성글 보기
쪽지 보내기
윈도우즈 API정복 1권 194페이지 질문입니다. 현재 비주얼스튜디오 2022사용 중이며, 64비트 디버그로 진행하고 있습니다.
194페이지 BUTTON생성과 관련 예제가 작동이 안 됩니다. 혹시 아래 코드에 문제가 있는지요? 답변 부탁드립니다.
-------------------------------------------------------------------------------------------------------------------------------------------

#include<Windows.h>

LPCTSTR my_class_name = TEXT("Button");
HINSTANCE g_hinst;

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

int APIENTRY wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPWSTR lnCmdLine, _In_ int nCmdShow) {
    HWND hWnd;
    MSG msg;
    WNDCLASS wndclass;
    g_hinst = hInstance;

    wndclass.lpfnWndProc = WndProc;
    wndclass.lpszClassName = my_class_name;
    wndclass.cbClsExtra = 0;
    wndclass.cbWndExtra = 0;
    wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
    wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    wndclass.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
    wndclass.hInstance = hInstance;
    wndclass.lpszMenuName = NULL;
    wndclass.style = CS_HREDRAW | CS_VREDRAW;

    RegisterClass(&wndclass);

    hWnd = CreateWindow(my_class_name, my_class_name, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT,
        CW_USEDEFAULT, CW_USEDEFAULT, NULL, (HMENU)NULL, hInstance, NULL);
    ShowWindow(hWnd, nCmdShow);
    UpdateWindow(hWnd);

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

LRESULT CALLBACK WndProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam) {
    switch (iMessage) {
    case WM_CREATE:
        CreateWindow(TEXT("button"), TEXT("Click Me"), WS_CHILD | WS_VISIBLE |
            BS_PUSHBUTTON, 20, 20, 100, 25, hWnd, (HMENU)0, g_hinst, NULL);
        CreateWindow(TEXT("button"), TEXT("Me Two"), WS_CHILD | WS_VISIBLE |
            BS_PUSHBUTTON, 20, 50, 100, 25, hWnd, (HMENU)1, g_hinst, NULL);
        return 0;
    case WM_COMMAND:
        switch (LOWORD(wParam)) {
        case 0:
            MessageBox(hWnd, TEXT("First Button Clicked"), TEXT("Button"), MB_OK);
            break;
        case 1:
            MessageBox(hWnd, TEXT("Second Button Clicked"), TEXT("Button"), MB_OK);
            break;
        }
        return 0;
    case WM_DESTROY:
        PostQuitMessage(0);
        return 0;
    }
    return(DefWindowProc(hWnd, iMessage, wParam, lParam));
}



김민수

목록보기 삭제 수정 신고 스크랩

작가K 6월14일 12:12:33  

위에 올리신 질문과 원인이 같습니다.
클래스명을 Button으로 주시면 안되며 책에서는 아마 뒤에 Test를 붙여 놨을겁니다.

황금가물치 6월14일 11:02:31  

감사합니다


로그인하셔야 댓글을 달 수 있습니다.