- ベストアンサー
リストボックスのフォントをサイズを変更したい
コンパイルはできるのですが、GetFontでCFontが取得できません。 これを最も早い段階で実行するには、どこに書けばいいんでしょうか? OnCreateで、リストボックスのCreate後すぐに書きました。 また、もっと簡単にサイズだけ変更する方法はありませんか? なぜ、GetFontが失敗するのか教えてください。お願いします。 MFCです。 LOGFONT logFont; CFont* pFont; pFont = m_OutputListBoxBuf.GetFont(); pFont->GetLogFont(&logFont); logFont.lfHeight = logFont.lfHeight * 0.4; logFont.lfWidth = logFont.lfWidth * 0.4;
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (3)
- Yanch
- ベストアンサー率50% (114/225)
- redfox63
- ベストアンサー率71% (1325/1856)
- machongola
- ベストアンサー率60% (434/720)
関連するQ&A
- VC2008にてフォントの変更がうまくいきません
環境 WindowsXP VC 2008 MFC 内容 上記の環境化で、ウインドウズアプリケーションを作成しており 以下のようなプログラムをOnInitDialogでCallすると アサートが発生してしまいます 問題なのは、Unicodeでコンパイルして実行するとうまくいかず マルチバイトでコンパイルするとうまく行きます。 ご教授願います。 エディットコントロールの派生クラスにて 以下の内容を実行しています LOGFONT m_logfont; ←コンストラクタでコントロールから取得済み CFont m_font;←コンストラクタで設定済み BOOL エディットコントロールの派生クラス::SetTextFont( int width, int height) { ::_tcscpy_s(m_logfont.lfFaceName,sizeof(m_logfont.lfFaceName),_T("MS ゴシック")); m_logfont.lfHeight = height; m_logfont.lfWidth = width; // m_font.DeleteObject(); // 現在のフォントの削除 // フォントを作成 m_font.DeleteObject(); if( m_font.CreateFontIndirect(&m_logfont) ){ SetFont(&m_font); } // ウィンドウを再描画 return RedrawWindow(); }
- ベストアンサー
- 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#
- MFCのリストボックスについて
MFCをVC6.0で作成しています。現在、ダイアログボックスを作成しているのですが、ダイアログボックスの中のリストボックスについて、教えてください。 void CFileReadeDlg::GetIndex() { UpdateData(TRUE); m_nCount = m_xcList.GetCurSel(); if(m_nCount==LB_ERR) { AfxMessageBox("選択してください"); } } の関数で、リストボックス内に存在するカーソルの位置を割り出したいのですが、 この関数は、 void CFileReadeDlg::OnSelchangeDatatable() { // TODO: この位置にコントロール通知ハンドラ用のコードを追加してください GetIndex(); } のようにリストボックスの中のセルを変更した際に稼動する関数内で呼び出しています。 ですが、実際、このm_nCountには、0しか入りません。 これは、単にOnSelchangeDatatable()の関数を何処かの関数内にも呼び出していないからでしょうか。 そもそも、呼び出す必要はないかと思っていたのですが。 又、VCのヘルプに『単一選択リスト ボックスで、現在選択されている項目があれば、その項目の 0 から始まるインデックスを取得します』 とありましたが、0から始まるインデックスとは、どういうことを意味しているのでしょうか。 よろしくお願いします。
- ベストアンサー
- C・C++・C#
- コンボボックスのドロップダウンリストが表示されない
MFCでアプリを作成、アプリの画面上にコンボボックスのリソースを貼り付け、アプリ起動直後は、コンボボックスのドロップダウンリストを表示できています。 しかし、アプリ画面のサイズを変更すると、▼ボタンを押下しても、ドロップダウンリストが表示されなくなってしまいます。 アプリ画面のサイズを変更後も、コンボボックスのドロップダウンリストを表示できるようにする方法を教えてください。
- ベストアンサー
- C・C++・C#
- コンボボックス内の文字サイズ変更
エクセルでコンボボックスとリストボックスを作り ボックス内に文字を入れたのですが ボックス内の文字サイズが小さいので大きくしたいのですが 何処で変更すれば宜しいのでしょうか? ボックス自体の大きさは引っ張れば幾らでも変更できるのですが 文字サイズは何処にも見当たりません。 ご存知の方いらっしゃいましたら宜しくお願い申し上げます。
- 締切済み
- オフィス系ソフト
- チェックボックスのサイズ変更
Excel2000で、フォームのチェックボックスを使いたいのですが、これはサイズを変更することができないのでしょうか? プロパティでサイズ変更をしてもボックスとテキストの大きさは変わらず、不便な思いをしています。 もし方法があるのなら、ぜひ教えてください。 よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- コンボボックスかリストボックスの使い方
VB2008でプログラミングしています。 コードと値がセットになっているDBからデータを取得して フォームに表示させるように作成しています。 フォームに表示するのは値で、実行ボタンを押したときには コードを取得したいのですが この場合は、コンボボックスでしょうか?リストボックスでしょうか? 複数選択はできません。 選ばれたコードを元にDBを検索するプログラムが実行されます。
- 締切済み
- Visual Basic
- コンボボックスのリストに水平スクロールバーを表示したい
WinXP,SDKで開発しています。 今、最大サイズ画面の右側にあるコンボボックスのリスト部分が表示仕切れなくて困っています。 実際のコンボボックスは小さく、リスト表示の時に大きくしています。 SendDlgItemMessage(hwnd, IDC_COMBO1, CB_SETDROPPEDWIDTH, 240, 0L); このサイズで丁度リストの中身が見えるのですが、リストが画面からはみ出しています。 そこで、リストのサイズを200くらいにして(200で画面に収まります)水平スクロールを表示したいのですがうまく行きません。 ShowScrollBar() で表示出来るかと思ったのですが、渡すウィンドウハンドルが分からないのです。 おそらくリストのウィンドウハンドルだと思うのですが… このリストのウィンドウハンドルを取得する方法がよく分からないのです。 GetComboBoxInfo() という関数があるようなのですが、コンパイルエラーになってしまって先にすすみません。(定義されていない識別子) そもそも考え方を間違えているのでしょうか。 もっと簡単な方法がありますか? アドバイスをお願い致します。
- ベストアンサー
- C・C++・C#
- マウス座標からリストボックスのリストインデックスを知る方法
リストボックスをドラッグアンドドロップのドロップ先とするプログラムを作成しているのですが、どのリストボックス項目にドロップされたかを知る方法を教えてください。 ドロップ時にはマウス座標が渡されるのですが、この座標からリストインデックスをどのようにして求めたらよいか分からずにいます。 対象としているプログラムは、フォントサイズもリストボックスのサイズも固定ですので、以下のようなコーディングでしのげていますが、フォントサイズやリストボックスサイズが実行時に変えられても対応できるような、もっとスマートな方法はないでしょうか? リストインデックス = リストボックス.TopIndex + マウスY座標 \ リストボックスの項目の高さ(9ptフォントで180ぐらい?)
- ベストアンサー
- Visual Basic
- CListCtrlのcheckboxサイズ変更
WindowsCE、MFC、C++で実装しています。 CListCtrlで表を作成し、 下記の方法でチェックボックスを表示させました。 CListCtrl m_list; m_list.SetExtendedStyle((m_lstCheck.GetExtendedStyle()|LVS_EX_CHECKBOXES)); チェックボックス(画像参照)のサイズを大きくしたいのですが、 方法がわかりません。 (SetFont()関数で試してみましたが、文字にしか反映されませんでした。)
- ベストアンサー
- C・C++・C#
お礼
ありがとうございます。 流れは理解できましたが、CreateInDirectでエラーが出てしまいまい、 このメンバが無かったのでCreateFontIndirectWに書き換えましたが実行後エラーが出ました。が、思いっきり削って CFont* font = new CFont; font->CreatePointFont(80, _T("MS 明朝")); m_ListBox.SetFont(font); これでサイズとフォント体を変更できるようになりました。 納得いかないので、もうすこしLOGFONT取り込み>編集>Setを頑張ってみます。 目的は達成しました。ありがとうございました。