c++ atl创建窗口
时间: 2023-12-03 09:03:15 浏览: 209
ATL创建窗口
使用 ATL 创建窗口可以遵循以下步骤:
1. 在 Visual Studio 中创建一个 ATL 项目。
2. 在 ATL 项目中,打开 `resource.h` 文件并添加新的资源 ID。
3. 在 ATL 项目中,打开 `MyWindow.h` 文件并添加以下代码:
```c++
class CMyWindow :
public CWindowImpl<CMyWindow>
{
public:
DECLARE_WND_CLASS(_T("MyWindowClass"))
BEGIN_MSG_MAP(CMyWindow)
MESSAGE_HANDLER(WM_CREATE, OnCreate)
MESSAGE_HANDLER(WM_PAINT, OnPaint)
MESSAGE_HANDLER(WM_DESTROY, OnDestroy)
END_MSG_MAP()
private:
LRESULT OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
return 0;
}
LRESULT OnPaint(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
PAINTSTRUCT ps;
HDC hdc = BeginPaint(&ps);
EndPaint(&ps);
return 0;
}
LRESULT OnDestroy(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
PostQuitMessage(0);
return 0;
}
};
```
4. 在 ATL 项目中,打开 `MyWindow.cpp` 文件并添加以下代码:
```c++
#include "stdafx.h"
#include "resource.h"
#include "MyWindow.h"
CMyWindow::CMyWindow()
{
}
LRESULT CMyWindow::OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
// 创建窗口
Create(NULL, CRect(0, 0, 640, 480), _T("My Window"), WS_OVERLAPPEDWINDOW);
return 0;
}
LRESULT CMyWindow::OnPaint(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
PAINTSTRUCT ps;
HDC hdc = BeginPaint(&ps);
// 绘制图形
EndPaint(&ps);
return 0;
}
LRESULT CMyWindow::OnDestroy(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
PostQuitMessage(0);
return 0;
}
```
5. 在 ATL 项目中,打开 `stdafx.h` 文件并添加以下代码:
```c++
#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS
#define _AFX_ALL_WARNINGS
#include <afxwin.h>
#include <atlbase.h>
#include <atlapp.h>
extern CAppModule _Module;
#include <atlwin.h>
```
6. 在 ATL 项目中,打开 `main.cpp` 文件并添加以下代码:
```c++
#include "stdafx.h"
#include "MyWindow.h"
CAppModule _Module;
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
_Module.Init(NULL, hInstance);
CMyWindow wnd;
wnd.Create(NULL);
wnd.ShowWindow(nCmdShow);
MSG msg;
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
_Module.Term();
return 0;
}
```
以上是使用 ATL 创建窗口的基本步骤,可以根据实际需求进行修改和扩展。
阅读全文