WinAPI: GetClassName - 获取指定窗口的类名

WinAPI: GetClassName - 获取指定窗口的类名
//声明:
GetClassName(
  hWnd: HWND;         {指定窗口句柄}
  lpClassName: PChar; {缓冲区}
  nMaxCount: Integer  {缓冲区大小}
): Integer;           {返回类名大小; 失败返回 0}
--------------------------------------------------------------------------------

//测试1: 新建一个工程, 主窗口的类名默认是 TForm1, 用程序获取一下看看
var
  ps: array[0..254] of Char;
begin
  GetClassName(Handle, ps, 255);
  ShowMessage(ps); {TForm1}
end;
--------------------------------------------------------------------------------

//测试2: 看看 "计算器" 窗口的类名(先启动计算器)
var
  h: HWND;
  ps: array[0..254] of Char;
begin
  h := FindWindow(nil, '计算器'); {这句是获取计算器窗口的句柄}
  GetClassName(h, ps, 255);
  ShowMessage(ps); {SciCalc}
end;
--------------------------------------------------------------------------------

//测试3: 看看记事本窗口的类名(先重新启动记事本):
var
  h: HWND;
  ps: array[0..254] of Char;
begin
  h := FindWindow(nil, '无标题 - 记事本'); {这句是获取记事本窗口的句柄}
  GetClassName(h, ps, 255);
  ShowMessage(ps); {Notepad}
end;


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的实现 Windows 应用程序的代码,可以根据用户输入的成绩计算对应的等级,并给出相应的提示。同时,程序还包含了对无效成绩的处理和退出功能。 ```c++ #include <Windows.h> #include <string> // 定义等级和分数的对应关系 const std::string GRADE_TABLE[] = { "D", "C", "B", "A" }; const int SCORE_TABLE[] = { 0, 60, 80, 90 }; // 窗口标题和控件 ID const char* WINDOW_TITLE = "Grade Calculator"; const int EDIT_CONTROL_ID = 1; const int BUTTON_CONTROL_ID = 2; // 窗口句柄和控件句柄 HWND g_hWnd; HWND g_hEdit; HWND g_hButton; // 处理按钮点击事件 void OnButtonClick() { // 获取用户输入的成绩 char buffer[256]; GetWindowTextA(g_hEdit, buffer, 256); int score = atoi(buffer); // 判断输入的成绩是否有效 if (score < 0 || score > 100) { MessageBoxA(g_hWnd, "Invalid score!", "Error", MB_OK); return; } // 计算对应的等级 int grade = 0; for (int i = 0; i < 4; i++) { if (score >= SCORE_TABLE[i]) { grade = i; } else { break; } } // 显示对应的等级 std::string message = "Grade: " + GRADE_TABLE[grade]; MessageBoxA(g_hWnd, message.c_str(), "Result", MB_OK); } // 处理窗口消息 LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_CREATE: // 创建编辑框控件 g_hEdit = CreateWindowA("EDIT", NULL, WS_CHILD | WS_VISIBLE | WS_BORDER, 20, 20, 200, 24, hWnd, (HMENU)EDIT_CONTROL_ID, NULL, NULL); // 创建按钮控件 g_hButton = CreateWindowA("BUTTON", "Calculate", WS_CHILD | WS_VISIBLE, 20, 60, 100, 30, hWnd, (HMENU)BUTTON_CONTROL_ID, NULL, NULL); break; case WM_COMMAND: // 处理按钮点击事件 if (LOWORD(wParam) == BUTTON_CONTROL_ID) { OnButtonClick(); } break; case WM_DESTROY: // 退出程序 PostQuitMessage(0); break; default: return DefWindowProc(hWnd, uMsg, wParam, lParam); } return 0; } // 应用程序入口函数 int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { // 注册窗口类 WNDCLASSA wc = { 0 }; wc.lpfnWndProc = WindowProc; wc.hInstance = hInstance; wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); wc.lpszClassName = "GradeCalculator"; RegisterClassA(&wc); // 创建窗口 g_hWnd = CreateWindowA("GradeCalculator", WINDOW_TITLE, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 300, 150, NULL, NULL, hInstance, NULL); // 显示窗口 ShowWindow(g_hWnd, nCmdShow); UpdateWindow(g_hWnd); // 消息循环 MSG msg; while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return 0; } ``` 这个程序用到了 Win32 API 来创建窗口和控件,并处理用户输入和按钮点击事件。通过判断用户输入的成绩是否有效,计算对应的等级,并给出提示。如果输入的成绩无效,程序会弹出一个提示框告诉用户。程序还包含了退出功能,用户可以通过关闭窗口或者按下 Alt + F4 来退出程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值