>source

처음에는 창이 표시되지 않아서 창을 만드는 데 문제가 있었고 다음을 사용하여 오류를 확인했습니다. GetLastError() 기능을 수행하고 MSDN에 따라 모듈을 찾을 수 없음을 의미하는 오류 코드 126을 인쇄했습니다 (일반적으로 DLL을로드 할 때 표시되지만 그 중 아무것도하지 않습니다). GCC 컴파일러를 사용하고 있습니다. 도움을 주시면 감사하겠습니다.

다음은 코드입니다.

#include <stdio.h>
#include <Windows.h>
WNDCLASSEXA myWindowsClass = {};
LRESULT myMainProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{    
    return 0;
}
void setDefaultClassParameters(HINSTANCE hInstance);
int CALLBACK WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
    printf("ERROR CODE: %i\n", GetLastError()); // Prints 126 Error
    SetLastError((DWORD)0);
    printf("ERROR CODE: %i\n", GetLastError()); // Prints 0
    setDefaultClassParameters(hInstance);
    RegisterClassExA(&myWindowsClass);
    CreateWindowExA( 
        WS_EX_OVERLAPPEDWINDOW,
        "MY CLASS NAME",
        "MY WINDOW TITLE",
        WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT,
        CW_USEDEFAULT,
        CW_USEDEFAULT, 
        CW_USEDEFAULT,
        NULL,
        NULL,
        hInstance,
        NULL
    );
    printf("ERROR CODE: %i\n", GetLastError()); // Prints 126 Error
}
void setDefaultClassParameters(HINSTANCE hInstance){
    myWindowsClass.cbSize = sizeof(WNDCLASSEX);
    myWindowsClass.style = CS_OWNDC|CS_HREDRAW|CS_VREDRAW;
    myWindowsClass.lpfnWndProc = (WNDPROC) myMainProc;
    myWindowsClass.cbClsExtra = 0;
    myWindowsClass.cbWndExtra = 0;
    myWindowsClass.hInstance = hInstance;
    myWindowsClass.hIcon = NULL;
    myWindowsClass.hCursor = NULL;
    myWindowsClass.hbrBackground = NULL;
    myWindowsClass.lpszMenuName = NULL;
    myWindowsClass.lpszClassName = "MY CLASS NAME";
    myWindowsClass.hIconSm = NULL;    
}


  • 답변 # 1

    당신은 이것을 원합니다 (예상되지 않은 코드이지만 아이디어를 얻어야합니다).

    int CALLBACK WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
    {
      setDefaultClassParameters(hInstance);
      if (RegisterClassExA(&myWindowsClass) == 0)
      {
        // RegisterClassExA failed => GetErrorCode returns the error code
        printf("RegisterClassExA: ERROR CODE: %i\n", GetLastError()); // Prints 126 Error
        return 1;
      }
      HWND windowHandle = CreateWindowExA(
        WS_EX_OVERLAPPEDWINDOW,
        "MY CLASS NAME",
        "MY WINDOW TITLE",
        WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT,
        CW_USEDEFAULT,
        CW_USEDEFAULT,
        CW_USEDEFAULT,
        NULL,
        NULL,
        hInstance,
        NULL
      );
      if (windowHandle == NULL)
      {
        // CreateWindowExA failed => GetErrorCode returns the error code
        printf("CreateWindowExA ERROR CODE: %i\n", GetLastError()); // Prints 126 Error
        return 1;
      }
    }
    
    

관련 자료

  • 이전 파이썬에서 압축이 풀린 파일의 이름을 바꾸는 방법은 무엇입니까?
  • 다음 microsoft teams - smba trafficmanager 또는 botframework로 PDF 보내기