hIcon的有关的函数
时间: 2024-06-03 10:11:49 浏览: 11
hIcon是一个窗口或者应用程序中的图标句柄,Windows API 中有很多与hIcon相关的函数,例如:
1. LoadIcon:用于加载图标资源,返回一个hIcon句柄。
2. ExtractIcon:从一个可执行文件或者DLL中提取图标资源,返回一个hIcon句柄。
3. DrawIcon:绘制一个hIcon到指定的设备上下文中。
4. DestroyIcon:释放一个hIcon句柄所占用的资源。
5. SendMessage:用于发送指令到窗口,包括设置窗口图标等。
这些函数都可以通过调用Windows API来使用。
相关问题
Windows API 中有很多与hIcon相关的函数
是的,Windows API 中有很多与 hIcon 相关的函数。其中,一些常用的函数包括:
1. LoadIcon:从资源文件中加载一个图标。
2. DestroyIcon:释放一个图标句柄。
3. ExtractIconEx:从一个可执行文件或 DLL 中提取图标。
4. DrawIconEx:在设备上下文中绘制一个图标。
5. GetIconInfoEx:获取一个图标的信息,包括它的位图和掩码。
这些函数可以帮助开发人员在 Windows 程序中使用图标。
windows的settimer函数
`SetTimer()` 函数是 Windows API 中的一个函数,它可以用于创建一个定时器。它的参数如下:
```c++
UINT_PTR SetTimer(
HWND hWnd, // 窗口句柄
UINT_PTR nIDEvent, // 定时器 ID
UINT uElapse, // 定时器间隔时间,以毫秒为单位
TIMERPROC lpTimerFunc // 定时器回调函数
);
```
其中,`hWnd` 参数是指定接收定时器消息的窗口句柄,如果这个参数为 NULL,那么定时器消息就会发送到当前程序的消息队列中。`nIDEvent` 是定时器的 ID,可以用来标识不同的定时器。`uElapse` 是定时器的间隔时间,以毫秒为单位。`lpTimerFunc` 是定时器的回调函数,当定时器触发时,系统会调用这个函数。
在使用 `SetTimer()` 函数创建定时器后,我们还需要在程序的消息循环中处理定时器消息。当定时器触发时,系统会向消息队列中插入一个 `WM_TIMER` 消息,我们需要在消息循环中处理这个消息,以响应定时器触发事件。
下面是一个简单的使用 `SetTimer()` 函数创建定时器的示例:
```c++
#include <windows.h>
#define IDT_TIMER1 1
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
static TCHAR szAppName[] = TEXT("TimerDemo");
HWND hwnd;
MSG msg;
WNDCLASS wndclass;
wndclass.style = CS_HREDRAW | CS_VREDRAW;
wndclass.lpfnWndProc = WndProc;
wndclass.cbClsExtra = 0;
wndclass.cbWndExtra = 0;
wndclass.hInstance = hInstance;
wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wndclass.lpszMenuName = NULL;
wndclass.lpszClassName = szAppName;
if (!RegisterClass(&wndclass))
{
MessageBox(NULL, TEXT("This program requires Windows NT!"), szAppName, MB_ICONERROR);
return 0;
}
hwnd = CreateWindow(szAppName, TEXT("Timer Demo"), WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
NULL, NULL, hInstance, NULL);
ShowWindow(hwnd, iCmdShow);
UpdateWindow(hwnd);
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
static int cxClient, cyClient;
switch (message)
{
case WM_CREATE:
SetTimer(hwnd, IDT_TIMER1, 1000, NULL);
return 0;
case WM_TIMER:
if (wParam == IDT_TIMER1)
{
// 定时器触发了
MessageBox(hwnd, TEXT("Timer Triggered!"), TEXT("Timer Demo"), MB_OK);
return 0;
}
break;
case WM_SIZE:
cxClient = LOWORD(lParam);
cyClient = HIWORD(lParam);
return 0;
case WM_DESTROY:
KillTimer(hwnd, IDT_TIMER1);
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hwnd, message, wParam, lParam);
}
```
在这个示例中,我们在窗口的 `WM_CREATE` 消息中调用 `SetTimer()` 函数来创建一个定时器,它的 ID 是 `IDT_TIMER1`,间隔时间是 1000 毫秒(即 1 秒)。在窗口的 `WM_TIMER` 消息中,我们判断了定时器的 ID 是否是 `IDT_TIMER1`,如果是,就弹出一个消息框提示定时器触发了。在窗口的 `WM_DESTROY` 消息中,我们通过 `KillTimer()` 函数销毁了定时器。
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![application/x-zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)