如何在Windows 10上加载MessageBox使用的相同图标?

时间:2017-06-23 10:04:29

标签: winapi windows-10

在Windows 10上调用LoadIcon要求标准图标IDI_INFORMATION会生成此图标:

enter image description here

另一方面,调用MessageBox传递IDI_INFORMATION会产生一个使用此图标的对话框:

enter image description here

如果对LoadIcon的明显调用没有这样做,我怎样才能获得第二个图标?

2 个答案:

答案 0 :(得分:4)

这感觉就像user32.dll中的一个错误,但Windows 8有同样的问题,所以我想微软并不关心。

您可以通过致电SHGetStockIconInfo获取print("") print("-----------------------------------------------------------------------------------------------------------------------------------------------------------") print("| (1) Enter new student details | (2) Edit existing student details | (3) Retrieve Student details |") print("-----------------------------------------------------------------------------------------------------------------------------------------------------------") print("") option=int(input("Select an option from the menu, 1/2/3/: ")) if option==1: f=open("Student Details.xls" , "w") f.write("Forename"+"\n") fname=input("Enter the student's first name: ") f.write(fname) f.write("Surname"+"\n") sname=input("Enter the student's surname: ") f.write(sname) f.write("DOB"+"\n") dob=input("Enter the student's DOB: ") f.write(dob) f.write("Postcode"+"\n") pcode=input("Enter the student's postcode: ") f.write(pcode) 使用的平面图标:

Forename  Surname   DOB        Postcode
Jim       Bob       12/12/12   w7 1eu

SELECT CONCAT(user_a, ",", user_b, ",", user_c) FROM tb_loterijos_laimetojai 是在Vista及更高版本的Windows UI中使用图标的文档化方法。大多数图标来自imageres.dll,但您不应该认为是这种情况......

答案 1 :(得分:0)

我们可以尝试下一个代码进行测试/演示

    MSGBOXPARAMSW mbi = { 
        sizeof(mbi), 
        HWND_DESKTOP, 
        NULL,
        L"lpszText",
        L"lpszCaption",
        MB_USERICON,
        IDI_INFORMATION
    };
    MessageBoxIndirectW(&mbi);

    if (HMODULE hmodImageRes = LoadLibraryEx(L"imageres", 0, LOAD_LIBRARY_AS_DATAFILE))
    {
        mbi.hInstance = hmodImageRes;
        mbi.lpszIcon = MAKEINTRESOURCE(81);
        MessageBoxIndirectW(&mbi);
        FreeLibrary(hmodImageRes);
    }

第一个消息框使用标准IDI_INFORMATION图标enter image description here

当Windows 7上的第二个相同图标和Windows 8.1和Windows 10上的enter image description here时。

来自 imageres.dll MAKEINTRESOURCE(81)以某种方式记录并保持稳定 - 我怀疑

所以在LoadIcon(hmodImageRes, MAKEINTRESOURCE(81)) HMODULE hmodImageRes = LoadLibraryEx(L"imageres", 0, LOAD_LIBRARY_AS_DATAFILE)LoadLibrary(L"imageres")

update `table_name` set `field_name` = `field_name`-1 where `field_name` is not null and `field_name` != 0; 获取第二个图标