锘??xml version="1.0" encoding="utf-8" standalone="yes"?> function event_handler_g (self) function event_handler1 (self) my_menu_test = function my_create_menu2(menu_define_table)
local items={}
for k,v in pairs(menu_define_table) do if type(v) =='string' then if type(v) =='table' then my_main_frame=iup.frame dlg = iup.dialog dlg:showxy(iup.CENTER,iup.CENTER)
if (not iup.MainLoopLevel or iup.MainLoopLevel()==0) then 鍚庤,宸茬粡鍙戝竷鍦ㄤ簡鎴戠殑綺樿創閲?涓嶈繃瀹冧笂闈㈣鏄牴鎹椂闂磋闂潵鍒犻櫎鏃у笘瀛愮殑,鎴戞曟椂闂翠箙浜嗚繖鐐硅蹇嗗啀娌℃湁浜?/p>
]]>
涓嬮潰鐨勮繖孌典唬鐮佸彲浠ョ洿鎺ュ湪LuaForWindows鐨凷cite涓繍琛?榪欎釜鍑芥暟鐨勬槸浠跨収LuaForWindows鑷甫鏁欑▼涓殑閭d釜鍒涘緩iup鑿滃崟鐨勫嚱鏁板啓鐨?鏀硅繘鐨勪竴涓湴鏂規槸鍙互鐢ㄤ竴涓秷鎭鐞嗗洖璋冨嚱鏁版潵鍝嶅簲澶氫釜鑿滃崟欏?鐒跺悗鍐嶇粺涓dispatch,涓漢璁や負鍐欐硶涓婃瘮鐩存帴鎶婅繘琛屽疄闄呭鐞嗙殑鍑芥暟鍐欏湪鑿滃崟瀹氫箟琛ㄥ墠闈㈢編瑙備竴浜?
璇存潵鎯劎,灝辨敼鍐欑殑榪欎釜灝忓嚱鏁?涔熸槸璋冭瘯浜嗕竴澶т細鎵嶅紕濂界殑,鍒氭帴瑙ua鐨勬椂鍊?灝辨槸涓嶇啛緇冨晩...(搴熻瘽? !)
require 'cdlua'
require 'iuplua'
require 'iupluacd'
iup.Message(self.title,'dispatch message')
end
iup.Message(self.title,'event 1 dispatch message')
end
function event_handler2 (self)
iup.Message(self.title,'event 2 dispatch message')
end
function event_handler3 (self)
iup.Message(self.title,'event 3 dispatch message')
end
{
nil,'M1',{event_handler_g,'M11','M12','M13',{event_handler3,'M21','M22',},},'M2',{event_handler_g,'M22','M23',},
}
if type(v) == 'function' or type(v)=='nil' then
--~ event_handler=v
___my_library__global__event_handler=v
end
--~ local item=iup.item{title=v,action=event_handler}
local item=iup.item{title=v,action=___my_library__global__event_handler}
table.insert(items,item)
end
m1_menu_title=table.remove(items)
local item=iup.submenu {my_create_menu2(v),title=tostring(m1_menu_title.title)}
table.insert(items,item)
end
end--end of for
return iup.menu(items)
end
{
iup.canvas
{
cursor='CROSS',
scrollbar='VERTICAL',
posy=0.0,
ymax=0.8,
}
}
{
my_main_frame,
size="HALFxHALF",
title="finally I got the expected result",
menu=my_create_menu2(my_menu_test),
}
iup.MainLoop()
end
#defineWS_EX_COMPOSITED 0x02000000L
#endif/* _WIN32_WINNT >= 0x0501 */
鍑嗗鎶婅璦鍐欑殑綺劇偧涓浜?榪欐牱鑺傜渷浣滆呭拰璇昏呯殑鏃墮棿.
鐩稿叧璧勬枡:榪欓噷涓嶅啀鎽樺綍,璇瘋嚜琛屾煡鐪媘sdn
闂鎻忚堪:鍦ㄧ獥鍙d嬌鐢ㄤ簡WS_EX_COMPOSITED 椋庢牸鍚?緇樺浘灝變細鍙樺緱涓嶆甯鎬簡,鍘熷洜鏄痻p鐗規湁鐨勫弻緙撳啿緇樺浘鏈哄埗(鍙兘鍚庣畫鐗堟湰Windows娌℃湁,鍙傝?span style="background: black; color: #fefffe">WS_EX_COMPOSITED 椋庢牸鐨勫畾涔?鍦╩sdn閲?鐨刡ug(搴旇綆楁槸涓涓郴緇熺殑bug)
闂1:GetDC緋葷粯鍥続PI涓嶅彲鐢?琛ㄧ幇涓虹敾鍑烘潵鐨勫唴瀹逛細琚珛鍗沖埛鏂版帀,榪欎釜搴旇涓嶇畻bug,
瑙e喅鏂規硶:
鎶婃墍鏈夌殑緇樺浘鎿嶄綔鏀懼埌WM_ERASEBKGND鍜?/span>WM_PAINT娑堟伅澶勭悊鍑芥暟閲?榪欎釜搴旇婊¤凍澶у鏁版儏鍐典笅鐨勮姹?鐗規畩鎯呭喌鍙互浣跨敤鍔燽ool鏍囧織鐨勬柟娉曞湪榪欎袱涓嚱鏁伴噷闈㈢粯鍥?鐒跺悗鍦ㄩ渶瑕佷嬌鐢℅etDC鐨勫湴鏂硅緗産ool鏍囧織
闂2:鍗充嬌鍦ㄤ笂榪扮殑涓や釜娑堟伅handler閲岄潰,GDI+緇樺浘鎿嶄綔榪樻槸鏃犳硶姝e父宸ヤ綔,鑰屽悓涓涓秷鎭鐞嗗嚱鏁伴噷闈㈢殑GDI鍑芥暟灝卞彲浠ュ伐浣?榪欎釜闂msdn璁哄潧涓婃湁浜洪棶榪?涔熺粰鍑轟簡瑙e喅鏂規,鎴戣瘯浜嗕竴涓嬫灉鐒秓k,榪欎釜闂搴旇鏄疓DI+鍑芥暟鍐呴儴鐨勯棶棰?鍏蜂綋鍘熷洜涓嶆槑
瑙e喅鏂規硶:
浣跨敤鍐呭瓨dc緇樺浘.鍒涘緩鍐呭瓨鍏煎dc,鐒跺悗鎶婅繖涓唴瀛樺吋瀹筪c浼犵粰GDI+,緇樺浘瀹屾垚鍚?bitblt鍒板師dc
鑷蟲,xp涓嬬殑緋葷粺鍙岀紦鍐茬獥鍙e彲浠ユ甯稿伐浣滀簡,涔熶嬌鐢℅DI+鏉ョ粯鍥句簡.
鏈枃涓轟緺瀹㈣タ椋庡師鍒?璇峰皧閲嶅埆浜哄姵鍔ㄦ垚鏋?濡傛灉杞澆寮曠敤璇蜂繚鐣欎綔鑰呭嚭澶?璋㈣阿鍚堜綔.