ho riscontrato un problema costruendo un menu a runtime.
Piccolo esempio: ogni volta che cliccate su test il programma dovrebbe ricreare il menu. Se controllate con il gestione attività vedrete che il numero di GDI objects utilizzati incrementa ogni volta di 20 unità senza mai liberarsi. Togliendo il riferimento all'immagine invece rimane invariato.
Visto che uso una versione di fivewin vecchia, qualcuno può provare sull'ultima se il problema persiste?
Code: Select all
#include "FiveWin.ch"
static oWnd
static oSubMenu
//----------------------------------------------------------------------------//
function Main()
DEFINE WINDOW oWnd TITLE "Test" MENU BuildMenu()
@ 2, 2 BUTTON "Test" SIZE 120, 25 OF oWnd ACTION TestMenu()
ACTIVATE WINDOW oWnd
return nil
//----------------------------------------------------------------------------//
function BuildMenu()
local oMenu, oItem, n
MENU oMenu
MENUITEM "Test"
MENU oSubMenu
FOR n := 1 TO 20
MENUITEM oItem PROMPT Str(n) ACTION ( MsgInfo("Any action!") ) FILE "c:\fwh\bitmaps\16x16\bitmap.bmp" OF oSubMenu
NEXT
ENDMENU
ENDMENU
return oMenu
//----------------------------------------------------------------------------//
function TestMenu()
local oItem, n
oSubMenu:DelItems()
FOR n := 1 TO 20
oSubMenu:Add(TMenuItem():New(Str(n),,,.T.,{||MsgInfo("Any action!")},"c:\fwh\bitmaps\16x16\bitmap.bmp",),.T.)
NEXT
return
//----------------------------------------------------------------------------//