写一个Windows操作系统中的记事本
时间: 2023-08-19 19:26:52 浏览: 108
以下是一个简单的 Windows 记事本的实现:
```c++
#include <windows.h>
#include <commctrl.h>
#define ID_EDIT 1
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
HWND hwnd;
MSG msg;
WNDCLASS wc;
// 初始化公共控件库
InitCommonControls();
// 注册窗口类
wc.style = 0;
wc.lpfnWndProc = WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wc.lpszMenuName = NULL;
wc.lpszClassName = TEXT("MyNotepadClass");
RegisterClass(&wc);
// 创建主窗口
hwnd = CreateWindow(TEXT("MyNotepadClass"), TEXT("记事本"),
WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL);
// 创建文本编辑框
HWND hEdit = CreateWindowEx(WS_EX_CLIENTEDGE, TEXT("EDIT"), NULL,
WS_CHILD | WS_VISIBLE | WS_VSCROLL | ES_MULTILINE | ES_AUTOVSCROLL,
0, 0, 0, 0, hwnd, (HMENU)ID_EDIT, hInstance, NULL);
// 调整窗口大小和位置
RECT rcClient;
GetClientRect(hwnd, &rcClient);
MoveWindow(hEdit, rcClient.left, rcClient.top, rcClient.right - rcClient.left,
rcClient.bottom - rcClient.top, TRUE);
// 显示窗口
ShowWindow(hwnd, nCmdShow);
UpdateWindow(hwnd);
// 主消息循环
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return (int) msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (uMsg)
{
case WM_SIZE:
// 调整文本编辑框大小和位置
if (wParam != SIZE_MINIMIZED)
{
RECT rcClient;
GetClientRect(hwnd, &rcClient);
HWND hEdit = GetDlgItem(hwnd, ID_EDIT);
MoveWindow(hEdit, rcClient.left, rcClient.top, rcClient.right - rcClient.left,
rcClient.bottom - rcClient.top, TRUE);
}
return 0;
case WM_COMMAND:
switch (LOWORD(wParam))
{
case ID_EDIT:
if (HIWORD(wParam) == EN_CHANGE)
{
// 编辑框内容发生改变
// 可以在这里保存文件等操作
}
break;
}
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
default:
return DefWindowProc(hwnd, uMsg, wParam, lParam);
}
}
```
这个记事本程序使用了 Windows API 创建了一个主窗口和一个文本编辑框。用户可以在文本编辑框中输入和编辑文本。程序可以捕捉到编辑框内容的改变事件,可以在这里保存文件等操作。用户可以通过关闭窗口来退出程序。
阅读全文