いつもお世話になっております。
現在VC6.0を使ってボタンにアイコンを張ろうとしています。
リソースエディタを使って、ボタン(IDC_BUTTON)とアイコン(IDI_ICON)を
準備し、ボタンのプロパティでアイコンの欄をチェックした後
switch(message)
case WM_INITDIALOG:
{
SendDlgItemMessage(hWnd,
IDC_BUTTON,
BM_SETIMAGE,
IMAGE_ICON,
(LPARAM)GetDlgItem(hWnd, IDI_ICON));
}
return TRUE;
としているのですが、実行するとなぜかボタンを押したときの処理が
繰り返されます。
ダイアログボックスのみのプログラムを作っており、このボタンを
押したらファイル選択画面になるのですが、ずっとファイル選択画面が
ループしてダイアログが表示されません。
デバッグしてみても混合モードというものに入ってよくわかりません。
どうすればボタンにアイコンを乗せる事ができるのでしょうか?
皆さんの知恵を貸してください。
開発環境 VC++6.0
OS WindowsXP
No.3ベストアンサー
- 回答日時:
★良く見たらLoadIcon()関数じゃなかったね。
・次のリンクを参考にして下さい。
http://www001.upp.so-net.ne.jp/YandA/WinApiInfo/ …→『アイコンのロード』
※LoadImage()でもできますが LoadIcon() 関数の方が使いやすい。
※マイクロソフト社では、もう古いから LoadIcon() の使用を推奨していないようだ。
サンプル:
HINSTANCE hInstance; ←インスタンス・ハンドル(WinMainの第一引数)
HICON hIcon; ←アイコンのハンドル
// アイコンの取得
hInstance = (HINSTANCE)(INT64)GetWindowLong( hWnd, GWL_HINSTANCE );
hIcon = LoadIcon( hInstance, MAKEINTRESOURCE(IDI_ICON) );
// アイコンの設定
SendDlgItemMessage( hWnd, IDC_BUTTON, BM_SETIMAGE, IMAGE_ICON, (LPARAM)hIcon );
その他:
hIcon = LoadImage( hInstance, MAKEINTRESOURCE(IDI_ICON), IMAGE_ICON, 0, 0, LR_SHARED );
でもアイコンを取得できます。
※最近見落としが多いみたいです。(恥)
※すみませんね。GetDlgItem() が原因でした。
参考URL:http://www001.upp.so-net.ne.jp/YandA/WinApiInfo/ …
No.2
- 回答日時:
BM_SETIMAGEの場合の lparamはビットマップイメージまたはアイコンイメージのハンドルが必要です
GetDlgItemで取得出来るのはコントロールのウィンドウハンドルです
LoadImageなどを使って表示させたいイメージのハンドルを取得しましょう
No.1
- 回答日時:
★補足要求
>としているのですが、実行するとなぜかボタンを押したときの処理が
>繰り返されます。
↑
これだけでは分かりません。
WM_COMMANDの部分を載せて下さい。
またアイコン・ボタンのリソース内容も見たいです。
ちなみに SendDlgItemMessage() 関数でアイコンの設定方法は合っています。
WM_INITDIALOG の部分は問題ないと思います。
・それではまた。
この回答への補足
すばやい回答ありがとうございます。
ボタンを押したときの処理が繰り返されるのはとまりました。
ボタンのスタイルの通知の欄にチェックを入れていました。
動作は普通にできます。
ただボタンの四角の中身が空になってしまっています。
アイコン、ボタンのリソース内容ですがリソースビューで作ったので
どれを書けばよいかわからないのですが関係ありそうなのは
// resource.h
#define IDC_BUTTON 1003
#define IDI_ICON105
ボタンはスタイルのアイコンをチェック、
アイコンのサイズは16*16です。
いろいろ調べるととても長いプログラムが多く、これだけではできないのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA 参照先で選んだファイルをコピーし、出力先に別名で保存したい 8 2022/05/13 20:37
- その他(ソフトウェア) Figma 1 2023/06/23 14:22
- Excel(エクセル) マクロでボタンにつける名前がどこに設定されているかわからないケースがありました。 1 2023/06/19 19:37
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- JavaScript jsで診断コンテンツのページ内切り替えについて 1 2023/04/14 17:31
- Java Javaプログラミングの質問になります。 ボタンを押下した時に画面遷移して 画面から戻ってきた時のi 1 2023/06/26 07:50
- Access(アクセス) Access 登録ボタンからサブフォームの更新 1 2022/07/22 10:23
- gooブログ Twitterの動画画面をgooブログに埋め込めない 4 2022/06/03 16:40
- コーヒーメーカー・電気ケトル・電気ポット パルスオキシメーターの故障でしょうか? 自宅に帰りパルスオキシメーターの表示が消えて たので電源ボタ 2 2022/08/21 02:14
- Visual Basic(VBA) Vba LongPtrについて教えてください 2 2022/08/19 11:14
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA シートのボタン名を変更し...
-
VBA(エクセル)で自動的にボタン...
-
ユーザーフォームに別シートか...
-
フォームの再読み込み
-
Excel VBA Application.caller...
-
CommandButtonのCaptionを変化...
-
コマンドボタンやイメージにマ...
-
セルをマクロのボタンにしたい。
-
ボタン
-
Access VBA でデータペーストを...
-
VBA でエクセルにパスワードを...
-
[Excel VBA]コマンドボタンの入...
-
C♯初心者で、四則演算の電卓を...
-
VB.net でトグルボタンを実現し...
-
VBAのボタンの位置が変わって困...
-
VBAでオプションボタンによって...
-
ASP.Net ラベルの内容をすぐに...
-
コマンドボタンの文字色
-
フォームから別のフォームを呼...
-
閉じると「+」になり開くと「-...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA シートのボタン名を変更し...
-
VBA(エクセル)で自動的にボタン...
-
フォームの再読み込み
-
ユーザーフォームに別シートか...
-
VBA CommandButtonの文字ずれ
-
セルをマクロのボタンにしたい。
-
コマンドボタンやイメージにマ...
-
Excel VBA Application.caller...
-
VBAのボタンの位置が変わって困...
-
Access VBA でデータペーストを...
-
プロシージャからイベントをコ...
-
他のアプリケーションとの連携
-
閉じると「+」になり開くと「-...
-
C#で動的に作ったtextboxを消す。
-
ボタンをマウスで押し続けたと...
-
VBA でのボタンの移動について
-
ボタン
-
CommandButtonのCaptionを変化...
-
TextBoxでEnterキーを押すと、...
-
VB.net でトグルボタンを実現し...
おすすめ情報