用C++写一个可以点击的Windows系统
时间: 2024-10-07 07:06:53 浏览: 8
在C++中,创建一个可点击的Windows系统窗口通常涉及到MFC (Microsoft Foundation Classes) 或者WinAPI,因为它们提供了丰富的库函数来处理Windows GUI编程。以下是使用MFC的一个简单示例:
```cpp
#include "stdafx.h"
#include <afxwin.h> // MFC包含文件
class MyWindow : public CWnd {
public:
MyWindow() {}
afx_msg LRESULT OnCreate(WPARAM wParam, LPARAM lParam);
afx_msg void OnLButtonDown(UINT nFlags, CPoint point); // 点击事件处理
protected:
DECLARE_MESSAGE_MAP()
};
LRESULT MyWindow::OnCreate(WPARAM wParam, LPARAM lParam)
{
if (!CWnd::CreateEx(WS_EX_CLIENTEDGE, // 添加边框样式
AFXDLL_APPNAME ".MyWindow", // 窗口类名
NULL, // 父窗口句柄
WS_OVERLAPPEDWINDOW | WS_VISIBLE, // 窗口属性
CRect(0, 0, 400, 300), // 窗口位置和大小
NULL)) // 创建句柄
return FALSE;
return TRUE;
}
void MyWindow::OnLButtonDown(UINT nFlags, CPoint point)
{
CMessageLoop theLoop; // 创建消息循环
theLoop.Run(); // 运行消息循环等待用户操作
PostQuitMessage(0); // 结束消息循环
}
int APIENTRY wWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
MSG msg;
AtlInitCommonControls(ICC_LISTVIEW_CLASSES);
CWinApp app;
MyWindow window;
window.Create(NULL, NULL, nullptr, // 没有父窗口
WS_OVERLAPPEDWINDOW, CRect(0, 0, 640, 480)); // 创建窗口
while (::GetMessage(&msg, NULL, 0, 0))
{
if (IsDialogMessage(&window, &msg)) continue; // 处理控件的消息
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return static_cast<int>(msg.wParam);
}