질문과 답변

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

#include <Windows.h>
#define ID_EDIT 100

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
HWND hEdit;
HINSTANCE g_hInst;
LPCTSTR lpszClass = TEXT("Edit");

int APIENTRY wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPWSTR lnCmdLine, _In_ int nCmdShow) {
    HWND hWnd;
    MSG Message;
    WNDCLASS WndClass;
    g_hInst = hInstance;

    WndClass.cbClsExtra = 0;
    WndClass.cbWndExtra = 0;
    WndClass.hbrBackground = (HBRUSH)(COLOR_BTNFACE + 1);
    WndClass.hCursor = LoadCursor(NULL, IDC_ARROW);
    WndClass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    WndClass.hInstance = hInstance;
    WndClass.lpfnWndProc = WndProc;
    WndClass.lpszClassName = lpszClass;
    WndClass.lpszMenuName = NULL;
    WndClass.style = CS_HREDRAW | CS_VREDRAW;
    RegisterClass(&WndClass);

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

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

LRESULT CALLBACK WndProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam){
    TCHAR str[128];
    switch (iMessage) {
    case WM_CREATE:
        hEdit = CreateWindow(TEXT("edit"), NULL, WS_CHILD | WS_VISIBLE | WS_BORDER |
            ES_AUTOHSCROLL, 10, 10, 200, 25, hWnd, (HMENU)ID_EDIT, g_hInst, NULL);
        return 0;
    case WM_COMMAND:
        switch (LOWORD(wParam)) {
        case ID_EDIT:
            switch (HIWORD(wParam)) {
            case EN_CHANGE:
                GetWindowText(hEdit, str, 128);
                SetWindowText(hWnd, str);
            }
        }
        return(0);
    case WM_DESTROY:
        PostQuitMessage(0);
        return 0;
    }
    return(DefWindowProc(hWnd, iMessage, wParam, lParam));
}



김민수

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

작가K 6월14일 12:09:23  

메인윈도우의 클래스명을 Edit로 지정해서 실행되지 않습니다.
Edit는 운영체제가 미리 정의해 놓은 명칭이라 일반 윈도우가 사용해서는 안됩니다.

LPCTSTR lpszClass = TEXT("Edit2");

요렇게만 바꾸어도 잘 실행됩니다.

황금가물치 6월14일 11:01:13  

따옴표가 들어가도 인식을 하는건가요?


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