WinAPI: LoadCursor - 从资源中载入光标

//声明:
LoadCursor(
  hInstance: HINST;   {EXE 或 DLL 的句柄, 0 表示载入系统资源}
  lpCursorName: PChar {资源标识符}
): HCURSOR;           {返回光标句柄}
这里有示例
//调用系统光标的例子:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  cur: TIcon;
begin
  cur := TIcon.Create;

  cur.Handle := LoadCursor(0, IDC_HAND);
  Canvas.Draw(11,11,cur);
  cur.Handle := LoadCursor(0, IDC_HELP);
  Canvas.Draw(44,11,cur);

  cur.Free;
end;

end.


//效果图:
r_156.png
//附系统光标列表:
IDC_ARROW       = MakeIntResource(32512);
IDC_IBEAM       = MakeIntResource(32513);
IDC_WAIT        = MakeIntResource(32514);
IDC_CROSS       = MakeIntResource(32515);
IDC_UPARROW     = MakeIntResource(32516);
IDC_SIZE        = MakeIntResource(32640);
IDC_ICON        = MakeIntResource(32641);
IDC_SIZENWSE    = MakeIntResource(32642);
IDC_SIZENESW    = MakeIntResource(32643);
IDC_SIZEWE      = MakeIntResource(32644);
IDC_SIZENS      = MakeIntResource(32645);
IDC_SIZEALL     = MakeIntResource(32646);
IDC_NO          = MakeIntResource(32648);
IDC_HAND        = MakeIntResource(32649);
IDC_APPSTARTING = MakeIntResource(32650);
IDC_HELP        = MakeIntResource(32651);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值