在前面我們可以看到閃屏的圖片,已經分析了閃屏下半部的菜單顯示,它顯示的菜單資源是來自python代碼,采用這種方式來實現,就可以不修改C代碼,就可以修改菜單的組成。要實現這樣的功能,是一個復雜的過程,如果你想把這個功能集成到你的軟件裡,就需要看看本文,可以參考blender是怎麼樣實現的。當然,本文只是一個引子,介紹了大體的研究方向,如需要深入地研究,還得自己去研究blender的源碼,才能偷一些blender代碼到自己的工程裡,這樣的開發方式肯定快不少,至少比自己沒有方向地研究要快上一大捷,畢竟開源這位“老師”是一個強大的外援。
本文還是繼續前一文的python腳本wm.py,它是定義菜單的顯示內容和操作動作。前面分析怎麼樣把這個菜單進行顯示,現在這裡分析它是怎麼樣加載到內存裡,以便顯示出來。從前面分析可知,它是把菜單資源保存一個HASH表裡,然後從裡面找出來,代碼如下:
代碼裡用menutypes_hash來表示保存HASH變量,使用WM_menutype_find函數來找到對應的菜單資源。現在我們就會問怎麼樣把菜單資