C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: CFont.CreateFontIndirectの戻り値


(過去ログ 121 を表示中)

[トピック内 7 記事 (1 - 7 表示)]  << 0 >>

■72509 / inTopicNo.1)  CFont.CreateFontIndirectの戻り値
  
□投稿者/ nobb (41回)-(2014/06/13(Fri) 11:13:20)

分類:[C/C++] 

開発環境:Win7、VisualStudio2013 Update2、C++(MFC)

スタティックテキストを太字にしようと思い、以下のソースを書きました。
(ただし、エラーが起こっているので設定まではできていません)

=== ソース ====
CWnd* pStatic = GetDlgItem(IDC_MSG_STATIC);
if (pStatic != NULL)
{
LOGFONT lgFont;
pStatic->GetFont()->GetLogFont(&lgFont);
lgFont.lfWeight = FW_BOLD;

CFont font;
HFONT hFont = font.CreateFontIndirect(&lgFont);
}
==== ここまで ====

CreateFontIndirect関数の成功を判定したいと考え、戻り値を受ける為にHFONTの変数を作っていますが、エラーが起こります。
エラー内容:
error C2440: '初期化中' : 'BOOL' から 'HFONT' に変換できません。

MSDNでも戻り値はHFONTになっていますし、
http://msdn.microsoft.com/ja-jp/library/cc428340.aspx

CreateFontIndirect関数の定義(マルチバイト文字なのでCreateFontIndirectAの定義)を見てもHFONTと書かれています。
なにか大きな勘違いをしているのでしょうか?
引用返信 編集キー/
■72510 / inTopicNo.2)  Re[1]: CFont.CreateFontIndirectの戻り値
□投稿者/ Hongliang (202回)-(2014/06/13(Fri) 11:21:51)
> CFont font;
> HFONT hFont = font.CreateFontIndirect(&lgFont);

> MSDNでも戻り値はHFONTになっていますし、
> http://msdn.microsoft.com/ja-jp/library/cc428340.aspx

呼び出しているのはWin32APIのCreateFontIndirect関数ではなく、
CFontクラスで定義されているCreateFontIndirectメンバ関数ですよね。
であるならば、参照すべきは当然こちらです。
http://msdn.microsoft.com/ja-jp/library/94hsa63e.aspx

引用返信 編集キー/
■72511 / inTopicNo.3)  Re[2]: CFont.CreateFontIndirectの戻り値
□投稿者/ nobb (42回)-(2014/06/13(Fri) 11:25:25)
No72510 (Hongliang さん) に返信
ご回答ありがとうございます。

> 呼び出しているのはWin32APIのCreateFontIndirect関数ではなく、
> CFontクラスで定義されているCreateFontIndirectメンバ関数ですよね。
> であるならば、参照すべきは当然こちらです。
> http://msdn.microsoft.com/ja-jp/library/94hsa63e.aspx

お恥ずかしい限りです。。。
ご指摘いただきありがとうございました。
解決済み
引用返信 編集キー/
■72512 / inTopicNo.4)  Re[1]: CFont.CreateFontIndirectの戻り値
□投稿者/ とっちゃん (232回)-(2014/06/13(Fri) 11:25:57)
とっちゃん さんの Web サイト
No72509 (nobb さん) に返信
> 開発環境:Win7、VisualStudio2013 Update2、C++(MFC)
>
> CFont font;
> HFONT hFont = font.CreateFontIndirect(&lgFont);
> }
> ==== ここまで ====
>
> CreateFontIndirect関数の成功を判定したいと考え、戻り値を受ける為にHFONTの変数を作っていますが、エラーが起こります。
> エラー内容:
> error C2440: '初期化中' : 'BOOL' から 'HFONT' に変換できません。
>
> MSDNでも戻り値はHFONTになっていますし、
> http://msdn.microsoft.com/ja-jp/library/cc428340.aspx
>
> CreateFontIndirect関数の定義(マルチバイト文字なのでCreateFontIndirectAの定義)を見てもHFONTと書かれています。
> なにか大きな勘違いをしているのでしょうか?

CFont クラスの CreateFontIndirect() メソッドを利用しているのであれば、
求めるものはこちらです。
http://msdn.microsoft.com/ja-jp/library/94hsa63e.aspx

MFCアプリだから、MFCクラスを使わなければならないというわけではありませんが、
自分が何を呼び出そうとしているかはきちんと把握しましょう。

また、IDEを利用しているのであれば、戻り値などは、マウスカーソルを上に持ってくれば見れますし
定義や宣言にジャンプすれば自分の利用しているものの詳細をすぐに調べることができます。

引用返信 編集キー/
■72513 / inTopicNo.5)  Re[2]: CFont.CreateFontIndirectの戻り値
□投稿者/ とっちゃん (233回)-(2014/06/13(Fri) 11:26:52)
とっちゃん さんの Web サイト
No72512 (とっちゃん さん) に返信

あ、URL探してる間に解決してたw
ということで、解決マークを再設定
解決済み
引用返信 編集キー/
■72514 / inTopicNo.6)  Re[2]: CFont.CreateFontIndirectの戻り値
□投稿者/ nobb (43回)-(2014/06/13(Fri) 11:39:20)
No72512 (とっちゃん さん) に返信
ご回答ありがとうございます。


> CFont クラスの CreateFontIndirect() メソッドを利用しているのであれば、
> 求めるものはこちらです。
> http://msdn.microsoft.com/ja-jp/library/94hsa63e.aspx
>
> MFCアプリだから、MFCクラスを使わなければならないというわけではありませんが、
> 自分が何を呼び出そうとしているかはきちんと把握しましょう。
以後は気を付けたいと思います。


> また、IDEを利用しているのであれば、戻り値などは、マウスカーソルを上に持ってくれば見れますし
> 定義や宣言にジャンプすれば自分の利用しているものの詳細をすぐに調べることができます。
一応、言い訳になりますが、、、
オンマウスすると「#define CreateFontIndirect CreateFontIndirectA」が表示されたので、
「定義をここへ表示」を使い、CreateFontIndirectAの定義を見たらHFONTが戻り値として書かれていました。
今考えればファイル名がWinGDI.hだったので、目的の「CFontの」Create...ではないと判断できると思うんですが・・・

#別件ですが、以前の質問は時間見つけて進めてみます。
解決済み
引用返信 編集キー/
■72515 / inTopicNo.7)  Re[3]: CFont.CreateFontIndirectの戻り値
□投稿者/ とっちゃん (234回)-(2014/06/13(Fri) 13:25:49)
とっちゃん さんの Web サイト
No72514 (nobb さん) に返信
> 一応、言い訳になりますが、、、
> オンマウスすると「#define CreateFontIndirect CreateFontIndirectA」が表示されたので、
> 「定義をここへ表示」を使い、CreateFontIndirectAの定義を見たらHFONTが戻り値として書かれていました。

あ。。。そういえば、#define があるとそっち行っちゃうんだった。。。
パラメータの位置で、パラメータヒントを出すと、正しい情報が出ます。

あれぇ?と思ったときは、そっちを使うとかなり高精度で正しい情報がヒットしますよ。
それでも、失敗する場合がありますけどね。。。


解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -