- ベストアンサー
CTabControlに関連付けたダイアログ
- CTabControlに関連付けられたダイアログのチェックボックスが動作しない問題について
- タブクリックでダイアログを切り替え、切り替えた先のダイアログのチェックボックスを動作させる方法をご存知の方がいたら教えてください
- CTabControlのTC_ITEM tc[10]を使用してリソースエディタでチェックボックスが貼り付けられた10個のダイアログを関連付けた際、チェックボックスのクリックが反応しない問題が発生しています
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
>CButton::SetCheckStyle(BS_AUTOCHECK) は、CButton::SetButtonStyle(BS_AUTOCHECKBOX) の ことだと一応考えているんですが、リソースエディタの [自動](デフォルト)で別に大丈夫みたいですよ。 チェックリストボックスだったとしても同じようです。 下記リンクの『タブコントロール』の方法で一応 確認できました。ソースはこんな感じで m_pg1, m_pg2・・・タブ内のダイアログ --メインダイアログのOnInitDialog()-- TC_ITEM TabCtrlItem; TabCtrlItem.mask = TCIF_TEXT; TabCtrlItem.pszText = "Hi!"; m_tab.InsertItem( 0, &TabCtrlItem ); TabCtrlItem.pszText = "Ho!"; m_tab.InsertItem( 1, &TabCtrlItem ); m_pg1.Create(Cpg1::IDD, &m_tab); m_pg1.SetWindowPos(&wndTop,10,50, 0,0,SWP_NOSIZE | SWP_SHOWWINDOW); m_pg2.Create(Cpg2::IDD, &m_tab); m_pg2.SetWindowPos(&wndTop,10,50, 0,0,SWP_NOSIZE | SWP_HIDEWINDOW); ------------------------------------------ --OnSelchangeTabXX------------------------ int nidx = m_tab.GetCurSel(); m_pg1.ShowWindow(SW_HIDE); m_pg2.ShowWindow(SW_HIDE); switch(nidx) { case 0: m_pg1.ShowWindow(SW_SHOW); break; case 1: m_pg2.ShowWindow(SW_SHOW); break; } -------------------------------------------
お礼
お礼が遅くなって申し訳ありません。 実際に上記アドバイスのソースを入力した結果、期待していた動作をしました。ありがとうございます。 今までは、二枚目のダイアログでSWP_HIDEWINDOWのビットフラグを立てていませんでした。 SetWindowPos()でSWP_HIDEWINDOWをたてるのではなく、 ShowWindow(SW_HIDE)で二枚目を見えない状態にしていました。 参考URLよく見に行ってますが、見落としていたなんて。 どうもすいませんでした。 これからもよろしくお願いします。