見た目はよさそうですが、中身は空です。
このツールバーには、コントロールが無いのです。
そこで、下のように作り直します。
このため、Richedit コントロールを追加します。
リッチエディットコントロールとは、Windows が提供するコントロールの1つで、通常のエディットボックスに似ていますが、文字の一部のフォントの種類や大きさ、色を変えたり、段落ごとに書式を設定したりできるものです。
RichEdit という名前のプロジェクトを、新規に作って下さい。
そして、チュートリアル3 を復習して同じ状態まで進めて、プロジェクトを保存して下さい。
上で作ったフォルダ「RichEdit」の「RichEdit.fbp」を開きます。
RichEdit.rc タブを選択して、IDD_DIALOG をクリックします。するとダイアログ・エディタが表示されます。
(ダイアログ・エディタとは、アプリを動かしたときに表示されるウインドウ(対話画面)の外観をデザインして、そこに含まれるダイアログ・コントロールを選択追加して、その他のコントロール・プロパティを設定作業するものです。)
左側の FbEdit ツールバー(アイコンボタンが並んだもの)から Richedit コントロール(右下に小さい赤いAがあるアイコン)を選択して、ダイアログ・エディタのウィンドウに置いて下さい。
そして、Go!をクリックします。
FbEdit / FreeBASIC は、エラー無しでビルドされて、何も表示されません。そうです。チュートリアル1で、これについて一度ふれています。
理由は、Richeditコントロールは、それを使う前に、初期化しなければならないのです。
まず最初に、*.bas ファイルを開いて、
#Include "RichEdit.bi" の前に、以下を加えて下さい。
#Include Once "win/richedit.bi"
そして、*.bi ファイルに、以下を追加します。
Dim Shared hRichEdDLL As HMODULE
今度は *.basファイルを開いて下さい。
最後の方に、Program start として、以下があるはずです。
上は、私たちが設置した Richeditor コントロールの、プロパティです。
私たちは、そのいくつかを、変更します。
NAMEは、そのままでかまいません。
ID を 2000 に変更します。理由は、付与された 1002 が、既に私たちのツールバーで使われているからです。
更に変更は、
AUTOSCROLL を BOTH に、
MULTILINE を TRUE に
SCROLLBAR を BOTHに。
残りは、そのままで良いでしょう。
#Define IDC_RED1 2000
次に RichEdit.bas タブを開きます。
Case IDC_CUT
SendDlgItemMessage(hWin,IDC_RED1,WM_CUT,0,0)
'
Case IDC_COPY
SendDlgItemMessage(hWin,IDC_RED1,WM_COPY,0,0)
'
Case IDC_PASTE
SendDlgItemMessage(hWin,IDC_RED1,WM_PASTE,0,0)
'
Case IDC_UNDO
SendDlgItemMessage(hWin,IDC_RED1,WM_UNDO,0,0)
'
Case IDC_REDO
SendDlgItemMessage(hWin,IDC_RED1,EM_REDO,0,0)
'
今、あなたのエディタには、いくつかの基本的特徴が既にあります。
しかし、まだまだ、長い道のりです。
あなたのエディタに、ポップアップメニュー付きの、右クリック機能が欲しいでしょう。
以下は、WndProc に設置するコードです。
Function WndProc(ByVal hWin As HWND,ByVal uMsg As UINT,ByVal wParam As WPARAM,ByVal lParam As LPARAM) As Integer
の下に、下の局所変数を追加します。
Dim pt As POINT
そして、以下を Case WM_SIZE の前に追加します。
Case WM_CONTEXTMENU
If wParam=GetDlgItem(hWin,IDC_RED1) Then
pt.x=LoWord(lParam)
pt.y=HiWord(lParam)
TrackPopupMenu(GetSubMenu(GetMenu(hWin),0),TPM_LEFTALIGN or TPM_RIGHTBUTTON,pt.x,pt.y,0,hWin,0)
EndIf
'
go! をクリックして下さい。そして、エディタの中で、右クリックしてみて下さい。
簡単ですね。
この事例のコードを、 ここ で、ダウンロードできます。