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

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

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

Re[13]: CreateWindowのタイトルにフォントを指定


(過去ログ 56 を表示中)

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

■31815 / inTopicNo.1)  CreateWindowのタイトルにフォントを指定
  
□投稿者/ シープラザ (9回)-(2009/01/29(Thu) 10:16:16)

分類:[C/C++] 

よろしくお願いします。

現在、業務の為にVC(2003)を勉強しておりますが、わからない事が出てきたので質問させてください。

CreateWindowを使ってメイン画面を作成していますが、そのタイトル文字にフォントを指定する事は可能でしょうか?
TextOut等であればCreateFontでいけるのですが、InitInstanceイベントでのCreateWindowだとなかなか良い方法が見つからず困っています。

もし何か良い方法がありましたら教えてください。

引用返信 編集キー/
■31816 / inTopicNo.2)  Re[1]: CreateWindowのタイトルにフォントを指定
□投稿者/ .SHO (593回)-(2009/01/29(Thu) 10:22:28)
No31815 (シープラザ さん) に返信

CreateWindow の戻り値の HWND から HDC を取得して
SelectObjectしても変わらないようなら無理ですね。
引用返信 編集キー/
■31817 / inTopicNo.3)  Re[1]: CreateWindowのタイトルにフォントを指定
□投稿者/ επιστημη (1598回)-(2009/01/29(Thu) 10:28:06)
επιστημη さんの Web サイト
# 答じゃないです。ボヤきです。ごめんなさい

タイトルは外枠上部のアレですよね。額縁ですよね。
中に納められた絵が額縁にちょっかい出すわけですよね。
システムのLook&Feelをユーザの好みで取り替えても
そこだけ独自のフォントで描かれますね。嫌いだなそーゆーの。

...なんでそんなメンドクセーことに挑戦すんのかな。しかも初学者が。
知らなきゃいけんもっと大事なことが山ほどあるだろに...


引用返信 編集キー/
■31818 / inTopicNo.4)  Re[2]: CreateWindowのタイトルにフォントを指定
□投稿者/ シープラザ (10回)-(2009/01/29(Thu) 10:37:58)
.SHOさん
> SelectObjectしても変わらないようなら無理ですね。
やってみたんですが無理でした。。。
CreateWindowの直後でGetDCを使ってhdcを取得し、作成したHFONTの情報をSelectObjectで適用する。というやり方で正しければですが。

επιστημη さん
すいません、初心者の私がずいぶん深い所に手を出そうとしているのは百も承知なのです。
小学生が赤本読んで「これどういう意味?」と聞くようなもので、皆さんから見れば煩わしい質問ばかりかもしれません。
ただ、どうしても業務で必要な上、開発者が私しかいない以上、私の能力は関係なくなってしまうものでして。。。
今回の質問の内容は、実は海外向けのアプリケーションを作成する上でのタイトル作成の話です。
国によってフォントに依存する文字も多く、初学者の私では右も左もわからず皆さんに頼ってしまっている現状です。
不快に感じるかもしれませんがご理解いただければと思います。
引用返信 編集キー/
■31820 / inTopicNo.5)  Re[3]: CreateWindowのタイトルにフォントを指定
□投稿者/ επιστημη (1599回)-(2009/01/29(Thu) 10:45:49)
επιστημη さんの Web サイト
2009/01/29(Thu) 11:02:19 編集(投稿者)

> 今回の質問の内容は、実は海外向けのアプリケーションを作成する上でのタイトル作成の話です。
> 国によってフォントに依存する文字も多く...

だからこそ、そんな姑息な手段でいいの? て思う。
タスクマネージャ上に表示されるタイトルがバケバケになりますよ? それでいいんですか?
利用者がシステムフォントを適切に設定するのが上策ちゃいますか? てことです。

> どうしても業務で必要な上、開発者が私しかいない以上、私の能力は関係なくなってしまうものでして。。。

"やれない" と "やるべきでない" は別問題です。
この件は "やるべきでない" に属する要求で、要求元に差し戻すが吉じゃないかなぁ。

引用返信 編集キー/
■31821 / inTopicNo.6)  Re[3]: CreateWindowのタイトルにフォントを指定
□投稿者/ .SHO (594回)-(2009/01/29(Thu) 10:49:21)
No31818 (シープラザ さん) に返信

> やってみたんですが無理でした。。。

でしょうね。

> CreateWindowの直後でGetDCを使ってhdcを取得し、作成したHFONTの情報をSelectObjectで適用する。というやり方で正しければですが。

HFONT を適用した HDC でタイトルを描画しないと意味ないです。
それで、もしかしたら表示が変わるかもしれないですが、所詮タイトルは
他のウィンドウが上に重なって、再度表示された時にシステムが
書き直してしまうので、その時に元に戻ってしまいます。
引用返信 編集キー/
■31822 / inTopicNo.7)  Re[4]: CreateWindowのタイトルにフォントを指定
□投稿者/ .SHO (595回)-(2009/01/29(Thu) 10:50:55)
No31820 (επιστημη さん) に返信

> だからこそ、そんな姑息な手段でいいの? て思う。
> タスクマネージャ上に表示されるタイトルがバケバケになりますよ? それでいいんですか?
> 利用者がシステムフォントを適切に設定するのが上策ちゃいますか? てことです。

ですね。
そのアプリだけの問題じゃないですもんね。
利用者がシステムフォントを適切に設定している前提でアプリを作っていいと思うけど。
引用返信 編集キー/
■31823 / inTopicNo.8)  Re[4]: CreateWindowのタイトルにフォントを指定
□投稿者/ シープラザ (11回)-(2009/01/29(Thu) 11:02:06)
No31820 (επιστημη さん) に返信

> だからこそ、そんな姑息な手段でいいの? て思う。

姑息かもしれませんがそれが仕様として決まってしまっているので。。。

こちらの事情なので皆さんには関係ないかもしれませんが、私としても私なりに状況や方法を色々考えた末に質問しているつもりです。
上流工程に口出しできない事情・ユーザに「設定をさせる」事ができない事情・初心者の私が開発しなければならない事情。そういった仕方のない物が色々と絡んでいます。

何も考えず行き当たりばったりな勉強をし、詰まる度に何も考えず皆さんに丸投げしている訳ではありません。
いくら「そんなの知ったことではない」にしても、知らないからこそ質問の背景を無視して「姑息」という表現は使って欲しくなかったです。

これでも一応、一生懸命考えてるんですよ(笑)
引用返信 編集キー/
■31825 / inTopicNo.9)  Re[5]: CreateWindowのタイトルにフォントを指定
□投稿者/ επιστημη (1600回)-(2009/01/29(Thu) 11:09:24)
επιστημη さんの Web サイト
>>だからこそ、そんな姑息な手段でいいの? て思う。
> 姑息かもしれませんがそれが仕様として決まってしまっているので。。。

仕様決定時点では"タスクマネージャでバケバケ"なんてこと誰も気づかなかったんじゃありません?

> いくら「そんなの知ったことではない」にしても、知らないからこそ質問の背景を無視して「姑息」という表現は使って欲しくなかったです。

いや、タイトル「だけ」を別フォントに切り替えるってことが「姑息な解決」だと。
きっちりやるとものっすごくしんどいし、きっちりやれない公算大です。
で、再度:

 「たとえできたとしてもタスクマネージャそのほかモロモロで
  タイトルが"バケバケ"となりますが、それでいいんですか?」

引用返信 編集キー/
■31827 / inTopicNo.10)  Re[6]: CreateWindowのタイトルにフォントを指定
□投稿者/ シープラザ (12回)-(2009/01/29(Thu) 11:18:13)
No31825 (επιστημη さん) に返信

タイトルだけではなく、画面に表示されるフォント全てに適用しています。
言い方を変えると、例えばギリシャ語のフォームを開いた場合、表示されている文字はすべてギリシャ語でちゃんと表示されているのにタイトルだけがおかしい。という事です。
システムを構成しているフォントは言語毎に一種類で統一しています。

もっと正確に言うと、タイトルも一応表示されているけどフォントの種類を指定していないから所々で化けています。

「たとえできたとしてもタスクマネージャそのほかモロモロで
  タイトルが"バケバケ"となりますが、それでいいんですか?」

逆に、タイトルバーに表示する文字列とシステムで内部的に保有する情報を別に設定する事はできないんでしょうか?
引用返信 編集キー/
■31828 / inTopicNo.11)  Re[5]: CreateWindowのタイトルにフォントを指定
□投稿者/ HiJun (118回)-(2009/01/29(Thu) 11:21:18)
Windowsのタイトルって起動しているOSに依存しませんか?
(勘違いだったら申し訳ありません。orz )
引用返信 編集キー/
■31830 / inTopicNo.12)  Re[7]: CreateWindowのタイトルにフォントを指定
□投稿者/ επιστημη (1601回)-(2009/01/29(Thu) 11:28:37)
επιστημη さんの Web サイト
2009/01/29(Thu) 11:30:05 編集(投稿者)

> タイトルだけではなく、画面に表示されるフォント全てに適用しています。

わかりますけどぉ...
タイトルは額縁に描かれているもので、アプリケーションの"外"なんですよ。
だからそこをアプリケーションと合わせると、外の世界ではそいつ「だけ」おかしくなるですよ。

# 回りのみんな(アプリ内)が日本語喋るのに僕だけ英語じゃヘンだから日本語覚えて、
# 国際会議(アプリの外)ではひとりぼっち。必死こいて対応した結果がこれだよ!

> タイトルバーに表示する文字列とシステムで内部的に保有する情報を別に設定する事はできないんでしょうか?

んー...どうなんでしょ。僕なら
システムフォントがOKならそのまま/ダメぽならタイトルをalphabetに切り替える
かなぁ。

引用返信 編集キー/
■31831 / inTopicNo.13)  Re[6]: CreateWindowのタイトルにフォントを指定
□投稿者/ .SHO (596回)-(2009/01/29(Thu) 11:34:56)
タイトルバーも含めて、自作しちゃったらどうですか?
引用返信 編集キー/
■31832 / inTopicNo.14)  Re[6]: CreateWindowのタイトルにフォントを指定
□投稿者/ シープラザ (13回)-(2009/01/29(Thu) 11:39:56)
HiJunさん
> Windowsのタイトルって起動しているOSに依存しませんか?
OSのシステムフォントに依存しているようですね。。。
でもユーザのシステムフォントをいじる訳には。。。

επιστημηさん
> システムフォントがOKなら
文字化けするかどうかがわかるんですか?
それとも「システムのデフォルトフォントを見に行って、予め用意した対象のフォントとマッチングをかける」みたいな事でしょうか?

引用返信 編集キー/
■31833 / inTopicNo.15)  Re[7]: CreateWindowのタイトルにフォントを指定
□投稿者/ シープラザ (14回)-(2009/01/29(Thu) 11:41:04)
No31831 (.SHO さん) に返信
> タイトルバーも含めて、自作しちゃったらどうですか?
オーナードローという奴のことでしょうか?
引用返信 編集キー/
■31834 / inTopicNo.16)  Re[7]: CreateWindowのタイトルにフォントを指定
□投稿者/ επιστημη (1602回)-(2009/01/29(Thu) 11:42:47)
επιστημη さんの Web サイト
> タイトルバーも含めて、自作しちゃったらどうですか?

タイトルバーをオーナードローすっですね。
システムにはalphabetで申告しておきながらタイトルバーだけまったく別物と。
ぶっちゃけビットマップ貼り付けたっていいんだからなんでもアリアリですわね。
# "やっていいこと"かはともかくも ^^;

引用返信 編集キー/
■31835 / inTopicNo.17)  Re[7]: CreateWindowのタイトルにフォントを指定
□投稿者/ とっちゃん (369回)-(2009/01/29(Thu) 11:46:51)
とっちゃん さんの Web サイト
タイトル領域などは、非クライアント領域と呼ばれるエリアとなります。
これらの領域のいろいろについては、WM_NC で始まるメッセージがたいていサポートしています。

描画については、WM_NCPAINT などですね(ほかにもあるけど知りません)。

描画方法そのものは、HDC取得して、フォント割り当てて、文字列書いて、元に戻してと
普通のWM_PAINTとほとんど同じですが、表示エリアが全く違うというところは注意が必要です。

それと、VistaのVisualStyle(特にHomePremium以降のAero)にはたぶん対応できない気がします。

やろうとも思ったことがないのできちんとは調査していませんが、今まで独自描画にこだわっていた
アプリがことごとく止めているということを考えると出来ないとみなすのが一番確実なのかな?
という気がします。

ま、わかりませんけどね。
引用返信 編集キー/
■31836 / inTopicNo.18)  Re[8]: CreateWindowのタイトルにフォントを指定
□投稿者/ .SHO (597回)-(2009/01/29(Thu) 11:48:09)
なんでもアリアリです。
アップルがよくやってますよね。
iTunesなんかもそうじゃなかったっけ?
引用返信 編集キー/
■31838 / inTopicNo.19)  Re[7]: CreateWindowのタイトルにフォントを指定
□投稿者/ επιστημη (1603回)-(2009/01/29(Thu) 11:51:18)
επιστημη さんの Web サイト
> それとも「システムのデフォルトフォントを見に行って、予め用意した対象のフォントとマッチングをかける」みたいな事でしょうか?

そです。システムフォント調べて、これとこれ(あるいはこのフォント・ファミリー)ならOK。みたいな。

引用返信 編集キー/
■31839 / inTopicNo.20)  Re[9]: CreateWindowのタイトルにフォントを指定
 
□投稿者/ .SHO (598回)-(2009/01/29(Thu) 11:54:27)
あーでも、自作しても結局タスクバー上の表示がバケバケにはなります。
引用返信 編集キー/

次の20件>
トピック内ページ移動 / << 0 | 1 >>

管理者用

- Child Tree -