How To - 無法觸發Menu Selection(User)事件的解決方式

 一年多沒寫文章了,沒想到居然遇到一個智障的問題,這次不寫下來,下次可能又被智障到。

這次的問題是這樣:

我使用了Customize menu bar,同時透過Event的Menu Selection(User)來接收該menu觸發。

但我在某個特定的VI中無法接收觸發,連Menu的子選單都跳不出來,只會觸發Menu Activation?這個事件,而其他VI都沒問題。

這實在是太詭異了,我寫了這麼久,從來沒有遇過這種事情,求天問地了一個多小時後,可靠的夥伴終於找到問題所在了。


狀況是這樣,如果在VI Property >> Execution中的Auto Handle Menu at Launch的選項未打勾,那麼系統預設是不會幫你處理Menu的追蹤事件。這時候必須要自行在初始化的區塊加上Enable Menu Tracking的API,系統才會幫你處理Menu Selection的事件。

一般來說這個元件應該會搭配著Get Menu Selection這個API來共同使用,讓一個沒有Event的VI可以取得user操作Menu的選項。

只是在標準應用下,應該不會有人不用Event來處理Menu bar的事件吧,也因此我壓根忘了還有Auto Handle Menu at Launch這個設定會影響到Menu Selection。

如果在軟體中,有可能基於一些特定因素而啟用或是禁用Menu bar,那麼可以透過Enable Menu Tracking來開關,至於Auto Handle Menu at Launch這個選項就開著吧,省的又忘了這件事情然後繞圈圈!