
この前の http://oshiete.goo.ne.jp/qa/6734007.html の続きです。
(ちょっとだけ↑の訂正します。 XPにEXEを持っていった所、低スペックが関係しているのか、
色の反転の部分が不安定でした。僕が追加したほうの条件を残し、その直後のElse
の条件内は削除してください。)
それはおいておいて、(本題)度々、質問すみません。
リストコントール特定行のフォント情報取得の方法が分かりません。
http://www.g-ishihara.com/mfc_dc_02.htm の部分の this の代わりに入れるものが分かりません。
CClientDC cdc(this); のところです。
ClientDC cdc(CFileListCreatorDlg::m_xcList.GetItem(workRow)); とでもしたいのですが。。。
フォント情報を取得したいタイミングは、リストを書き出すときです。行単位しか指定できなくてもかまいません。
GetCurrentFont()で取得できるとは、思いますが、オブジェクト名をどうやって指定するのかが分かりません。
MSDN http://msdn.microsoft.com/ja-jp/library/zdff988k … も見ましたが、良く分かりませんでした。何か調べ方にコツがあるのでしょうか。。。。
リストの変数名はm_xcListです。
どうすればいいか、教えてくださると うれしいです。
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
>GetCurrentFont()で取得できるとは、思いますが、オブジェクト名をどうやって指定するのかが分かりません。
CDC* pDC = CDC::FromHandle(lpDrawItemStruct->hDC);
CFONT *pFont = pDC->GetCurrentFont();
ではダメなんでしょうか?
この回答への補足
ご回答ありがとうございます。
CDC* pDC = CDC::FromHandle(lpDrawItemStruct->hDC);
CFont *pFont = pDC->GetCurrentFont();
//http://msdn.microsoft.com/ja-jp/library/zhcs623h …
if (NULL != pFont)
{
LOGFONT lf;
pFont->GetLogFont(&lf);
//TRACE(_T("Typeface name of font = %s\n"), lf.lfFaceName);
if(lf.lfWeight == FW_BOLD){
MessageBox(_T("太文字です"));
}
}
ご指摘のように確かに *pFontには、試してみると一個一個フォント情報が入っています。
しかし、一個セットする度に上書きされている(?)と思ってしまいます。
前回教えて頂いた方のおかげで、「lpDrawItemStruct」を手がかりに、
void CListCtrlOwner::DrawItem( LPDRAWITEMSTRUCT lpDrawItemStruct ) 【DrawItem関数内】で、
フォント情報を変えたり、LOGFONT(?)に書き出す事はできても、他のユーザー関数で
どう呼び出すかが、すごく疑問です。CFont *pFontを MylistCtrl.h Public で宣言してみましたが、
実行時エラーが起こります。(ダミーのフォントを入れる必要があるのでしょうか?)
どこで、フォント情報を格納し、どこで、取得するのか=GetCurrentFont()するのか、全く分かりません。すみません。(lpDrawItemStructが使えないので)
例えば、あるボタンを押した時に、リスト一行目 一列目のアイテムが FW_BOLDであるか(フォント情報)を得るには、どう書けばいいでしょう。。。定数以外は、適当なネーミングでかまいませんので、教えてください!
ただ、logというぐらいですから、バッファにフォント情報がストックされていると考えていいのですか?
↓後、これは、使えますでしょうか?
static HFONT CreateMyFont(int nBold)//追加 2011.05.13
{
//ディフォルトフォントをゲットする
HFONT hFontDef = (HFONT)GetStockObject(DEFAULT_GUI_FONT);
//フォントの詳細を受け取る構造体バッファ
LOGFONT lf;
//フォントハンドルから詳細を受け取る
GetObject(hFontDef, sizeof(lf), &lf);
//このメンバにフォントの太さを設定する
lf.lfWeight = nBold;
//フォントの作成
return CreateFontIndirect(&lf);
}
フォントハンドル の ハンドルという言葉がキーかと思いますが、
どうやって、指定するのかが、分かりません。
長々とすみませんm(_ _)m
ご回答ありがとうございました。
お教え頂いたことを、試行錯誤してましたが、
http://oshiete.goo.ne.jp/qa/6752231.html にて、解決しました。
質問の意図が伝わらず、ご迷惑をお掛けしましたm(_ _)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コンボボックス内の文字サイズ変更
-
VBAのフォント変更(エクセルか...
-
エディットボックスのフォント...
-
リソースエディタでスタティッ...
-
VB.NET2005 TextBox 高さ(Heig...
-
PCによって変わってしまう画面...
-
コンボボックスの一部のアイテ...
-
文字色 エクリプス
-
JakaraPOI セル内部のフォント...
-
VBにて指定した通りにExcelの列...
-
Msgboxで使用するフォントの指...
-
D3DXCreateFontとID3DXFont::Dr...
-
ドロップダウンリストのフォン...
-
グラフの交点の求め方(Excel)
-
エクセルで作った新しいウイン...
-
コントロールの書式設定で、“コ...
-
エクセルのコントロールツール...
-
「アイテムは収集されました」...
-
スピンボタンを右クリックして...
-
勝手にウィンドウが開いて止ま...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コンボボックス内の文字サイズ変更
-
VBAのフォント変更(エクセルか...
-
VB.NET2005 TextBox 高さ(Heig...
-
エディットボックスのフォント...
-
ドロップダウンリストのフォン...
-
リソースエディタでスタティッ...
-
文字色 エクリプス
-
コンボボックスの一部のアイテ...
-
JakaraPOI セル内部のフォント...
-
プロポーショナルフォントの文...
-
Macbook Word フォント色変更で...
-
VBA TEXTBOXテキストボックスの...
-
フォントごとの文字列の幅の取得
-
wordで分数打とうとするとフォ...
-
ワードでコントロールツールボ...
-
static 文字が上に張り付いて・...
-
C# のフォームデザイン&レイア...
-
リストコントロールの文字の大...
-
リストコンロールの一行だけを...
-
CSSでの大きさの単位について
おすすめ情報