winapi C++ を使用してリソース エディターでアイコンを作成しましたが、アイコンが正しく読み込まれていないために発生したと思われる赤いエラー X として表示されます。
私のプログラムはコードの行数が多いので、ここでは割愛して、アイコンをロードする場所、またはしようとする場所のみを示します。
wndclass.cbSize = sizeof(wndclass);
wndclass.style = CS_HREDRAW | CS_VREDRAW;
wndclass.lpfnWndProc = WndProc;
wndclass.cbClsExtra = 0;
wndclass.cbWndExtra = 0;
wndclass.hInstance = hInstance;
hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON1));
wndclass.hIcon = LoadIcon (hInstance, MAKEINTRESOURCE(IDI_ICON1));
hMenu = LoadMenu(hInstance, MAKEINTRESOURCE(IDR_MENU1));
wndclass.hCursor = LoadCursor (NULL, IDC_ARROW);
wndclass.hbrBackground = static_cast<HBRUSH>(GetStockObject (WHITE_BRUSH));
wndclass.lpszMenuName = NULL;
wndclass.lpszClassName = szAppName;
wndclass.hIconSm = LoadIcon(NULL, MAKEINTRESOURCE(IDI_ERROR));
RegisterClassEx (&wndclass);
.rc ファイル
// Microsoft Visual C++ generated resource script.
//
#include "resource.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include "afxres.h"
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
// English (United States) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
1 TEXTINCLUDE
BEGIN
"resource.h\0"
END
2 TEXTINCLUDE
BEGIN
"#include ""afxres.h""\r\n"
"\0"
END
3 TEXTINCLUDE
BEGIN
"\r\n"
"\0"
END
#endif // APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Menu
//
IDR_MENU1 MENU
BEGIN
POPUP "&File"
BEGIN
MENUITEM "&Erase", ID_FILE_ERASE
MENUITEM "E&xit", ID_FILE_EXIT
END
POPUP "&Animals"
BEGIN
MENUITEM "&Dog", ID_ANIMALS_DOG
MENUITEM "&Cat", ID_ANIMALS_CAT
END
POPUP "&Date Info"
BEGIN
MENUITEM "Current &Date", ID_DATEINFO_CURRENTDATE
MENUITEM "Current &Time", ID_DATEINFO_CURRENTTIME
END
POPUP "&Break"
BEGIN
MENUITEM "&Sound", ID_BREAK_SOUND
MENUITEM "S&hapes", ID_BREAK_SHAPES
END
POPUP "&Help"
BEGIN
MENUITEM "&System Info", ID_HELP_SYSTEMINFO
MENUITEM "&About", ID_HELP_ABOUT
END
END
/////////////////////////////////////////////////////////////////////////////
//
// Icon
//
// Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems.
IDI_ICON1 ICON "icon1.ico"
#endif // English (United States) resources
/////////////////////////////////////////////////////////////////////////////
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED
もちろんリソースファイルも。
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by Lab_04_Playing_With_Timer_n_Resources.rc
//
#define IDR_MENU1 101
#define IDI_ICON1 102
#define ID_FILE_ERASE 40001
#define ID_FILE_EXIT 40002
#define ID_ANIMALS_DOG 40003
#define ID_ANIMALS_CAT 40004
#define ID_DATEINFO_CURRENTDATE 40005
#define ID_DATEINFO_CURRENTTIME 40006
#define ID_BREAK_SOUND 40007
#define ID_BREAK_SHAPES 40008
#define ID_HELP_SYSTEMINFO 40009
#define ID_HELP_ABOUT 40010
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 103
#define _APS_NEXT_COMMAND_VALUE 40011
#define _APS_NEXT_CONTROL_VALUE 1001
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif
私はそれがかなり簡単な修正だと確信しています。私はそれを理解することはできません。私はmsdnを見て、教科書をかなり深く読んでも、アイコンが表示されません。表示しようとしているアイコンは IDI_ICON1 です。