アプリ版:「スタンプのみでお礼する」機能のリリースについて

BCC32 で、

ShellAbout(hWnd,"","",LoadIcon(hInst, IDI_APPLICATION));
ShellAbout(hWnd,"","",LoadIcon(NULL, IDI_APPLICATION));

↑ならアイコンに関してどっちでもできるけど、リソースで
MYICONSM ICON DISCARDABLE "ico.ico"
として、

ShellAbout(hWnd,"","",LoadIcon(hInst, "MYICON");
ShellAbout(hWnd,"","",LoadIcon(NULL, "MYICON"));

↑はアイコンに関してどっちも無効で旗になります。
BCC32 で ShellAbout( ) で自作アイコンを表示するには
どうしたらいいんですか?


#include <windows.h>
#include <shellapi.h>

HINSTANCE hInst;
HICON hIcon;

LRESULT CALLBACK WndProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam){

 switch (uMsg){
 case WM_LBUTTONDOWN:
  ShellAbout(hWnd,"","",?;
 break;
 case WM_DESTROY:
  PostQuitMessage(0);
 break;
 default:
  return DefWindowProc(hWnd,uMsg,wParam,lParam);
 }
 return 0;
}

int WINAPI WinMain(HINSTANCE hInst,HINSTANCE,LPSTR,int){
 HWND hWnd;
 WNDCLASSEX wc;
 MSG msg;
 wc.cbSize =略
 wc.style =
 wc.lpfnWndProc =
 wc.hInstance =
 wc.cbClsExtra =
 wc.cbWndExtra =
 wc.lpszMenuName =
 wc.lpszClassName =
 wc.hIcon =
 wc.hCursor =
 wc.hbrBackground =
 RegisterClassEx(&wc);

 hWnd = CreateWindow(wc.lpszClassName,"TEST",WS_OVERLAPPEDWINDOW,
     0,0,640,480,NULL,NULL,hInst,NULL);

 ShowWindow(hWnd,SW_SHOWNORMAL);
 UpdateWindow(hWnd);

 while(GetMessage( &msg, NULL, 0, 0)){
  TranslateMessage( &msg );
  DispatchMessage( &msg );
 }
 return 0;
}

A 回答 (1件)

確認ですが、LoadIconの戻り値がNULLでないことは


確認されてますよね?

LoadIcon(hInst, "MYICON"); とか
LoadIcon(NULL, "MYICON");
の戻り値です。

アイコンの作成の仕方に間違えはないんですよね?
LoadIconのヘルプを見ると、
「アイコンリソースは、カラービットマップまたは
 モノクロビットマップにすることができます。アイコ
 ンのサイズは、GetSystemMetrics 関数で引数として
 SM_CXCURSOR や SM_CYCURSOR を渡したときに得られ
 る値でなければなりません。それ以外のサイズのアイ
 コンをロードするには、LoadImage 関数を使用しま
 す。」
とありますが、それは、読まれていますね?

この回答への補足

質問ソースに間違いがあったから下に全部書き直します。

BCC32 で、

ShellAbout(hWnd,"","",LoadIcon(hInst, IDI_APPLICATION));
ShellAbout(hWnd,"","",LoadIcon(NULL, IDI_APPLICATION));

↑ならアイコンに関してどっちでもできるけど、リソースで
MYICON ICON DISCARDABLE "ico.ico"
MYICONSM ICON DISCARDABLE "icosm.ico"
として、

ShellAbout(hWnd,"","",LoadIcon(hInst, "MYICON");
ShellAbout(hWnd,"","",LoadIcon(NULL, "MYICON"));

↑はアイコンに関してどっちも無効で旗になります。
BCC32 で ShellAbout( ) で自作アイコンを表示するには
どうしたらいいんですか?
BCC32 で実際にアイコン表示できる方だけに教えてほしいです。


#include <windows.h>
#include <shellapi.h>

HINSTANCE hInst;
HICON hIcon;

LRESULT CALLBACK WndProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam){

 switch (uMsg){
 case WM_LBUTTONDOWN:
  ShellAbout(hWnd,"","",?;
 break;
 case WM_DESTROY:
  PostQuitMessage(0);
 break;
 default:
  return DefWindowProc(hWnd,uMsg,wParam,lParam);
 }
 return 0;
}

int WINAPI WinMain(HINSTANCE hInst,HINSTANCE,LPSTR,int){
 HWND hWnd;
 WNDCLASSEX wc;
 MSG msg;
 wc.cbSize =略
 wc.style =
 wc.lpfnWndProc =
 wc.hInstance =
 wc.cbClsExtra =
 wc.cbWndExtra =
 wc.lpszMenuName =
 wc.lpszClassName =
 wc.hIcon =
 wc.hIconSm = LoadIcon(hInst, "MYICONSM");// これは成功。
 wc.hCursor =
 wc.hbrBackground =
 RegisterClassEx(&wc);

 hWnd = CreateWindow(wc.lpszClassName,"TEST",WS_OVERLAPPEDWINDOW,
     0,0,640,480,NULL,NULL,hInst,NULL);

 ShowWindow(hWnd,SW_SHOWNORMAL);
 UpdateWindow(hWnd);

 while(GetMessage( &msg, NULL, 0, 0)){
  TranslateMessage( &msg );
  DispatchMessage( &msg );
 }
 return 0;
}

補足日時:2002/02/12 02:13
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!