사용자 도구

사이트 도구


sdk:wtl

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판이전 판
다음 판
이전 판
sdk:wtl [2021/04/24 17:09] kieunssdk:wtl [2024/04/23 22:43] (현재) – 바깥 편집 127.0.0.1
줄 1: 줄 1:
 +<title>ATL/WTL</title>
  
 +======ATL/WTL======
 +
 +  * MSVS 2019 기준
 +  * 기본 정보 : [[https://sourceforge.net/projects/wtl/]]
 +
 +WTL for MFC Programmers, Part I - ATL GUI Classes
 +
 +  * [[https://www.codeproject.com/Articles/3841/WTL-for-MFC-Programmers-Part-I-ATL-GUI-Classes]]
 +
 +CWindowImpl
 +
 +  * [[https://docs.microsoft.com/ko-kr/cpp/atl/reference/cwindowimpl-class?view=msvc-160]]
 +
 +창을 만드는 설명
 +
 +  * [[https://docs.microsoft.com/ko-kr/cpp/atl/implementing-a-window-with-cwindowimpl?view=msvc-160]]
 +
 +Using the ATL Windowing Classes
 +
 +  * [[https://www.codeguru.com/cpp/com-tech/atl/article.php/c3605/Using-the-ATL-Windowing-Classes.htm]]
 +
 +빈 윈도우 만들기
 +
 +  * Win32 데스크톱용 위저드로 만들어서, 정리.
 +
 +<code cpp>
 +#include "targetver.h"
 +#define WIN32_LEAN_AND_MEAN
 +#include <windows.h>
 +#include <stdlib.h>
 +#include <malloc.h>
 +#include <memory.h>
 +#include <tchar.h>
 +
 +#include <atlbase.h>
 +#include <atlwin.h>
 +
 +#include "resource.h"
 +
 +
 +class MainWindow : public CWindowImpl<MainWindow>
 +{
 +public:
 +    DECLARE_WND_CLASS(_T("210424_A"));
 +
 +
 +    BEGIN_MSG_MAP(MainWindow);
 +    //MESSAGE_HANDLER(WM_PAINT, OnPaint)
 +    MESSAGE_HANDLER(WM_DESTROY, OnDestroy)
 +    END_MSG_MAP();
 +
 +
 +    LRESULT OnDestroy(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
 +    {
 +        PostQuitMessage(0);
 +        return 0;
 +    }
 +};
 +
 +
 +int APIENTRY wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCmdShow)
 +{
 +    MainWindow _wnd;
 +    RECT _rc = { 0, 0, 200, 200 };
 +
 +    _wnd.Create(0, /*CWindow::rcDefault*/_rc, _T("Wnd"), WS_OVERLAPPEDWINDOW, 0, (UINT)NULL);
 +    _wnd.CenterWindow();
 +
 +    if(!_wnd) return -1;
 +
 +    _wnd.ShowWindow(nCmdShow);
 +    _wnd.UpdateWindow();
 +
 +    HACCEL hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_HANENGCURSOR));
 +
 +    MSG msg;
 +    while(GetMessage(&msg, nullptr, 0, 0))
 +    {
 +        if(!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
 +        {
 +            TranslateMessage(&msg);
 +            DispatchMessage(&msg);
 +        }
 +    }
 +
 +    return 0;
 +}
 +</code>