起動時にチェックを入れたい方法は?

このQ&Aのポイント
  • ツリービューで起動時にチェックを入れる方法を教えてください。
  • 起動時にチェックボックスを設定する方法を教えてください。
  • vs2010と2013の両方で起動時にチェックを入れる方法を教えてください。
回答を見る
  • ベストアンサー

ツリービューで、起動時にチェックを入れたい

またまた教えてください。 mfcのツリービューにて、チェックボックスを設け、 起動時にチェックを入れたいのですが、チェックが入りません。 BOOL CtreeTestDlg::OnInitDialog() { CDialogEx::OnInitDialog(); … // TODO: 初期化をここに追加します。 HTREEITEM h1 = m_tree.InsertItem(_T("TEST"), TVI_ROOT); m_tree.SetCheck(h1); return TRUE; // フォーカスをコントロールに設定した場合を除き、TRUE を返します。 } ボタンクリック時では問題がありません。 UpdateData等も入れたりしたのですが、ダメでした。 vs2010,2013両方でダメです。 なにかよい方法がないでしょうか? よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • heburusu
  • ベストアンサー率85% (140/164)
回答No.1

"CTreeCtrl OnInitDialog SetCheck"などで検索すると、正しく反映されないというページがいくつか見つかりますね・・・。 MSDNのサンプル(参考URL)を見ると、なぜか一度フラグの削除&追加をしているので、 この2行を追加してみてはどうでしょうか? >mTree.ModifyStyle( TVS_CHECKBOXES, 0 ); >mTree.ModifyStyle( 0, TVS_CHECKBOXES ); 理由については理解しておりませんが・・・。

参考URL:
https://msdn.microsoft.com/ru-ru/library/windows/desktop/h1w2w3b3%28v=vs.71%29.aspx
rechirin
質問者

お礼

すごい! 動きました。 ありがとうございます。 返事も何日も貰えず、ダメかと思っていました。 本当にありがとうございました。 ベストアンサーにさせて頂きます。

関連するQ&A

  • ASP.NETのチェックボックスつきツリービュー

    開発環境 ・WindowsXP ・Framework4.0 ・VB.NET ASP.NETのWebアプリで、親ノードをチェックすると子ノードもチェックされる ツリービューを作成したいと思っています。 通常のチェックボックスのようにAutoPostBackプロパティをTrueにして 選択イベントハンドラの設定をして実現しようとしていたのですが、 ツリービューはAutoPostBackプロパティを公開していないため、困っています。 良い方法があれば、ご回答よろしくお願いいたします。

  • Warning: initial dialog data is out of range. と言う警告について

    VC++ 6.0 MFC ダイアログベースです。 メインダイアログで、あるボタンをクリックすると、別のダイアログが開くと言う物を作っているのですが、 「F5キー」でデバックし、メインダイアログから別のダイアログを開くと、 Warning: initial dialog data is out of range. と言うメッセージがデバックのメッセージウィンドウにでていました。 これはどういった警告なのでしょうか?よろしくお願い致します。 また、どこを見る必要があるのでしょうか? (1)警告メッセージが出るのは selectingdlg->DoModal(); で出ていました。 (2)OnInitDialog()の中身を全部削除しても、(下記状態)同様の警告が出ました。 (3)最初のころはこのような警告はなく、最近になって見つけたのですが、何を追記した時かが自分でももお解らなくなってしまいました・・・。 よろしくお願い致します。 void CMainDlg::Onbutton1() {   selectingdlg->DoModal(); } BOOL CChildDlg::OnInitDialog() {   CDialog::OnInitDialog();   // TODO: この位置に初期化の補足処理を追加してください   return TRUE; // コントロールにフォーカスを設定しないとき、戻り値は TRUE となります          // 例外: OCX プロパティ ページの戻り値は FALSE となります }

  • チェックボックスの使い方教えてください。

    VC++6.0 MFC です。 チェックリストボックスを無効から有効に切り替えたいんだけど 使い方が良くわかんないっす。 ダイアログエディタで先にIDC_CHECK1のチェックボックスを無効にしてます。 (あと、IDC_CHECK1はメンバ変数bool m_bFlagって入れてます。) CCheckListBox* ckBox; ckBox->Enable(IDC_CHECK1,true); warning C4700: 値が割り当てられていない ローカルな変数 'ckBox' に対して参照が行われました。

  • MFCのListCtrlを使ってセルに色をつけたい

    はじめて質問させて頂きます。 よろしくお願い致します。 MFCのリストコントロールを使って、”セル”ごとに色をつけたいのですが、 可能でしょうか? 調べたところ、CMFCListCtrl::OnGetCellBkColorを使えば可能のようなのですが、 まったく使い方がわかりません。 できれば、下記のコードに添削頂ければ、ありがたいです。 どうぞよろしくお願い致します。 <コード> BOOL Clistctrol_colorDlg::OnInitDialog() {       ~略~ // TODO: 初期化をここに追加します。 //■カラム作成 char _ch00[10]="c1"; char _ch10[10]="c2"; LVCOLUMN lvc; lvc.mask=LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM; lvc.iSubItem=0; lvc.pszText=_ch00; lvc.cx=100; m_wndList.InsertColumn(0, &lvc); lvc.iSubItem=1; lvc.pszText=_ch10; lvc.cx=100; m_wndList.InsertColumn(1, &lvc); //■データ部 char _ch0[10]="0"; char _ch1[10]="1"; char _ch2[10]="2"; char _ch3[10]="3"; LVITEM lvi; lvi.mask = LVIF_TEXT; lvi.iItem=0; lvi.iSubItem=0; lvi.pszText=_ch0; m_wndList.InsertItem(&lvi); lvi.iItem=0; lvi.iSubItem=1; lvi.pszText=_ch1; m_wndList.SetItem(&lvi); lvi.iItem=1; lvi.iSubItem=0; lvi.pszText=_ch2; m_wndList.InsertItem(&lvi); lvi.iItem=1; lvi.iSubItem=1; lvi.pszText=_ch3; m_wndList.SetItem(&lvi); return TRUE; // フォーカスをコントロールに設定した場合を除き、TRUE を返します。 } <調べたURL> http://msdn.microsoft.com/ja-jp/library/bb984092.aspx http://www.orangemaker.sakura.ne.jp/labo/memo/sdk-mfc/CMFCListCtrl.html http://www.aspfree.com/c/a/.NET/List-Control-and-Property-Grid-with-the-MFC-Feature-Pack/

  • OnTimerの使い方

    <環境> WIN98 VC++6.0 MFC  こんな感じで3秒経過するとメッセージボックスを表示していますが、 メッセージボックスのOKボタンを何度も押さないとメッセージボックスが 閉じない時が有ります。 (どうやらメッセージボックスが何個も作られている) どうしてなのでしょうか? BOOL CAbcDlg::OnInitDialog() { // TODO: 特別な初期化を行う時はこの場所に追加してください。 SetTimer(1, 1000, NULL); m_cnttime = 0; 略 void CAbcDlg::OnTimer(UINT nIDEvent) { m_cnttime++; if ( m_cnttime >= 3 ) { AfxMessageBox(""); KillTimer(nIDEvent); } CDialog::OnTimer(nIDEvent); }

  • 文字変換方法について

    VC++6.0にて勉強中の初心者です。 現在、テキストエディタ1(例:"H")とテキストエディタ2("0001")に入力した文字列を16進変換し、テーブル(例:cmd)に格納し、テキストエディタ3には、1,2で入力した文字列を表示したいのですが、どのようにすればよいでしょうか? 下記のように考えてみましたが、ご指導お願い致します。 void CMogiver1Dlg::OnOK() { int cmd; UpdateData(TRUE); if(( m_text1 == _T("H") ) && (m_text2 == _T("0001"))){ cmd = atoi(m_text1); cmd = 0x38; //テキストエディタ1.2の条件が合えば、8を表示する。 m_text3 = cmd; } UpdateData(FALSE);

  • テキストファイルの各行の文字列を、コンボBoxに表示させたい

    テキストファイルの各行の文字列を、コンボBoxに表示させたい 現在VC++ MFCの勉強をしております。(MFCに拘ってはおりません) 下のテキストファイル"D:\data.txt" (Shift_JIS)から (内容) 田中さん 斉藤さん 吉田さん CFile の Read で一行ずつ読み込んで、CStringArrayを使って コンボBox に Insert したいと思っています。 下記のコードについてですが。 BOOL CAddDialog::OnInitDialog() { CDialog::OnInitDialog(); // TODO: ここに初期化を追加してください TCHAR* pszFileName = L"d:\\data.txt"; CFileException fileException; CFile cFile; int ret; char buffLine[256] ; CStringArray cStrComboArr ; // リスト ret = cFile.Open( pszFileName , CFile::modeRead | CFile::shareDenyNone , &fileException ); if ( ret == false ) { AfxMessageBox( L"ファイルが読込めません。" ); return 1; } while ( (ret = cFile.Read( &buffLine , 256 )) != 0 ) { cStrComboArr.Add( buffLine ); /* ここでビルドエラー */ } cFile.Close(); // コンボboxに入れる CComboBoxEx* pCombo = (CComboBoxEx*) GetDlgItem( IDC_COMBOBOXEX1 ); COMBOBOXEXITEM cbi ; cbi.mask = CBEIF_TEXT; for ( int i = 0; i < cStrComboArr.GetCount(); i++ ) { cbi.iItem = i; cbi.pszText = (LPTSTR)(LPCTSTR) cStrComboArr.ElementAt(i) ; // 「'CString' から 'LPWSTR' に変換できません」から。 cbi.cchTextMax = 256; pCombo->InsertItem( &cbi ); } return TRUE; // return TRUE unless you set the focus to a control // 例外 : OCX プロパティ ページは必ず FALSE を返します。 } cStrComboArr.Add( buffLine ); の部分でエラー表示は、 「INT_PTR CStringArray::Add(LPCTSTR)' : 1 番目の引数を 'char [256]' から 'LPCTSTR' に変換できません。」です。 根本的にやり方が間違っているのか、もう少しのところなのか、 ズバッとご指摘いただけないでしょうか。 宜しくお願いします。 OS : Vista Home Premium VS 2008 pro

  • チェックボックス付きツリービュー

    お世話になっております。 WINAPIにて、チェックボックスつきのツリービューを作っているのですがした処理が出来なくて困っております。(環境:BCC) わかる方がおられれば答えてもらえないでしょうか? 親アイテムにチェックが付いたとき、子アイテム全てにチェックがつく。(Exceの日付フィルタと同じ動作) 子ウィンドウのチェックが一個でもはずれると親ウィンドウのチェックが■とかになるようにするにはどのようにすれば出来るのでしょうか? (全部はずれると、親のチェックもはずれる) 下記サイトを参照した限りではツリービュー自体はそんな処理はしてくれなさそうなのですが。 サブクラス化とかして、チェックイベント拾って、子ウィンドウにもチェックいれるとかの処理を自作しないといけないのでしょうか? http://yokohama.cool.ne.jp/chokuto/urawaza/api/index.html

  • TreeView表示がおかしいです。

    Borland C++ (WindowsXP SP3)でWindowsAPIの練習中の人です。 メインウィンドウ(フレームウィンドウ)の中に子ウィンドウを作成してます。 その子ウィンドウの中でTreeView表示しているのですが、下の画像の様な表示になってしまいます。 何かお気づきになりましたら、ご教授お願いします。 一部、ソースを抜粋します。 ---------------------------------------------------------------------------------- #include "header.h" // ヘッダーファイル LRESULT CALLBACK TreeWndProc ( HWND, UINT, WPARAM, LPARAM ); BOOL Cls_OnTreeCreate(HWND, LPCREATESTRUCT); void Cls_OnTreeSize(HWND, UINT, int, int ); void Cls_OnTreePaint(HWND); static HWND hTree; LRESULT CALLBACK TreeWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch ( msg ) { HANDLE_MSG(hWnd, WM_CREATE, Cls_OnTreeCreate); HANDLE_MSG(hWnd, WM_SIZE, Cls_OnTreeSize); HANDLE_MSG(hWnd, WM_PAINT, Cls_OnTreePaint); default: return ( DefWindowProc ( hWnd, msg, wParam, lParam ) ); } return 0L; } BOOL Cls_OnTreeCreate(HWND hwnd, LPCREATESTRUCT lpCreateStruct) { RECT rc; HINSTANCE hInst; HWND hwndTreeView; HTREEITEM hParent1, hParent2, hParent3, hChild1, hChild2; TV_INSERTSTRUCT tv; InitCommonControls(); // コモンコントロールの初期化 GetClientRect (hwnd, &rc); hInst = (HINSTANCE)GetWindowLong ( hwnd, GWL_HINSTANCE ); hwndTreeView = CreateWindowEx( 0, WC_TREEVIEW, "", WS_CHILD | WS_BORDER | WS_VISIBLE | TVS_HASLINES | TVS_HASBUTTONS | TVS_LINESATROOT, rc.left, rc.top, rc.right,rc.bottom, // 0,0,0,0, hwnd, (HMENU)ID_MYTREE, hInst, NULL ); TreeView_SetBkColor (hwndTreeView,RGB(0,0,0)); TreeView_SetTextColor (hwndTreeView,RGB(255,255,255)); TreeView_SetLineColor (hwndTreeView,RGB(125,125,255)); memset((char *)&tv, '\0', sizeof(tv)); tv.hInsertAfter = TVI_LAST; tv.item.mask = TVIF_TEXT; tv.hParent = TVI_ROOT; tv.item.pszText = "粂井"; hParent1 = TreeView_InsertItem(hwndTreeView, ---------------------------------------------------------------------------------- 文字数表示制限のため、ここまでです。 宜しくお願いします。

  • PHP・MYSQLでチェックボックス取得方法

    初めまして。PHP・MYSQL の初心者で只今勉強中なのですが、 HTMLで選択するかしないかの二択のチェックボックスを作成して、PHPを利用しMYSQLに チェックがあれば'true'なければ空白もしくは'false'を取得したいのですが、チェックを外した場合に MAMPのローカルでプレビューすると画面上部に 「Notice: Undefined index: mailMagazine in /Applications/MAMP/htdocs/AAAAA/XXXXX.php on line 15」 と表示されてしまいます。このエラーを解除するにはどのようにしたらよいでしょうか? 【HTML】 <form id="member" method="post" action="xxxxx.php"> <input type="checkbox" name="mailMagazine " id="mailMagazine" value="true" checked="checked" /> <label for="mailMagazine">メールマガジンを配信希望</label> </form> 【PHP】 <?php mysql_connect ('localhost', 'root', 'root') or die (mysql_errpr()); mysql_select_db ('mail'); mysql_query ('SET NAMES UTF8'); $sql = sprintf ('INSERT INTO member SET mailMagazine="%s", created="%s"', mysql_real_escape_string ($_POST['mailMagazine']), date ('Y-m-d H:i:s') ); mysql_query ($sql) or die (mysql_error()); ?> 【MYSQL】 データ型(種別):enum('true') デフォルト値:NULL となっています。 また、MYSQL についてなのですが、このような場合はデータ型(種別)はenumとset のどちらが正しいのでしょうか? もし分かる方がいらっしゃいましたら、何卒ご教示いただきますよう宜しくお願い致します。

    • ベストアンサー
    • PHP

専門家に質問してみよう