- 締切済み
タブコントロールが表示できない
どうしてタブコントロールがこれでは表示されないのでしょうか m_TabはCTabCtrlです。 <CMainFrame::OnCreate内> ------------------------------------------------------ CRect rcClient; GetClientRect(rcClient); if(!m_Tab.Create(TCS_TABS | TCS_FIXEDWIDTH | WS_CHILD | WS_VISIBLE,rcClient,this,0x1006)) { return -1; } m_Tab.InsertItem( 0, _T("test"));
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- iyomante
- ベストアンサー率60% (14/23)
関連するQ&A
- ウィンドウにボタンを配置するには?
VC++6.0、WinXPです CMainFrame::CMainFrame() { CButton myButton1; myButton1.Create( _T("Button"), WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON, CRect(10,10,100,100),this, 100); myButton1.ShowWindow(SW_SHOW); myButton1.UpdateData(); } としてますがビルドはできますが実行中にエラーがでます。何がおかしいのでしょうか? よろしくお願いします。
- ベストアンサー
- C・C++・C#
- Formにエディットボックスを貼りたい
環境はWIN98 VC++6.0 MFC SDIです。 クラスウィザードのデフォルトでSDIを作ります。 但し、6/6ページの基本クラスはCFormViewにします。 このForm上にプログラム上からエディットボックスを貼りつけるために、以下のようにしましたが、エディットボックスらしき白い四角は出来ましたが文字の入力が出来ません。 どうすればよいのでしょうか? static contID = 4000; ///////////////////////////////////////////////// int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) { 略 CRect rect; // CTestWndの上にCEditを貼り付ける rect.top = 30; rect.left = 30; rect.bottom = 100; rect.right = 100; CEdit* edit = new CEdit(); if( edit->Create(WS_CHILD|WS_VISIBLE|WS_TABSTOP, rect, this, contID++ ) != TRUE ){ throw new CException(); } return 0; }
- ベストアンサー
- C・C++・C#
- MFCでのボタン配置
ダイアログではなく、直接Windowにボタンを貼り付けるために、AppWizaerdを使用して、MyAppというプロジェクトをつくり、MyAppクラスのヘッダに CButton mybutton を定義し、cppファイルのInitInstance関数内の m_pMainWnd->UpdateWindow();の下に、以下のように記述したところ、 mybutton.Create(_T("OK"), WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON, CRect(10,10,100,100), m_pMainWnd, 1); ボタンは表示されるのですが、押しても凹んでくれません。どうしてなのでしょうか?? 環境はWinXP VisualStudio.Net2003です。
- ベストアンサー
- C・C++・C#
- コントロールのフォントの変更
コントロールに任意のフォントを指定できなくて困っています。 class CFrame : public CFrame { private: CFont m_cFont; CStatic m_cStatic; public: CFrame(); afx_msg void OnCreate(LPCREATESTRUCT); }; CFrame::CFrame() { Create( // 省略 ); m_cFont.CreateFont( // 省略 ); } axf_msg void CFrame::OnCreate(LPCREATESTRUCT lp) { RECT rect; DWORD dw; rect.top = 10; rect.left = 10; rect.right = 100; rect.bottom = 60; dw = WS_CHILD | WS_VISIBLE; m_cStatic.Create("AAAAAA", dw, rect, this, ID); m_cStatic.SetFont(&m_cFont, TRUE); } 文字は表示されるのですが、フォントがおそらくデフォルトのままだと思われるのですが、どうしてかわかりません。 ダイアログベースでは、OnInitDialogで実行していたと思いますが、以上のコードではだめなんでしょうか? よろしくお願いします。
- 締切済み
- C・C++・C#
- OnDestroy() について
環境 WIN98 VC++6.0 MFC SDIにて アプリ起動と同時にダイアログを表示しています。 int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) { 略 dlg = new CInput(this); dlg->Create(IDD_DIALOG1); dlg->ShowWindow(SW_SHOW); return 0; } <質問1> このような場合に、CInputクラスに以下のようにOnDestroy()を追加しましたが、 ダイアログを閉じた時もアプリ終了時にもメッセージが飛んできません。 どうしてなのですか? void CInput::OnDestroy() { CDialog::OnDestroy(); AfxMessageBox("789"); } <質問2> 更に、以下のように新規にダイアログバーを追加したところ、メッセージが飛ぶようになりました。 どうしてなのでしょうか? int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) { 略 if (!m_wndMyDialogBar.Create(this, CG_IDD_MYDIALOGBAR, WS_VISIBLE , CG_ID_VIEW_MYDIALOGBAR)) { TRACE0("Failed to create dialog bar m_wndMyDialogBar\n"); return -1; // 作成に失敗 } dlg = new CInput(this); dlg->Create(IDD_DIALOG1); dlg->ShowWindow(SW_SHOW); return 0; }
- ベストアンサー
- C・C++・C#
- Cwndクラスの派生クラスmCWndクラスのOnDrawについて
OnDraw関数が呼び出しされていません。 どうすればいいですか? よろしくお願いします。 class mCWnd :public CWnd { public: DECLARE_MESSAGE_MAP() afx_msg void OnLButtonDown(UINT nFlags,CPoint point) { AfxMessageBox("子ウインドウ"); CDC *pDC=GetDC(); pDC->TextOut(0,0,"HELLO"); ReleaseDC(pDC); Invalidate(); } virtual void OnDraw(CDC* pDC) { AfxMessageBox("OnDraw"); pDC->FillSolidRect(CRect(0,0,300,300),RGB(255,255,255)); } }; BEGIN_MESSAGE_MAP(mCWnd, CWnd) ON_WM_LBUTTONDOWN() END_MESSAGE_MAP() ------------------------------------------- //***View.cpp (mCWnd cw) void CKoDlg::OnBnClickedButton1() { CRect rect=CRect(50,50,190,250); cw.Create(NULL,"Hello",WS_CHILD|WS_VISIBLE,rect,this,5000,0); // TODO : ここにコントロール通知ハンドラ コードを追加します。 }
- ベストアンサー
- C・C++・C#
- CreateWindowでSTATICコントロールを使ってBITMAP表示する。
WIN32、VC++2005にて開発中です。 CreateWindowでSTATICコントロールを使ってBITMAPを表示する方法が分からなくて困ってます。 ウィンドウプロシージャのWM_CREATEで、 下記の様に書いてみたんですがダメでした。 CreateWindowW(L"Static", L"***", WS_VISIBLE|WS_CHILD|SS_BITMAP,120, 3, 100, 45, hWnd, HMENU(-1), NULL, NULL); ビットマップはIDB_BITMAP1という名前で追加してリソースビューで確認しました。 CreateWindowで表示させたいんですがいい方法ありますか? 初心者でアホなんでなるべく解り易くお願いします。
- ベストアンサー
- C・C++・C#
- 1つのウィンドウに2つのエディット
case WM_CREATE: GetClientRect(hWnd, &rc); EditL = CreateWindow( TEXT("EDIT") , NULL , WS_CHILD | WS_VISIBLE | WS_HSCROLL | WS_VSCROLL | ES_AUTOHSCROLL | ES_AUTOVSCROLL | ES_LEFT | ES_MULTILINE , 0 , 0 , rc.right / 2 , rc.bottom , hWnd , (HMENU)1 , ((LPCREATESTRUCT)(lParam))->hInstance , NULL); EditR = CreateWindow( TEXT("EDIT") , NULL , WS_CHILD | WS_VISIBLE | WS_HSCROLL | WS_VSCROLL | ES_AUTOHSCROLL | ES_AUTOVSCROLL | ES_LEFT | ES_MULTILINE , rc.left / 2 , 0 , rc.right , rc.bottom , hWnd , (HMENU)2 , ((LPCREATESTRUCT)(lParam))->hInstance , NULL); return FALSE; とすると、1つのエディットしか表示されません。 また、 case WM_SIZE: GetClientRect(edit, &rc); MoveWindow(edit, rc.left, rc.top, rc.right, rc.bottom, TRUE); として、ウィンドウサイズが変更された時に どちらのエディットもクライアント領域にあわせたつもりなのですが、 サイズ変更で左側のエディットがスクロールバーの幅の分だけ 縮小されてしまいます。 どこをどのように直したらよろしいのでしょうか? 宜しくお願いします。 #Win98 & VC++6.0 & SDK で作成しています。
- ベストアンサー
- C・C++・C#
- CFrameWnd とCFormView3
自分で継承したCFormViewとCFrameWndを使ったウインドウサイズを CFormViewのダイアログボックスのサイズに合わせたいのですが どうすれば良いでしょうか? 要はCFormViewをウィザードで作成したとき、ダイアログボックスのサイズに 自動で合わせてくれますがあれを実現したいのです。 現在はCFrameWndのSetWindowPosで無理やりあわせています。 具体的には グローバル変数にCRect g_DialogRectを持たせ CXXXView::OnCreateの中で GetClientRect(&g_DialogRect); クライアント領域取得 CMainFrame::OnCreateの中で SetWindowPos( &wndTop, 0, 0, g_DialogRect.Width() + 14, g_DialogRect.Height() + 80, 0 ); 14と80はメインフレームのタイトルやステータスバー、溝のサイズを埋める為適当にいれました。 (GetSystemMetricsあたりを駆使すれば取得できそうですが、) CFormViewをウィザードで作成したものは CFormViewのOnInitialUpdateの中で、 CFormView::OnInitialUpdate(); GetParentFrame()->RecalcLayout(); ResizeParentToFit(); とするみたいですが、 自分で作成したCFormViewではOnInitialUpdateを追加してブレークをはったのですが通過しないようでした。 OnCreateのタイミングでやるとResizeParentToFitで例外が発生してしまいます。 度重なる質問で恐縮ですが宜しくお願い致します。
- ベストアンサー
- C・C++・C#
- 親ウィンドウの領域外でも表示されるエディットボックスについて
親ウィンドウの領域外でも表示されるエディットボックスについて VisualStudio2005でMFCアプリを作っています。 親ウィンドウに指定したコントロールの領域外でも 表示されるようなエディットボックスを作りたいのですが、方法はありますか? イメージとしては、ダイアログ上にボタンがあって、 そのボタンを押すとエディットコントロールが表示され、入力待ちとなるようなものです。 このエディットには改行を入力させるのですが、改行してウィンドウサイズを大きくしていくと、 ダイアログの下の端でエディットボックスが途切れてしまいます。 ダイアログの下より大きくなっても全体が表示されるようにしたいんです。 このエディットの生成は次のような感じで行っています。 DWORD dwStyle = WS_CHILD | WS_VISIBLE | WS_VSCROLL | ES_AUTOHSCROLL | ES_MULTILINE | ES_WANTRETURN; m_edit.Create(dwStyle, rect, this/*ダイアログ*/, -1); よろしくお願いします。
- ベストアンサー
- C・C++・C#
- ソフトのバージョンアップをしたいけど、暗証番号を忘れてできません。
- Windows10で無線LANに接続しています。関連するソフトやアプリはありません。
- 電話回線はソフトバンクAirを使用しています。