いつもお世話になっています。
宜しくお願いします。
【環境】
Windows XP SP2 / VisualStudio2005 MFC使用(スタテックライブラリ使用、SJIS)
【ダイアログ上のアイテム】
ダイアログボックス
改造前 メニューバーなし
改造後 メニューバーを追加(ダイアログのプロパティーより設定)
水平スクロールバー
改造前 (ツールボックスのダイアログエディタから、貼付け設定)
改造後 ダイアログのプロパティーより設定
OKボタン(非表示)
Cancelボタン(非表示)
カスタムコントロール(画像描画)
【動作概要】
ダイアログベースのプログラムで、マウスでスクロールバーをクリックしたら、
カスタムコントロール上で表示されている、画像を左右にスクロール。
(改造前は問題なく動いていました)
【問題点】
メニューバーを追加したところ、スクロールバーがディスプレーの画面下に隠れてしま
い、操作できなくなり、ツールボックスのダイアログエディタから、貼付けた
Horizontal ScrollBarを削除し、ダイアログのプロパティーの設定から
Horizontal ScrollBarの設定値を、FalseからTrueに変更し設定しましたら、
スクロールバーは表示できましたが、スクロールバーをマウスでクリックしても、反応し
ません。
(実装していないので当然ですが)
【質問】
ダイアログのプロパティーより設定した、スクロールバーの実装は、何処で行ったら
良いのでしょうか、それとも単なる飾りなのでしょうか(そんなはずは無いと思います
が)
因みに、改造前 (ツールボックスから、貼り付けたもの)は
afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
に実装していました。
以上宜しくお願い致します。
OnHScroll です。
シャノンさんお世話になります、返信遅くなりましたごめんなさい。
やはりOnHScrollですよね・・・・・・、OnHScroll関数は書いているのですが、
C***Dlg::OnHScrollメンバ関数として機能しません
理由は、想像ですがダイアログのメンバ関数として登録されてないからだと、思います
リソースシンボルブラウザを開きますと、確かにIDC_SCROLLBAR1と、リソースIDの値1002
は、存在するのですが
使用中の項目に、チェックが無く、次のリソースで使用という、項目も確認しますと
未使用になっています。
普段、メンバ関数を追加する場合、リソースエディターから目的のリソース上でダブルク
リックして
作るのですが、手動での追加の仕方が良く分かりません、ご教示お願いできないでしょう
か。
何にも変わっていないのですが、CDlg::OnHScrollメンバ関数を一旦削除して
再度、CDlgのプロパティーから、再度追加したら
C***Dlg::OnHScroll関数へ、メッセージが飛んでくるようになりました。
お騒がせしました、理解しがたいですが解決とさせていただきます。
なぜ、そうなったのかMFCに造詣の深い方がおられましたら、
解説していただければ幸いですが。
読点多すぎ、読み辛ぁー
メッセージマップが壊れたとかじゃないかなぁ。
シャノンさん、ありがとうございます
>>メッセージマップが壊れたとかじゃないかなぁ。
BEGIN_MESSAGE_MAP(CxxxApp, CWinApp)
ON_COMMAND(ID_APP_ABOUT, OnAppAbout)
ON_COMMAND(ID_FILE_NEW, CWinApp::OnFileNew)
END_MESSAGE_MAP()
このブロックの部分ですね、この部分もメンバー関数を追加、削除したらMFCが
適切に、追加したりコメントアウトしたりしてくれるので、気にしてませんでしたが
今後、同じような問題が生じた場合は気をつけます。
ところで、解決にチェックを入れたのですが、別の不具合が発生して夕べから
思考錯誤しているのですが、どうにもなりません別件で質問させて
頂きたいと思います、宜しくお願い致します。
>>読点多すぎ、読み辛ぁー
気をつけます(^^;