メモ帳のようなメニューについて

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

メモ帳のようなメニューについて

#1 投稿記事 by シルフィード »

メモ帳の編集メニューを見ると、文字が選択されていないときは、
「切り取り」や「コピー」などが無効化されていますが、
あれはどうやれば出来ますか?
KICO

Re: メモ帳のようなメニューについて

#2 投稿記事 by KICO »

メモ帳の編集メニューを見ると、文字が選択されていないときは、
「切り取り」や「コピー」などが無効化されていますが、
あれはどうやれば出来ますか?
EnableMenuItem関数で出来ます。
シルフィード

Re: メモ帳のようなメニューについて

#3 投稿記事 by シルフィード »

> EnableMenuItem関数で出来ます。

無効化・有効化自体のやり方はわかるんですが、
メニューバーからメニューを表示するときに文字が選択されているかどうかで
無効か有効かを変更したいんです。

言葉が足りなかったようで申し訳ありません。
よろしくおねがいします。
イグトランス
記事: 899
登録日時: 2005年5月31日(火) 17:59
お住まい: 東京都
連絡する:

Re: メモ帳のようなメニューについて

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

現在のカーソル位置はエディットボックスへEM_GETSELを送ってみればわかります。
カーソルの開始位置と終了位置が返ってくるので両者が等しければ選択状態でないと判断します。

さて問題はメニューが表示される瞬間にということです。
これはそのときにWM_INITMENUPOPUPが送られてくるのでこのときを利用します。
これはイベント一覧にはないのでMainWndProcなどで受け取る必要があります。
そのときLOWORD(wParam)で何番目のメニュー項目が表示されようとしているかがわかるので,
それが編集メニューの位置と同じであるかを調べれば良いわけです。
シルフィード

Re: メモ帳のようなメニューについて

#5 投稿記事 by シルフィード »

> 現在のカーソル位置はエディットボックスへEM_GETSELを送ってみればわかります。
> カーソルの開始位置と終了位置が返ってくるので両者が等しければ選択状態でないと判断します。
>
> さて問題はメニューが表示される瞬間にということです。
> これはそのときにWM_INITMENUPOPUPが送られてくるのでこのときを利用します。
> これはイベント一覧にはないのでMainWndProcなどで受け取る必要があります。
> そのときLOWORD(wParam)で何番目のメニュー項目が表示されようとしているかがわかるので,
> それが編集メニューの位置と同じであるかを調べれば良いわけです。

教えていただいたWM_INITMENUPOPUPで出来ました。ありがとうございます。

自分でも調べていたらWM_INITMENUというのが出てきて、これでも、同じ動作(?)をしたんですが、
WM_INITMENUPOPUとWM_INITMENUはどのように違うんでしょうか?
返信する