フォントダイアログ

ActiveBasicでのプログラミングでわからないこと、困ったことなどがあったら、ここで質問してみましょう(質問を行う場合は、過去ログやWeb上であらかじめ問題を整理するようにしましょう☆)。
返信する
メッセージ
作成者
ぶりっち

フォントダイアログ

#1 投稿記事 by ぶりっち »

メニューからフォントダイアログを表示させるソースを教えてください。

易しく、丁寧に、教えてくれるかた、大歓迎。
ゲスト

#2 投稿記事 by ゲスト »

たとえばこんな感じのメニューハンドラを作ります。
(ここではウィンドウハンドル:hMainWnd,メニューID:IDM_FONTとしています)

メニューハンドラを作るまではWin32プログラミング講座のステップ6~7の辺りを参考にしてみてください。

コード: 全て選択

Sub MainWnd_IDM_FONT_MenuClick()
	Dim cf As CHOOSEFONT
	Dim lf As LOGFONT
	With cf
		.lStructSize = Len(cf)
		.hwndOwner = hMainWnd
		.lpLogFont = VarPtr(lf)
		.Flags = CF_SCREENFONTS Or CF_NOVERTFONTS
	End With
	If ChooseFont(cf) <> FALSE Then
		Dim hfnt As HFONT
		hfnt = CreateFontIndirect(lf)
		DeleteObject(hfnt)
	End If
End Sub
フォントダイアログを呼び出しているのがChooseFont関数です。
こいつがFALSE以外を返したときはユーザーがフォントを選んでくれたと言うことです。
そのとき,cf.lpLogFontの先(今回はlf)には選ばれたフォントの情報が入っています。

この例ではとりあえずすぐにフォントを作成(CreateFontIndirect)しています。
ここでは特に用もないのですぐに削除(DeleteObject)していますけど。

しかしいつもそうするわけではなく,フォントをどう使うかによってフォントを作る時,消す時は変わります。
この例のようにすぐに作って消すのではないことのほうが多いです。
何に,そしてどのようにフォントを使うかがわからないと
いつ作っていつ消せばよいというアドバイスはできないです。
イグトランス
記事: 899
登録日時: 2005年5月31日(火) 17:59
お住まい: 東京都
連絡する:

#3 投稿記事 by イグトランス »

上は私です。うっかりログインし忘れてしまい,失礼いたしました。
ぶりっち

イグトランスさんありがとうございました。

#4 投稿記事 by ぶりっち »

ありがとうございました。

イグトランスさんのおかげで、問題が解決しました。

これからいろいろお世話になります。

私は、多田 篤志といいます。

早速ですが、申し訳ありません。

印刷するためのダイアログを表示するソースもご存知でしたらおしえていただけませんか。
ぶりっち

フォントのことで。

#5 投稿記事 by ぶりっち »

初心者ですみません。

先ほどのフォントのダイアログのことなのですが。

ダイアログの設定をそのままエディットボックスに反映するソースを教えていただけませんか。
konisi
記事: 893
登録日時: 2005年7月25日(月) 13:27
お住まい: 埼玉県東松山市
連絡する:

#6 投稿記事 by konisi »

ところで、イグトランスさんがログオフした状態から書き込みするのをよく見るんですけど・・・毎回クッキー消してるんですか?>>イグトランスさん
Website→http://web1.nazca.co.jp/himajinn13sei/top.html
ここ以外の場所では「暇人13世」というHNを主として使用。

に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
イグトランス
記事: 899
登録日時: 2005年5月31日(火) 17:59
お住まい: 東京都
連絡する:

#7 投稿記事 by イグトランス »

> ところで、イグトランスさんがログオフした状態から書き込みするのをよく見るんですけど・・・毎回クッキー消してるんですか?>>イグトランスさん

そうです。自動ログインは使っていません。
一応,普段使っているPCは自分以外の人も使うので(と言っても家族だけですが)。
これがログインして数時間経ったり,ADSLの回線がなんらかの原因で切れると
そこでログアウトされてしまうようなのですけど,それに気付かずつい書き込んでしまったというのが真相です。
Sinryow
記事: 141
登録日時: 2005年5月31日(火) 09:34
お住まい: 北海道
連絡する:

Re: フォントのことで。

#8 投稿記事 by Sinryow »

ダイアログの設定をそのままエディットボックスに反映するソースを教えていただけませんか。
コントロールのフォントを変更するには,WM_SETFONTメッセージを使います。(ABのヘルプに記載はなし。)
MSDNの記述(英語)
ちょくとさんのページより

サンプルを作ってみましたのでどうぞ。
http://www.sinryow.net/hitori/Font.lzh
' ============================================================
' Sinryow Game Home Page - http://www.sinryow.net/
' Sinryow ActiveBasic Center - http://ab.sinryow.net/
' ============================================================
イグトランス
記事: 899
登録日時: 2005年5月31日(火) 17:59
お住まい: 東京都
連絡する:

#9 投稿記事 by イグトランス »

実はこっちで回答済みです。
http://www.discoversoft.net/forum/viewtopic.php?t=729

すみません,こっちにもその旨書いておくべきでしたね。
ぶりっち

上書き保存の方法は

#10 投稿記事 by ぶりっち »

上書き保存の方法は
イグトランス
記事: 899
登録日時: 2005年5月31日(火) 17:59
お住まい: 東京都
連絡する:

#11 投稿記事 by イグトランス »

#Win32プログラミング講座の「テキストエディッタを作る」では上書き保存と名前をつけて保存がないですね。

まず上書き保存といっても新規作成した後,また名前をつけて保存を行っていない場合は名前をつけて保存のダイアログが出てくるのが一般的です。
そうでない場合,当たり前ですが上書き保存では現在開いているファイル名で保存します。

この挙動を実現するにはファイルを開いたときにファイル名をグローバル変数に取っておけばよいでしょう。
その変数の中身が空なら名前をつけて保存と言うことにします。

また実際にファイルを保存する処理は名前をつけて保存と同じですから1つの関数にします。
上書き保存のメニューIDをIDM_SAVEに,名前をつけて保存はIDM_SAVEASとします。

また保存の処理の中ではエディットボックスにEM_SETMODIFYを送っていますが,
これは保存したことをエディットボックスに伝えるためです。
試しにコメントアウトして試してみると違いが出るのではないでしょうか?

コード: 全て選択


' TODO: この位置にグローバルな変数、構造体、定数、関数を定義します。
Dim FileName As String

コード: 全て選択


Sub MainWnd_IDM_SAVE_MenuClick()
	If Len(FileName) = 0 Then
		MainWnd_IDM_SAVEAS_MenuClick() '名前をつけて保存
	Else
		FileSave(StrPtr(FiliName))
	EndIf
End Sub

Sub FileSave(pFileName As *Byte)
	Dim hFile As HANDLE
	hFile = CreateFile(pFileName, GENERIC_WRITE, 0,
		ByVal 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0)
	If hFile = INVALID_HANDLE_VALUE Then
		MessageBox(hMainWnd,"ファイルオープンに失敗しました。", "TextEditor", MB_OK or MB_ICONEXCLAMATION)
		Exit Sub
	End If

	Dim Text As String
	Dim Length As Long
	Length = GetDlgItemTextStr(hMainWnd, EditBox1, Text)
	Dim WrittenBytes As DWord
	WriteFile(hFile, StrPtr(Text), Length, VarPtr(WrittenBytes), ByVal 0)
	CloseHandle(hFile)

	SendDlgItemMessage(hMainWnd, EditBox1, EM_SETMODIFY, FALSE, 0)
End Sub
ファイルを開くときにはFileNameへファイル名を入れて置いてください。
フォントの色変更

フォントの色変更

#12 投稿記事 by フォントの色変更 »

ありがとうございました。

フォントの変更方法を知っていたら教えてください。
返信する