いずみちゃんどっとこむ プログラミング掲示板

過去ログ一覧

Win32 Programming Tips (6)
1 名前:いずみ 投稿日:2001/12/08(土) 04:34:25
 Win32 & VC++

2 名前:いずみ@インフォシティ 投稿日:2001/12/13(木) 21:51:04
 今むちゃくちゃ悩んでおります…(涙)

 COMでIPropertyPageを複数実装して、OleCreatePropertyFrame()でプロパティシートを表示しようと思いました。
 んで、それは簡単にできるわけですが、問題は、実際に表示したこのプロパティシート、Applyボタンを押したときのメッセージハンドラである IPropertyPage::Apply()が、なぜかタブによるページ間切り替えでも呼ばれてしまいます。
 ここに、MSのサンプルどーりのコード(プロパティの更新他)を実装してしまうと、ユーザがタブ切り替え→そのままキャンセル、なんてときにも全プロパティが更新されちゃうじゃありませんか(涙)

 ネットで検索しても、これで悩んでる人が誰もいなさそうなんですよね…
 どーなってるんだいったい!!!!(苦笑)

3 名前:いずみ 投稿日:2001/12/14(金) 01:16:51
 >>2の件は、やっぱり OleCreatePropertyFrame()がタコだろうってことで、CDialogImplの派生クラスに IPropertyPageSite を多重継承して実装しなおすことに。

 んで、ここで躓く前は、ATL用に、レジストリと値とウィンドウコントロールの3者を行き来するテンプレートクラスの実装してました。テンプレート引数には文字列は渡せない、なんてことをはじめて知って大恥^^;;
 ヘルパクラス使って、 CheckBox<IDC_ENABLED_VIEW, REGNAME_ENABLED_VIEW_TAG> enabled_view; なーんてやってます。

4 名前:いずみ 投稿日:2001/12/14(金) 01:19:13
 ていうか、VC++のバグなんとかしてくれ(涙)
 この3日間に、http://member.nifty.ne.jp/~masumoto/cpp/vcbug/ に出てるうちの 5・6・7の3つにブチ当たったぞ(涙)

5 名前:いずみ@インフォシティ 投稿日:2001/12/14(金) 18:31:30
 >>4を実装したナリ〜(^o^)

 で、ふつーのダイアログボックスとして、コントロールパネルでのプロパティシートとまったく同じに表示する方法でカンチガイして苦しんだなり^^;

 コンパネのプロパティシートの特徴として、

 (1)タスクバーには表示されない
 (2)Alt+TABでは自前のアイコンが表示される
 (3)システムメニューがない
 (4)クローズボックスはある

 これをどうやって実現するかが腕の見せ所、ちゅーかきづけばすぐ、きづかないいずみが阿呆^^;;

6 名前:いずみ@インフォシティ 投稿日:2001/12/17(月) 14:12:42
 がー、プロパティシートにコネクションポイントつけとくべきだった…(涙)

Script: mjuz float bbs ver.1.32