アプリ版:「スタンプのみでお礼する」機能のリリースについて

WM_CLEARなど使えないメッセージがある。

外部ソフトからハンドルを取得して EditBox を操作しようとしています。
PostMessage/SendMessage で該当 EditBox にメッセージを送るのですが

WM_PASTE, WM_CHAR などは期待通りの動きをするのですが
WM_CLEAR, WM_SETTEXT など無反応です。

PostMessage( hwnd, WM_PASTE, 0, 0 ); // Operated
PostMessage( hwnd, WM_CHAR, (int)msg[i], 0 ); // Operated

PostMessage( hwnd, WM_CLEAR, 0, 0 ); // Not Operated
PostMessage( hwnd, WM_SETTEXT, 0, (LPARAM)(LPCTSTR)"ABC" ); // Not Operated

よろしくお願いします。

A 回答 (2件)

 こんにちは。

御礼頂きました。

 一応以下を「メモ帳のクライアント(エディットボックス)」と「MFCダイアログ上のエディットボックス」(両方とも外部プロセス)に向かって実行して出来たのですが、これでは無理でしょうか。

//テキストを全て選択
::SendMessage(hEdit, EM_SETSEL, 0, -1);
::SendMessage(hEdit, WM_CLEAR, 0, 0);

 ただ、他のウィンドウから操作しているので、

 ::SetForegroundWindow(hEdit);

 を適切なタイミングで入れないと、テキスト選択範囲の表示が反映されなかったりするようです。
    • good
    • 0
この回答へのお礼

ありがとうございます。

An application sends a WM_CLEAR message to an edit control or combo box to delete (clear) the current selection, if any, from the edit control.

この current selection という部分がキーだったんですね。
入力フィールドをマーキングして WM_CLEAR を送ったらマーキング部分のみ消されました。

もちろんご指導いただいた
::SendMessage(hEdit, EM_SETSEL, 0, -1);
ですべてマーキング作業を加えると、手作業同様消えました。

Ooops^^;

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

お礼日時:2010/05/05 16:46

 こんにちは。



 WM_CLEARは送った事がないのですが、WM_SETTEXTに関しては、SendMessage()APIでなければいけません。
 恐らくWM_CLEARも同じかと。

 http://yokohama.cool.ne.jp/chokuto/urawaza/messa …
    • good
    • 0
この回答へのお礼

ありがとうございます。

質問に書いてある通り、WM_CLEAR は SendMessage でもダメなんです。

WM_SETTEXT は SendMessage でのテストを忘れてました。
WM_SETTEXT は SendMessage でOKになりました。

WM_SETTEXT で NULL を書けば同じなので回避できますが・・・

お礼日時:2010/05/05 14:08

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!