テキストボックスに顔文字などを入れたい・・・

ActiveBasicでのプログラミングでわからないこと、困ったことなどがあったら、ここで質問してみましょう(質問を行う場合は、過去ログやWeb上であらかじめ問題を整理するようにしましょう☆)。
返信する
メッセージ
作成者
Bynn62
記事: 4
登録日時: 2006年10月03日(火) 17:28
お住まい: 三重県

テキストボックスに顔文字などを入れたい・・・

#1 投稿記事 by Bynn62 »

 初めてプログラミングをします。
まず、最初にここのプログラミング講座をみながら、テキストエディターを完成させました。

 ここで、顔文字機能を追加したいのですが、どうすればわかりません
そこで、SetWindowText関数を使ったのですが、白紙の状態だとうまく追加するのですが、何か文字が入っていると今まで入力した文字が消えちゃいます。どうすればいいでしょうか?


アドバイスを下さい
7
記事: 473
登録日時: 2005年5月31日(火) 18:51
お住まい: 新潟県
連絡する:

Re: テキストボックスに顔文字などを入れたい・・・

#2 投稿記事 by 7 »

> そこで、SetWindowText関数を使ったのですが、白紙の状態だとうまく追加するのですが、何か文字が入っていると今まで入力した文字が消えちゃいます。どうすればいいでしょうか?
その質問に関するトピックがかーなーりー定期的に立ってます。いつも答えてます(笑)

SetWindowText()関数は文字列を設定するもので、文字列を追加する関数ではありません。
そこで EM_REPLACESEL というメッセージを使ってちょっと強引ですがエディットボックスに文字列を追加します。

第一引数:ウィンドウのハンドル
第二引数:追加する文字列
第三引数:元に戻せるかどうか。TRUE で戻せる

コード: 全て選択

Function Edit_AddText(ByVal hWnd As HWND,ByVal lpString As LPSTR,ByVal bUndo As BOOL) As BOOL
    SendMessage(hWnd,EM_SETSEL,GetWindowTextLength(hWnd),-1)
    Edit_AddText=SendMessage(hWnd,EM_REPLACESEL,bUndo,lpString As LPARAM) As BOOL
End Function
上記のコードをグローバル領域で宣言しておき、文字列を追加したいタイミングで下記のようなコードを書きます。

コード: 全て選択

Edit_AddText(GetDlgItem(hMainWnd,EditBox1),"(^-^)",TRUE)
Bynn62
記事: 4
登録日時: 2006年10月03日(火) 17:28
お住まい: 三重県

#3 投稿記事 by Bynn62 »

なるほど・・・そのようにすればいいのですね・・・

ありがとうございました
返信する