ページ 11

追伸 表示する文字を大きくしたいのですが・・・

Posted: 2007年2月07日(水) 17:22
by hirojii
konisi様、おへんじありがとうございます。
しかし、私の能力不足で、記述いただいた内容が、さっぱりわかりません。ごめんなさい。

色々と探していると、CreatFont関数で、フォントの高さと幅を変えられるようなのですが、私は、ベーシックのプログラムしか組めない、全くの素人ですので、
どのようにプログラムをすれば良いのか、全くわかりません。

つきましては、サンプルプログラムだけでも結構ですので、お教えください。

Posted: 2007年2月07日(水) 19:52
by konisi
※これは、#N88BASICや#promptで取り込まれる標準プロンプトの場合について言っています。


まず、Include\basic\prompt.sbpの位置が分かりますか?分かるなら話が早いのですが・・・。

そのファイルの300行目くらいのところにある
_PromptSys_LogFont.lfHeight=-16
の数値を変更すれば文字のサイズが変わるし、315行目くらいにある
lstrcpy(_PromptSys_LogFont.lfFaceName,"MS ゴシック")
のダブルクォーツの中の文字列を書き換えれば表示するフォントが変わる。

標準ファイルを変更したくなければ、それのコピーを作って取り込むのが一番早いんですが・・・

それと、分からない事があって、それがそのスレの現在の話題と割と合っているならここにレスしてください。

Posted: 2007年2月07日(水) 20:13
by OverTaker
なぜか前の投稿が飛んでますね...

それはともく本題ですが、表示する文字の大きさが固定であれば、標準ライブラリに少し手を加えることで大きさを変えることができます。
Include\basic\prompt.sbpを開いてください。
おそらく、302行に下ようなコードが書かれているので、この値を変更することで大きさを変えることが可能です。

コード: 全て選択

_PromptSys_LogFont.lfHeight=-16
もし、実行中に任意の大きさに変えたいのなら、あまりお勧めすることはできません。実際やろうと思ってコードを書いたのですが、フォントサイズの変更は可能でも、その他の描画とずれてしまい、それを修正するのには、プロンプトのコードにかなり手を加えなければならないためです。
一応、そのコードを載せておきます。

コード: 全て選択

'prompt.sbp内のどこかに追記してください。
Sub SetFontSize(size As Long)
	Dim hDC As HDC
	Dim hOldFont As HFONT
	_PromptSys_LogFont.lfHeight = size
	_PromptSys_FontSize.cx = size / 2
	_PromptSys_FontSize.cy = _PromptSys_LogFont.lfHeight
	_PromptSys_hFont = CreateFontIndirect(_PromptSys_LogFont)
	hDC = GetDC(_PromptSys_hWnd)
	hOldFont = SelectObject(hDC, _PromptSys_hFont)
	DeleteObject(hOldFont)
End Sub
使い方は次の通りです。

コード: 全て選択

#N88BASIC
Dim i As Long
For i = 0 To 10
	SetFontSize(16 + i * 2)
	Print "ActiveBasic"
	Sleep(1000)
Next


追記:投稿内容が被ってしまいましたね。私もライブラリ開発メンバーの一人であるので、プロンプト環境はもう一度書き直して、さらに現在では不足している部分を補いたいと考えてはいるのですが、プロンプト環境まで手が回らないのが現状です。

Posted: 2007年2月08日(木) 10:09
by hirojii
 おはようございます。
 ご回答ありがとうございます。

 今朝から、Include\basic\prompt.sbpをエクスプローラで、探していますが、
 見当たりません。

 しかし、ActiveBasic/Includeのフォルダーはあるのですが、
 その中には、
  api_commctrl.sbp
  api_commdlg.sbp
  api_gdi.sbp
  api_mmsys.sbp
  api_msg.sbp
  api_reg.sbp
  api_shell.sbp
  api_system.sbp
  api_window.sbp
  api_windowstyles.sbp
  basic_support.sbp
  windows.sbp
 しか、ありません。

 現在、ActiveBasicは、Ver.2.62を利用しています。
 やりたいことは、RS232Cで送受信した結果を画面表示するものなのですが、
 その文字を大きく表示させたいのです。

Include\basic\prompt.sbpを変更するのが、一番良いと思うのですが、どうすれば良いでしょうか?

 ご教示の程、よろしくお願いします。