VC_Icon の変更点 - アールメカブ

アールメカブ


VC_Icon の変更点


[[Programming]]

#contents

* アイコン作成その1 [#d75cd6d0]
 
アイコン作成その1
 
Win32Application で 空のファイルをプロジェクトにした場合のアイコンの変更方法
 
1 挿入 新規リソース Icon を作成
 大小、一つのファイルに収められる(新規デバイスイメージボタンでスモールを追加)
  デフォルトのIDは IDI_ICON1
 
2 これで resouce.h ができるので、Header Files に取り込む
 Src.sr を Resource files にとりこむ(ソースも可?)
 (一度閉じると,できていることもある)
 
3 Winmain.cpp ファイル冒頭に resource.h をインクルード
 
4 Winmain関数 に
 wc.hIcon = LoadIcon(hInstance, (LPCTSTR)IDI_ICON1); // by ISHIDA
 wcl.hIconSm = NULL を追加 // by ISHIDA
 
cppフォルダのサンプルプロジェクト IconTest、FirstWind_orig
 
 mfXApplication SDI でドキュメントサポートをはずした場合の、アイコンの変更
 
 // MainFrm.cpp で 以下の変更
 
 BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
 {
 if( !CFrameWnd::PreCreateWindow(cs) )
 return FALSE;
 // TODO: この位置で CREATESTRUCT cs を修正して、Window クラスやスタイルを
 // 修正してください。
 
 cs.dwExStyle &= ~WS_EX_CLIENTEDGE;
 //cs.lpszClass = AfxRegisterWndClass(0); まずここをコメントアウト by ishida
 
/* by ishida 次に SDI のアプリで、ドキュメントサポートチェックをはずした場合、
画面左上アイコンはウインドウズの絵に
決まってしまう。これを変更するには、まずsmallIconを作成し(ここではIDI_ICON1)、
以下のようにデフォルトの関数を上書きする。参考になるのは、プロジェクト Win32Applicaito、型 単純な Hello型 アプリ作成時の
Win32App_Hello.cpp内の ATOM MyRegisterClass( HINSTANCE hInstance ) 関数の記述である。
*/ [#w28fe028]
~/* by ishida 次に SDI のアプリで、ドキュメントサポートチェックをはずした場合、 画面左上アイコンはウインドウズの絵に 決まってしまう。
 これを変更するには、まずsmallIconを作成し(ここではIDI_ICON1)、 以下のようにデフォルトの関数を上書きする。参考になるのは、プロジェクト Win32Applicaito、型 単純な Hello型 アプリ作成時のWin32App_Hello.cpp内の ATOM MyRegisterClass( HINSTANCE hInstance ) 関数の記述である。
~*/ [#w28fe028]
 
 cs.lpszClass = AfxRegisterWndClass(CS_HREDRAW | CS_VREDRAW, ::LoadIcon(cs.hInstance, (LPCTSTR)IDR_MAINFRAME),
 HBRUSH(COLOR_WINDOW+1), :: LoadIcon(cs.hInstance, (LPCTSTR)IDI_ICON1) );
 
 // ishida
 //cs.x = 200; cs.y = 200;
 //cs.cx = 500; cs.cy = 500;
 // ishida
 return TRUE;
 }
 
CPP フォルダのサンプルプロジェクト forest
 
その2
* その2 [#r6618c61]
 
 
4月30日  アイコンの変更 その2
 
ダイアログ形式プログラムのアイコンを変えるには一番単純には MAINFRAME を一度消して、別の大小アイコンセットをこの名前に変える。
 
そうでなければ
 
Dlgクラスのコンストラクタ内の
 
 //m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
 
を書き換え。
 
 CDialog::OnInitDialog(); 
 InitialDlg() 内の
 //SetIcon(m_hIcon, FALSE); // 小さいアイコンを設定
 
を
 SetIcon(m_hIcon, TRUE); // 小さいアイコンを設定
と書き換え。
 
また .rc ファイル内で
 
 /////////////////////////////////////////////////////////////////////////////
 //////////////
 //
 // Icon
 //
 
 // Icon with lowest ID value placed first to ensure application icon
 // Icon with lowest ID value placed first to ensure 
       application icon
 // remains consistent on all systems. 
次の行を削除してしまう
 //IDR_MAINFRAME ICON DISCARDABLE "res\\ishida_string.ico"
 IDI_ICON1 ICON DISCARDABLE "res\\icon1.ico"
 
 /////////////////////////////////////////////////////////////////////////////
 /
さらに
 IDD_ABOUTBOX DIALOG DISCARDABLE 0, 0, 235, 55
 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | 
 WS_SYSMENU
 CAPTION "ishida_stringのバージョン情報"
 FONT 9, "MS Pゴシック"
 BEGIN
 ICON IDI_ICON1,IDC_STATIC,11,17,20,20
 LTEXT "ishida_string Version 1.0",IDC_STATIC,40,10,119,8,
 LTEXT "ishida_string Version 1.0",
 IDC_STATIC,40,10,119,8,
 SS_NOPREFIX
 LTEXT "Copyright (C) 2001",IDC_STATIC,40,25,119,8
 DEFPUSHBUTTON "OK",IDOK,178,7,50,14,WS_GROUP
 END
 
その3
* その3 [#l5c96305]
 
5月11日
Dlgベースプログラムで、単純にIDR_MAINFRAMEを削除し、インポートしたIcoファイルのプロパティー名をIDR_MAINFRAMEに変更しただけの場合、起動用のアイコンも、また起動時のフレーム左上のアイコンも同じになってしまうので、 Dlgクラス内部のOnInitDialog(); 関数で以下のように設定変更する。
 
 // ウィンドウがダイアログでない時は自動的に設定しません。
 SetIcon(m_hIcon, TRUE); // 大きいアイコンを設定
 SetIcon(m_hIcon, TRUE); // 小さいアイコンを設定 // ishida TRUE に変更した
 SetIcon(m_hIcon, TRUE); // 小さいアイコンを設定
 // ishida TRUE に変更した