ab.com コミュニティ https://www.activebasic.com/forum/ |
|
メニューの破棄 https://www.activebasic.com/forum/viewtopic.php?t=4563 |
ページ 1 / 1 |
作成者: | サンゴ [ 2014年7月18日(金) 11:36 ] |
記事の件名: | メニューの破棄 |
メニューの破棄について、いくつか質問させて頂きます、宜しくお願いします。 Caption1 Item1 Item1_1 Item1_1_1 Item2 Item2_1 Item2_1_1 caption2 Item3 Caption1 を削除したい場合、先に Item1_1 や Item1 を DestroyMenu関数で破棄 しなければいけないのでしょうか? DestroyMenu関数のトピックスの解説では、「ウィンドウにセットされている メニューは自動的に破棄されるので、この命令語を使う必要はありません。」と 在りますが、「ウィンドウにセットされているメニュー・・・」とは、どう言うことですか? |
作成者: | rikaeigo [ 2014年7月27日(日) 22:24 ] |
記事の件名: | Re: メニューの破棄 |
前半の意味がわかりませんが、少しでも参考になればと思い、書きます。 まず、本当はウィンドウを作るときはAPI関数のCreateWindowExなどを使って自分で作成するのです。 しかし、ABにはRADツールがあるので、CreateWindowEx関数をその手間はABの開発者様がやってくださっているのです。 プロジェクトのフォルダにあるMakeWindow.wbpというファイルが自動で生成されて、その中に自動でCreateWindowEx関数が書き込まれているのです。 そのCreateWindowEx関数の引数のひとつにメニューがあります。hMenu As HMENU というやつです。 それがウィンドウに関連付けられているメニューです。 そしてそのメニューはSetMenu関数で別のメニューにすりかえることができます。 しかし、ABのRADではウィンドウプロパティのメニューのところで簡単に関連付けることが出来ます。 ウィンドウを破棄するときはその関連付けられているメニューが破棄されます。 それ以外のSetMenuなどですりかえられたときの古いほうのメニューは破棄されません。 そういう孤独なメニューはDestroyMenu関数で破棄してやるのです。 |
作成者: | サンゴ [ 2014年7月28日(月) 09:58 ] |
記事の件名: | メニューの破棄 2 |
rikaeigoさん、ありがとう。 質問の順番が前後しますが、 > DestroyMenu関数のトピックスの解説では、「ウィンドウにセットされている >メニューは自動的に破棄されるので、この命令語を使う必要はありません。」と >在りますが、「ウィンドウにセットされているメニュー・・・」とは、どう言うことですか? RADツールで作成したメニューは、自動的に破棄されるのと言う事ですね。 そして、SetMenu関数で生成したハンドルは、DestroyMenu関数で破棄してやると言う事ですね。 また、CreateMenu関数やCreatePopupMenu関数で生成したハンドルも同様、破棄してやると言う事ですね。 -------------------------------------------------------------------------------------------------------------- Caption1 Item1 Item1_1 Item1_1_1 Item2 Item2_1 Item2_1_1 caption2 Item3 Caption1 をDeleteMenu関数で削除したい場合、先に Item1_1 や Item1 及び Item2_1 や Item2 を 先に DestroyMenu関数で破棄しなければいけないのでしょうか? 宜しくお願いします。 |
作成者: | たかせ [ 2014年7月28日(月) 21:07 ] |
記事の件名: | Re: メニューの破棄 |
>RADツールで作成したメニューは、自動的に破棄されるのと言う事ですね。 RADツールで作成したメニューがあればCallback関数(CallBack.wbp)のウインドウ破棄イベント該当部分に DestroyMenu関数がメニューごとに組み込まれます。結果的には自動的に破棄されることになります。 >そして、SetMenu関数で生成したハンドルは、DestroyMenu関数で破棄してやると言う事ですね。 >また、CreateMenu関数やCreatePopupMenu関数で生成したハンドルも同様、破棄してやると言う事ですね。 はいそのとおりです。 >Caption1 をDeleteMenu関数で削除したい場合、先に Item1_1 や Item1 及び Item2_1 や Item2 を >先に DestroyMenu関数で破棄しなければいけないのでしょうか? メニュー項目を削除するときは特にDestroyMenu関数で破棄しなくてもよいと思います。 よろしくお願いします。 |
作成者: | rikaeigo [ 2014年7月29日(火) 11:21 ] |
記事の件名: | Re: メニューの破棄 |
こういうイメージなんです。 変数=箱 構造体=複数の箱がくっついているモノ ウインドウも複数の箱がくっついているモノです。メニューなどと書かれた箱があります。 メニューは木のようなものです。枝分かれしたりして、葉にメニュー項目が書いてあります。 メニューハンドルは、この木の幹に付いている取っ手だと思ってください。 DestroyMenuは木全体を破棄します。取っ手を持って簡単に取れるのです。 枝や葉を切って捨てるのがDeleteMenuです。 RemoveMenuを使うと、もう一度再生可能な状態で切ることが出来ます。 現在では、破棄についてあまり神経質になる必要は無いそうです。 |
作成者: | サンゴ [ 2014年7月30日(水) 10:05 ] |
記事の件名: | メニューの破棄 3 |
たかせさん、rikaeigoさん、ありがとう。 具体的で解りやすい説明で大分理解出来ました。 DestroyMenu関数は、メニューハンドルの破棄で、DeleteMenu関数は、項目の破棄と理解しているのですが、 DeleteMenu関数で Caption1 を削除した場合、Item1 や Item1_1 のハンドルは、どうなるのでしょう? 自動的に破棄されるのですか? その辺が解りません。 Caption1 Item1 Item1_1 Item1_1_1 Item2 Item2_1 Item2_1_1 又、RemoveMenu関数は、どういった時に使用するのでしょうか? 宜しくお願いします。 |
作成者: | たかせ [ 2014年7月30日(水) 22:31 ] |
記事の件名: | Re: メニューの破棄 3 |
①DeleteMenu関数でCaption1を削除した場合、Item1 や Item1_1 のハンドルは自動的に破棄されます。 ②RemoveMenu関数でCaption1を削除した場合、Item1 や Item1_1 のハンドル破棄されません。 したがって削除したメニュー項目を復活させる必要があるときはRemoveMenu関数を使用します。 よろしくお願いします。 |
作成者: | サンゴ [ 2014年8月01日(金) 10:31 ] |
記事の件名: | メニューの破棄 4 |
たかせさん、ありがとう。 DeleteMenu関数は、賢いですね。 RemoveMenu関数は、もう一つ解らなく、「メニュー項目を復活させる」と言うのは、 どういった場面で使用するのでしょうか? 宜しくお願いします。 |
作成者: | rikaeigo [ 2014年8月01日(金) 11:17 ] |
記事の件名: | Re: メニューの破棄 |
ブラウザのお気に入りをいじってみてください。ドラッグしたりできますよね。そういうふうに使います。 |
作成者: | サンゴ [ 2014年8月06日(水) 09:20 ] |
記事の件名: | メニューの破棄5 |
rikaeigoさん、ありがとう。 カスタマイズする以外にRemoveMenu関数の使用する場面は無いのでしょうか? 宜しくお願いします。 |
ページ 1 / 1 | 全ての表示時間は UTC+09:00 です |
Powered by phpBB® Forum Software © phpBB Limited https://www.phpbb.com/ |