zoukankan      html  css  js  c++  java
  • WIN32开发下设置对话框左上角的图标

    实现方法

    通过LoadIcon函数加载图标,然后通过SendMessage给自身窗口的WM_SETICON消息发送加载好的图标资源
    (注:MFC下专门封装的函数为SetIcon,本质就是发送消息实现)

    SendMessage函数和LoadIcon函数介绍

    1.函数原型

    
    HICON WINAPI LoadIcon(
      _In_opt_  HINSTANCE hInstance,
      _In_      LPCTSTR lpIconName
    );
    
    LRESULT WINAPI SendMessage(
      _In_  HWND hWnd,
      _In_  UINT Msg,
      _In_  WPARAM wParam,
      _In_  LPARAM lParam
    );
    
    

    2.参数介绍(详细用法请参考MSDN)

    hInstance : 资源句柄

    lpIconName : 图标名称,需要把图标的ID通过MAKEINTRESOURCE这个宏转换一下

    hWnd : 窗口句柄

    Msg :目标消息类型

    wParam :附加于消息信息

    lParam : 附加于消息信息

    3.返回值

    HICON类型, 新加载图标的句柄,加载失败返回NULL

    LRESULT类型,返回值指定消息处理的结果,取决于发送的消息

    示例代码

    备注:示例代码没有通过注册方式创建窗口,故需要自行通过VS添加窗口和图标资源

    /*
     *     图标ID:IDI_ICON
     *
     */
    #include <windows.h>
    #include "resource.h"
    
    HINSTANCE g_hInstance;
    
    void OnInitDialog(HWND hwndDlg)
    {
    	HICON hIcon = LoadIcon(g_hInstance, MAKEINTRESOURCE(IDI_ICON));
    	SendMessage(hwndDlg, WM_SETICON, FALSE, (LPARAM)hIcon);
    }
    
    BOOL WINAPI MsgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
    {
    	switch (uMsg)
    	{
    	case WM_INITDIALOG:
    		OnInitDialog(hwndDlg);
    		break;
    	case WM_CLOSE:
    		EndDialog(hwndDlg, IDCANCEL);
    		break;
    	default:
    		break;
    	}
    	return FALSE;
    }
    
    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
    {
    	g_hInstance = hInstance;
    	DialogBox(hInstance, (LPCTSTR)IDD_MAIN_DLG, NULL, MsgProc);
    	return 0;
    }
    
    
  • 相关阅读:
    小 X 的密码破译
    时光机
    战争
    iOS TDD
    iOS url schemes应用


    二分查找
    搜索
    链表
  • 原文地址:https://www.cnblogs.com/veis/p/12676769.html
Copyright © 2011-2022 走看看