Clipper On Line • Ver Tópico - GTWVG - ninguém entende o que tem
Página 1 de 3

GTWVG - ninguém entende o que tem

MensagemEnviado: 19 Fev 2017 14:15
por JoséQuintas
Vou pegar um resumo do tutorial do Giovanni pra começar.
http://www.elektrosoft.it/tutorials/gtwvg/gtwvg.asp


PROCEDURE Main()

   Wvt_SetGui( .T. )

   SetMode( 25, 80 )
   SetColor( "N/W" )
   CLS

   Wvt_SetTitle( "Giovanni's Window" )

   WAIT

   RETURN


Imagem

FUNCTION Main()

   LOCAL aPaint
   LOCAL cF1, cF2, cF3
   LOCAL GETLIST := {}

   Wvt_SetGui( .T. )

   SetMode( 25, 80 )
   SetColor( "N/W" )
   CLS

   Wvt_SetTitle( "Giovanni's Window" )

   SetColor( "N/W,N/GR*,,,N/W*" )

   cF1 = Space( 30 )
   cF2 = Space( 30 )
   cF3 = Space( 30 )

   aPaint := {}
   AAdd( aPaint, { NIL , { || Wvt_DrawBoxRaised( 6, 8, 14, 57 ) }   , NIL } )
   WvtSetPaint( aPaint )

   @ 08, 10 SAY "Enter field 1  " GET cF1
   @ 10, 10 SAY "Enter field 2  " GET cF2
   @ 12, 10 SAY "Enter field 3  " GET cF3

   READ

   RETURN NIL

FUNCTION Wvt_Paint()

   WvtPaintObjects()

   RETURN NIL


Imagem

PROCEDURE Main()

   LOCAL aPaint

   Wvt_SetGui( .T. )

   SetMode( 25, 80 )
   SetColor( "N/W" )
   CLS

   Wvt_SetTitle( "Giovanni's Window" )

   aPaint := {}
   AAdd( aPaint, { NIL , { || Wvt_DrawImage( 2, 12, 10, 23, "giovanni.jpg" ) }   , NIL } )
   AAdd( aPaint, { NIL , { || Wvt_DrawImage( 2, 45, 18, 67, "giovanni.jpg" ) }   , NIL } )
   WvtSetPaint( aPaint )

   @ 23, 0
   WAIT

   RETURN

FUNCTION Wvt_Paint()

   WvtPaintObjects()

   RETURN NIL


Imagem

PROCEDURE Main()

   LOCAL aPaint

   Wvt_SetGui( .T. )

   SetMode( 25, 80 )
   SetColor( "N/W" )
   CLS

   Wvt_SetTitle( "Giovanni's Window" )

   @ 02, 35 SAY "Hello World" COLOR "G/W"

   aPaint := {}
   
   AAdd( aPaint, { NIL , { || Wvt_SetBrush( 0, rgb( 32,255,100 ) ) }   , NIL } )
   AAdd( aPaint, { NIL , { || Wvt_DrawEllipse( 6, 10, 10, 18 ) }   , NIL } )
   AAdd( aPaint, { NIL , { || Wvt_SetBrush( 0, rgb( 255,255,100 ) ) }   , NIL } )
   AAdd( aPaint, { NIL , { || Wvt_DrawEllipse( 6, 30, 10, 70 ) }   , NIL } )
   WvtSetPaint( aPaint )

   @ 23, 10
   WAIT

   RETURN

FUNCTION rgb( r, g, b )

   RETURN r + ( g * 256 ) + ( b * 256 * 256 )

FUNCTION Wvt_Paint()

   WvtPaintObjects()

   RETURN NIL


Imagem

Gostaram?
Mas tenho uma má notícia... isso faz parte, mas NÃO É GTWVG, trata-se da GTWVT.

Se entrar na pasta da GTWVG, apagar todos os PRGs da GTWVG, o que sobra é isso.
Pra mim isso não tem nada a ver com GTWVG.
Mas os exemplos usam isso.

GTWVG - ninguém entende o que tem

MensagemEnviado: 19 Fev 2017 14:20
por JoséQuintas
Lá na pasta de testes, tem o demowvg.

gtwvg.png


É sério.... ISSO NÃO É GTWVG.

GTWVG - ninguém entende o que tem

MensagemEnviado: 19 Fev 2017 14:23
por JoséQuintas
Outra tela do demowvg.
É sério... ISSO NÃO É GTWVG

gtwvg2.png

GTWVG - ninguém entende o que tem

MensagemEnviado: 19 Fev 2017 14:25
por JoséQuintas
Outra tela do demowvg.
É sério... ISSO NÃO É GTWVG.

gtwvg3.png

GTWVG - ninguém entende o que tem

MensagemEnviado: 19 Fev 2017 14:36
por JoséQuintas
E cadê os exemplos de GTWVG?

Pois é... não tem.

É só olhar os fontes do demo: WVT_isto, WVT_aquilo, WVT_outro.... ISSO É WVT.

Vamos ver as funcões que começam com WVG:

hbmk2 -find wvg
gtwvg.hbc (installed):
   HB_GT_WVG()
   TBrowseWvg()
   Wvg3State()
   WvgActiveXControl()
   WvgBitmap()
   WvgCheckBox()
   WvgComboBox()
   WvgCrt()
   WvgDataRef()
   WvgDialog()
   WvgDrawingArea()
   WvgFont()
   WvgFontDialog()
   WvgHtmlViewer()
   WvgListBox()
   WvgMenu()
   WvgMenuBar()
   WvgMLE()
   WvgPartHandler()
   WvgProgressBar()
   WvgPushButton()
   WvgRadioButton()
   WvgScrollBar()
   WvgSetAppWindow()
   WvgSLE()
   WvgStatic()
   WvgStatusBar()
   WvgStatusBarPanel()
   WvgSysWindow()
   WvgTabPage()
   WvgToolBar()
   WvgToolBarButton()
   WvgTreeView()
   WvgTreeViewItem()
   WvgWindow()
   wvg_AddToolBarButton()
   wvg_AppendMenu()
   wvg_BeginMouseTracking()
   wvg_BoxGet()
   wvg_BoxGroup()
   wvg_BoxGroupRaised()
   wvg_BoxRaised()
   wvg_BoxRecessed()
   wvg_BringWindowToTop()
   wvg_Button_GetCheck()
   wvg_CallWindowProc()
   wvg_CheckDlgButton()
   wvg_CheckMenuItem()
   wvg_CheckRadioButton()
   wvg_ChooseColor()
   wvg_ChooseFont()
   wvg_ChooseFont_GetLogFont()
   wvg_ClearGUIObjects()
   wvg_ClientToScreen()
   wvg_ColorRect()
   wvg_CreateBrush()
   wvg_CreateMenu()
   wvg_CreatePopupMenu()
   wvg_CreateToolTipWindow()
   wvg_CreateWindowEx()
   wvg_DefWindowProc()
   wvg_DeleteMenu()
   wvg_DeleteObject()
   wvg_DelPaint()
   wvg_DestroyMenu()
   wvg_DestroyWindow()
   wvg_DrawImage()
   wvg_DrawMenuBar()
   wvg_DrawText()
   wvg_Ellipse()
   wvg_EnableMenuItem()
   wvg_EnableWindow()
   wvg_FillRect()
   wvg_FindWindow()
   wvg_FontCreate()
   wvg_ForceWindowToTop()
   wvg_GetClientRect()
   wvg_GetCurrentBrush()
   wvg_GetCurrentFont()
   wvg_GetCurrentObject()
   wvg_GetDC()
   wvg_GetDesktopWindow()
   wvg_GetDialogBaseUnits()
   wvg_GetDlgItem()
   wvg_GetDlgItemText()
   wvg_GetFocus()
   wvg_GetMessageText()
   wvg_GetNMHdrInfo()
   wvg_GetNMMouseInfo()
   wvg_GetNMTreeViewInfo()
   wvg_GetPaint()
   wvg_GetStockObject()
   wvg_GetWindowRect()
   wvg_gtInfoEx()
   wvg_HeightToPointSize()
   wvg_hInstance()
   wvg_HIWORD()
   wvg_Image()
   wvg_InsertMenu()
   wvg_InsertPaint()
   wvg_InvalidateRect()
   wvg_IsDlgButtonChecked()
   wvg_IsIconic()
   wvg_IsMenuItemChecked()
   wvg_IsMenuItemEnabled()
   wvg_IsWindow()
   wvg_IsZoomed()
   wvg_Label()
   wvg_LabelEx()
   wvg_LabelEx2()
   wvg_lbGetCurSel()
   wvg_lbGetText()
   wvg_lbSetCurSel()
   wvg_Line()
   wvg_LineEx()
   wvg_LoadIcon()
   wvg_LoadImage()
   wvg_LOWORD()
   wvg_MakeLParam()
   wvg_MessageBox()
   wvg_MoveWindow()
   wvg_n2p()
   wvg_Object()
   wvg_Outline()
   wvg_OutlineEx()
   wvg_Picture()
   wvg_PictureEx()
   wvg_PointSizeToHeight()
   wvg_PostMessage()
   wvg_PrepareBitmapFromFile()
   wvg_PrepareBitmapFromResourceId()
   wvg_PrepareBitmapFromResourceName()
   wvg_PurgePaint()
   wvg_Rectangle()
   wvg_RegisterClass_ByName()
   wvg_ReleaseDC()
   wvg_ReleaseWindowProcBlock()
   wvg_RoundRect()
   wvg_ScreenToClient()
   wvg_SelectObject()
   wvg_SendCBMessage()
   wvg_SendDlgItemMessage()
   wvg_SendEditControlMessage()
   wvg_SendMessage()
   wvg_SendMessageText()
   wvg_SendToolBarMessage()
   wvg_SetBkColor()
   wvg_SetBkMode()
   wvg_SetCurrentBrush()
   wvg_SetDCBrushColor()
   wvg_SetDCPenColor()
   wvg_SetDlgItemText()
   wvg_SetFocus()
   wvg_SetForegroundWindow()
   wvg_SetGObjData()
   wvg_SetGObjState()
   wvg_SetLayeredWindowAttributes()
   wvg_SetMenu()
   wvg_SetMenuItem()
   wvg_SetPaint()
   wvg_SetParent()
   wvg_SetTextColor()
   wvg_SetTimer()
   wvg_SetToolTipText()
   wvg_SetWindowLong()
   wvg_SetWindowPosAndSize()
   wvg_SetWindowPosition()
   wvg_SetWindowPosToBack()
   wvg_SetWindowPosToTop()
   wvg_SetWindowProcBlock()
   wvg_SetWindowSize()
   wvg_SetWindowText()
   wvg_SetWndProc()
   wvg_ShadedRect()
   wvg_ShowWindow()
   wvg_Sleep()
   wvg_StatusBarCreatePanel()
   wvg_StatusBarRefresh()
   wvg_StatusBarSetText()
   wvg_TextBox()
   wvg_TrackPopupMenu()
   wvg_TreeView_AddItem()
   wvg_TreeView_Expand()
   wvg_TreeView_GetSelectionInfo()
   wvg_TreeView_SelectItem()
   wvg_TreeView_SetBkColor()
   wvg_TreeView_SetLineColor()
   wvg_TreeView_SetTextColor()
   wvg_TreeView_ShowExpanded()
   wvg_UpdateWindow()


Quando falo sobre GTWVG é sobre isso, que não existe nos exemplos.
Tudo GUI... controles iguais aos da HMG, HWGUI, etc.

Não tem nada disso nos exemplos, ou está tão misturado com WVT, que nem dá pra ver.

GTWVG - ninguém entende o que tem

MensagemEnviado: 19 Fev 2017 14:42
por JoséQuintas
Esses controles WVG*, que não tem em exemplo nenhum, TODOS tem como base a wvgWindow()

METHOD WvgWindow:createControl()

   LOCAL hWnd, aPosSz

   ::nID := ::oParent:GetControlId()

   aPosSz := ::getPosAndSize( ::aPos, ::aSize )

   hWnd := wapi_CreateWindowEx( ;
      ::exStyle, ;
      ::className(), ;
      "", ;                              /* window name */
      ::style, ;
      aPosSz[ 1 ], aPosSz[ 2 ], ;
      aPosSz[ 3 ], aPosSz[ 4 ], ;
      ::oParent:hWnd, ;
      ::nID, ;                           /* hMenu       */
      NIL, ;                             /* hInstance   */
      NIL )                              /* lParam      */

   IF wapi_IsWindow( hWnd )
      ::hWnd := ::pWnd := hWnd
      ::sendMessage( WIN_WM_SETFONT, wapi_GetStockObject( WIN_DEFAULT_GUI_FONT ), 1 )
      ::hWndTT := wvg_CreateToolTipWindow( ::hWnd )
   ENDIF

   RETURN Self


É o mesmo esquema utilizado pela HMG, HWGUI, etc. usando API do Windows pra criar o controle/janela.

No final, parece que a GTWVG nem existe, porque nada WVG* é usado nos exemplos.

Quando digo que a GTWVG tem a resposta pra tudo, é baseado nesses fontes, e não nos exemplos.

Talvez não concordem, porque estão olhando os exemplos, e não os fontes.

GTWVG - ninguém entende o que tem

MensagemEnviado: 19 Fev 2017 15:01
por JoséQuintas
E agora o exemplo, de onde fiz, alterando/acrescentando algumas coisas nessa parte WVG.

gtwvg4.png


Apenas usei o que já existe pronto na GTWVG, usando herança.

CREATE CLASS TstBitmap INHERIT tstControl

   VAR ClassName  INIT "STATIC"
   VAR ObjType    INIT objTypeStatic
   VAR Style      INIT WIN_WS_CHILD + WIN_WS_GROUP + SS_BITMAP + SS_CENTERIMAGE + BS_NOTIFY
   VAR nIconBimap INIT WIN_IMAGE_BITMAP

   END CLASS

CREATE CLASS TstButton INHERIT tstControl

   VAR className INIT "BUTTON"
   VAR objType   INIT objTypePushButton
   VAR style     INIT WIN_WS_CHILD + BS_PUSHBUTTON + BS_NOTIFY + BS_FLAT

   END CLASS

CREATE CLASS TstCheckBox INHERIT tstControl

   VAR ClassName INIT "BUTTON"
   VAR objType   INIT objTypeCheckBox
   VAR Style     INIT WIN_WS_CHILD + WIN_WS_TABSTOP + BS_AUTOCHECKBOX
                      // BS_LEFTTEXT
   METHOD SetCheck( lCheck ) INLINE ::SendMessage( BM_SETCHECK, iif( lCheck, BST_CHECKED, BST_UNCHECKED ), 0 )

   END CLASS

CREATE CLASS TstCombobox INHERIT tstControl

   VAR ClassName             INIT   "COMBOBOX"
   VAR ObjType               INIT   objTypeComboBox
   VAR Style                 INIT   WIN_WS_CHILD + WIN_WS_BORDER + WIN_WS_TABSTOP + WIN_WS_GROUP + CBS_DROPDOWNLIST
   METHOD AddItem( cText )   INLINE ::SendMessage( CB_ADDSTRING, 0, cText )
   METHOD SetValue( nIndex ) INLINE ::SendMessage( CB_SETCURSEL, nIndex - 1, 0 )

   END CLASS

CREATE CLASS TstCommandLink INHERIT tstControl

   VAR ClassName           INIT   "BUTTON"
   VAR objType             INIT   objTypePushButton
   VAR Style               INIT   WIN_WS_CHILD + WIN_WS_BORDER + WIN_WS_TABSTOP + WIN_WS_GROUP + BS_COMMANDLINK
   METHOD SetNote( cText ) INLINE ::SendMessage( BCM_SETNOTE, 0, cText )

   END CLASS


Quem baixa o Harbour não consegue nem enxergar a GTWVG.
Só mesmo olhando os fontes, que fazem parte do Harbour.

Parece até que criaram a LIB pra ninguém usar.
Não dá pra entender....

Quem conhece ambiente GUI não melhora a GTWVG, porque pensa que ela é só o que tem nos exemplos.
E ninguém usa porque acha que é só aquilo que tem nos exemplos.
E está lá... um ambiente GUI pra Windows, aguardando interessados.... no momento acho que até de desenvolvedores interessados...

GTWVG - ninguém entende o que tem

MensagemEnviado: 19 Fev 2017 15:27
por JoséQuintas
Esta parte, só quem mexe com API deve entender....

Como são criados os controles WVG:

   METHOD new( oParent, oOwner, aPos, aSize, aPresParams, lVisible )


será criada uma janela Windows, e será passada a Wnd da janela pai, que contém esse controle.
Isso no Windows pode ser definido no uso de SetParent()

E tem lá todo tratamento de mensagens do Windows.

METHOD WvgWindow:SetWindowProcCallback()

   ::nOldProc := wvg_SetWindowProcBlock( ::hWnd, {| h, m, w, l | ::ControlWndProc( h, m, w, l ) } )

   RETURN Self


Tem lá o combobox...

   METHOD addItem( cItem )
   METHOD clear()                               INLINE ::sendMessage( CB_RESETCONTENT, 0, 0 )
   METHOD delItem( nIndex )                     INLINE ::sendMessage( CB_DELETESTRING, nIndex - 1, 0 )
   METHOD getItem( nIndex )                     INLINE wvg_SendCBMessage( ::hWnd, CB_GETLBTEXT, nIndex - 1 )
   METHOD insItem( nIndex, cItem )              INLINE ::sendMessage( CB_INSERTSTRING, nIndex - 1, cItem )
   METHOD setItem( nIndex, cItem )              INLINE ::sendMessage( CB_SETITEMDATA, nIndex - 1, cItem )
   METHOD setIcon( nItem, cIcon )


Com tratamentos que nem a HMG tem pra isso, que seria poder usar uma variável já com o conteúdo do combobox, sem precisar funções do Windows pra fazer isso.

O estilo de programação... igual QT.
Mas talvez uns #defines poderiam deixar igual qualquer outra coisa, até HMG.

Pois é...
Temos LIBs demais, todas faltando recurso, ao mesmo tempo todas com recurso que outras não tem.
Tava na hora de juntar tudo.
A GTWVG está lá.... esperando... pode ser a porta de entrada pra qualquer LIB GUI...
Uma LIB GUI fazendo parte do Harbour... pode ser o que falta pra unir forças....

GTWVG - ninguém entende o que tem

MensagemEnviado: 19 Fev 2017 22:57
por Claudio Soto
José es interesante tu planteo pero difícil que todas las lib lleguen a un consenso y menos aun que los programadores estén dispuestos a abandonar su forma tradicional de hacer las cosas como lo hacen cada uno con su lib. HMG tuvo mucho éxito porque adoptó un estilo de código tipo el xBase tradicional, entonces los clipperos se sentían como en casa.
Yo soy de los que piensa que si se programa en GUI hay que poder emplear todos los recursos del sistema y tomar de HB solo lo necesario, en el caso de HMG prácticamente solo usa la parte referida a base de datos y la sintaxis clipper por supuesto lo demás se implementa vía SO, hay que adaptar lo que uno necesita de HB al funcionamiento de Windows y no al reves. Para HMG el lenguaje HB es una herramienta más no un fin en sí mismo. Además sacando la MV y sus code byte, Harbour no es otra cosa que una gran librería de funciones en C que la MV ni se entera que se ejecutan, funciona como cualquier otra biblioteca escrita en C.

En cuanto a las GT no digo que sean ni buenas ni malas en realidad nunca les presté mucha atención, simplemente yo personalmente no me gusta la forma en que están implentadas por lo siguiente:
- es como programar en C pero a nivel prg, esto además del trabajo de implementar todas las funciones del API en HB crea el inconveniente del mantenimiento, por ej muchas constante y funciones varían dependiendo si es ANSI o Unicode, a nivel de c el compilador se ocupa de hacer las llamadas correctas.
- los eventos se implentan like a HB.
- hay clases que en vez de dejar el código más legible, oscurece. Ej constructores con listas de parámetros, algunos métodos like c otros like HB
- almacenamiento de datos internos del sistema a nivel HB, siempre es preferible obtener el dato a través del API que suponer que el programador nunca las cambio a través de alguna llamada directa al API
- falta de control sobre los handles obtenidos/creados, eso limita la implementación de funciones/eventos genéricos o globales, por ej si el programador crea 5 ventanas a nivel de la lib como desarrollador no tengo cómo saber ni como obtenerlos o validarlos porque todo se almacena en variables locales, en cambio en HMG toda la información de todo está en _HMG_SYSDATA. Por eso las GT funcionan sin problemas en MT

Y por ahí sigue la cosa...

Con esto no quiero decir que las lib tradicionales no presentan algunos de estos inconvenientes y que las GT no tengan sus puntos fuertes, son simplemente visiones diferente de lo mismo, está en cada uno adoptar aquella lib que le resulte más útil o más cómoda.

GTWVG - ninguém entende o que tem

MensagemEnviado: 20 Fev 2017 20:18
por JoséQuintas
Tudo que se trata de LIB gráfica no Harbour acaba sendo um trabalho solitário.

En cuanto a las GT


Pois é.... é isso que confunde da GTWVG.
Existe uma janela na GTWVG que é a tela GT, praticamente a mesma da GTWVT.
E existe toda parte GUI, que tem janelas.
A única coisa diferente da HMG, é que a janela "pai" geralmente é a tela GT, onde o texto tem prioridade.
Basta que a janela principal seja uma Dialog, e pronto, temos GUI.
O que venho dizendo é o seguinte: a GTWVG TEM a resposta, não que ela seja a resposta.

Deixemos ela lá quieta, e vamos ver o que pode ser feito com HMG.

Por exemplo:

Temos lá na HMG 47 usos de CreateWindowEx(), todos com tratamento pra Unicode. ( #include "SET_COMPILE_HMG_UNICODE.ch", #include "HMG_UNICODE.h" )

O que impediria de criar uma única HMG_CreateWindowEx(), com tratamento pra unicode, e todas as outras chamadas pra ela, sem precisar tratamento nenhum? Ou até usar a wapi_CreateWindowEx()

Ok, programando em C a função já está lá disponível, é só usar.
Mas criando uma única, também estará lá, disponível pra PRG, vai eliminar diversos fontes em C.
Acho que isso seria uma pequena amostra de que talvez o uso de C esteja multiplicando mais uso de C.
Esse tipo de modificação não altera em nada o funcionamento da HMG, apenas reduz fontes em C.

Não que isso sirva pra todas as necessidades, mas seria um começo.
O tempo vai dizer o que será possível fazer.

Quanto aos #defines necessários, caso seja PRG, já fazem parte do Harbour dentro de hbwin ou gtwvg.

Quem sabe a HMG não possa até fazer parte do Harbour oficial após ajustes de fontes?
Com os fontes atuais... com certeza não.

GTWVG - ninguém entende o que tem

MensagemEnviado: 10 Fev 2018 09:49
por microvolution
JoséQuintas escreveu:no momento acho que até de desenvolvedores interessados...
"euzinho" sou um deles...
o que me trava, é a falta de peças no "quebra-cabeças" interno de "minha caixola".
Se talvez, tivesse um tutorial ou um livro on line como é o caso de nossos livros que tínhamos do clipper, com certeza eu faria muita coisa com a GTWVG.
Aliás, estou usando a IDE/HMG.3.4.4 para compilar um aplicativo meu, mas, com uso da GTWVG. Estou tentando usar algo gráfico 100% gui da HMG num módulo separado, MAS TÁ DIFÍCIL compreensão.

Bom, se o JQuintas é o fera de HARBOUR, CLASSES, GTWVG, não consegue entender, quanto mais a mim...
mas, uma coisa me intriga:
JoséQuintas escreveu:Existe uma janela na GTWVG que é a tela GT, praticamente a mesma da GTWVT.

Afinal, GTWVG e GTWVT são a mesma coisa?
na HMG a GTWVG vem nativa na pasta CONTRIBS mas, não tem nada de GTWVW e GTWVT, pois não vi as pastas EXTRAS
Explica-me uma coisa melhor JQUIntas:
você tá querendo dizer que a GTWVG tem comandos/funções com nomes idênticos à da GTWVT?

GTWVG - ninguém entende o que tem

MensagemEnviado: 10 Fev 2018 10:19
por JoséQuintas
WVG acabou sendo criada encima da WVT, e acabam praticamente sendo a mesma LIB, e se misturando.
Por isso, a maioria dos exemplos de WVG tem coisa de WVT.

GTWVW tem no XHarbour, fica numa pasta de contribs.
GTWVW no Harbour 3.2 está em EXTRAS, não faz parte do Harbour 3.2 oficial.
GTWVW no Harbour 3.4 sofreu atualizações, e passou a fazer parte do Harbour, em CONTRIBS

GTWVG tem no XHarbour, fica numa pasta de contribs, não tem NADA de GUI/Windows.
No Harbour 3.2 e 3.4, fica em CONTRIBS.

No XHarbour há uma mistura em CONTRIBS, coisas que podem ou não fazer parte do XHarbour.
No Harbour 3.2 e 3.4, CONTRIBS é considerada parte do Harbour, e é atualizada junto com o Harbour.
EXTRAS são considerados testes, até vém com os fontes do Harbour, mas não são considerados como parte do Harbour.

Então, no Harbour 3.2, GTWVW apenas existe pra se alguém precisar, mas oficialmente nele não existiria suporte.

GTWVG - ninguém entende o que tem

MensagemEnviado: 10 Fev 2018 10:58
por microvolution
quero muito continuar usando a GTWVG, pois foi a primeira gráfica que você me mostrou que é em formato xBase. Mais simples de usar que HMG/HWG, etc...
Mas, ao mesmo tempo, se torna difícil, pois os exemplos são poucos e parece que não há interesse das pessoas em usá-la, mesmo sendo atualizada recentemente pelo Viktor no final de 2017.

Vamos lá a mais dúvidas:
pra que servem e como funcionam as funções abaixo:
WvgFont()
WvgFontDialog()
wvg_FontCreate()


Não consigo encontrar - nem o seu harbourdoc, manual, tutorial, exemplos, explicações... então, a gente fica perdido.
Quero muito continuar com a GTWVG - me identifico muito com ela, mas, nem no gitHub do Viktor tem DOCs, exemplos, ou tutoriais para nos explicar.

Parece que foi abandonada de vez, e, só você, eu, e o Viktor é quem gostamos de usá-la.
Agora, eu ficar incomodando o Viktor só com esses detalhes, jamé!
rsrs

GTWVG - ninguém entende o que tem

MensagemEnviado: 10 Fev 2018 11:26
por microvolution
ah!
esqueci de mencionar estas também:
wvg_ChooseFont()
wvg_ChooseFont_GetLogFont()

eis as perguntas (ONCOTÔ, DONCOVIN, PRONCOVÔ) abaixo:
- pra que servem?
- qual sintaxe?
- uso-as isoladas ou em conjunto?
- quais parâmetros?
- onde vejo mais sobre elas?
rsrs

GTWVG - ninguém entende o que tem

MensagemEnviado: 10 Fev 2018 11:31
por microvolution
quer mais pra ficar com mais dúvida e "descompreensão" ainda mais e mais (oncotô, doncovin e proncotô):
wvt_ChooseFont

a função acima, segundo o DEMOWVG pertence à CONTRIB\GTWVG presentes no HARBOUR 3.4 do Viktor e também dentro da CONTRIB\GTWVG da HMG 3.4.4
Até aí batem a informação.
- Se eu compilar via IDE/HMG a função acima de nada serve (não altera os fontes como desejo);
- se eu compilar fora da HMG usando um .BAT usando o HBMK2 as fontes são alteradas.

Mas, afinal, a wvt_ChooseFont que tem na GTWVG não tem nada?
Quando uso o puro harbour na verdade o compilador está entendendo que vai usar a wvt_ChooseFont é da LIB GTWVT?

E, agora José?

GTWVG - ninguém entende o que tem

MensagemEnviado: 10 Fev 2018 11:33
por microvolution
ademais se o próprio autor do tópico disse
"gtwvg - ninguém entende o que tem"
quanto mais "euzinho" aqui, como vou entender?

GTWVG - ninguém entende o que tem

MensagemEnviado: 10 Fev 2018 19:45
por JoséQuintas
Choosefont, pelo nome deve ser pra escolher o fonte.
Vai deixar o usuário escolher algum fonte?
Talvez dê pra olhar o fonte dessa função, se for em Harbour só olhar os parâmetros, se for em C talvez tenha uma pequena explicação.

A minha dúvida é pra quer precisaria usar essa função..... rs

GTWVG - ninguém entende o que tem

MensagemEnviado: 10 Fev 2018 19:47
por JoséQuintas
E dependendo da LIB que for usar.....

hbmk2 -find choose

gtwvg.hbc (installed):
wvg_ChooseColor()
wvg_ChooseFont()
wvg_ChooseFont_GetLogFont()
wvt_ChooseColor()
wvt_ChooseFont()

gtwvw.hbc (installed):
wvw_ChooseColor()
wvw_ChooseFont()

hbwin.hbc (installed):
win_ChooseColor()

addons\hmg3\hmg3_core.hbc (not installed):
choosecolor()
choosefont()

addons\hmge\hmge_core.hbc (not installed):
choosecolor()
choosefont()

addons\oohg\oohg_core.hbc (not installed):
choosecolor()
choosefont()

addons\hwgui\hwgui_core.hbc (not installed):
hwg_choosecolor()

GTWVG - ninguém entende o que tem

MensagemEnviado: 10 Fev 2018 19:51
por JoséQuintas
Não vi a choosefont, mas a choosecolor chama o diálogo do Windows de escolher cores.
O choosecolor "da GTWVG", que na verdade é do Windows....

choosecolor.png


Faço uso do ChooseColor neste fonte:

https://github.com/JoseQuintas/JoseQuintas/blob/master/source/psetupcolor.prg

GTWVG - ninguém entende o que tem

MensagemEnviado: 10 Fev 2018 20:08
por JoséQuintas
Esta parte aqui é exclusiva do XHarbour do José, porque o pessoal do XHarbour não usa HBMK2:
(Só fiz teste pra compilar OOHG no XHarbour, então é a única que acabou com help criado)

d:\XHARBOUR\bin>hbmk2 -find choose

gtwvg.hbc (not installed):
win_choosecolor()
wvt_choosecolor()
wvt_choosefont()

addons\contrib\gtwvw.hbc (not installed):
wvw_choosecolor()
wvw_choosefont()

oohg.hbc (not installed):
choosecolor()
choosefont()


Os neguinhos esquecem: Harbour e XHarbour andaram juntos, as ferramentas do Harbour estão prontas para uso no XHarbour.

GTWVG - ninguém entende o que tem

MensagemEnviado: 10 Fev 2018 23:07
por microvolution
JoséQuintas escreveu:hbmk2 -find choose

gtwvg.hbc (installed):
wvg_ChooseColor()
wvg_ChooseFont()
wvg_ChooseFont_GetLogFont()
wvt_ChooseColor()
wvt_ChooseFont()

gtwvw.hbc (installed):
wvw_ChooseColor()
wvw_ChooseFont()

hbwin.hbc (installed):
win_ChooseColor()
testei o HBMK2 -FIND CHOOSE e só apareceu até a última linha: HBWIN.HBC
veja o resultado:
Microsoft Windows [versão 10.0.16299.192]
(c) 2017 Microsoft Corporation. Todos os direitos reservados.
C:\Users\WdePaula>hbmk2 -find choose
gtwvg.hbc (instalado):
wvg_ChooseColor()
wvg_ChooseFont()
wvg_ChooseFont_GetLogFont()
wvt_ChooseColor()
wvt_ChooseFont()
gtwvw.hbc (instalado):
wvw_ChooseColor()
wvw_ChooseFont()
hbwin.hbc (instalado):
win_ChooseColor()

JoséQuintas escreveu:Vai deixar o usuário escolher algum fonte?

sim, percebi que na GTWVG, além de poder trabalhar CONSOLE 100% os fontes podem ser alterados. Só que na HMG não estou conseguindo fazer funcionar.
JoséQuintas escreveu:Talvez dê pra olhar o fonte dessa função, se for em Harbour só olhar os parâmetros, se for em C talvez tenha uma pequena explicação.
por favor, me ensina a achar os fontes de uma função pra eu poder me interagir melhor quando não houver um tutorial, manual, guia - como é o caso dessas funções, que não tem nem no seu HARBOURDOC rsrs
JoséQuintas escreveu:Não vi a choosefont
essa função pra mim é muito útil, pois a gente consegue sair da fonte padrão (CONSOLAS), e pode ir para a VISUALIB ou quaisquer outras fontes instaladas no sistema. rsrrs
JoséQuintas escreveu:choosecolor chama o diálogo do Windows de escolher cores.
vi no exemplo da GTWVG da pasta CONTRIBs e achei interessante, mas, por hora ainda não uso, mas, quero arrumar um jeito de o usuário poder trocar a COR DA FONTE num futuro bem próximo. rsrsrs
JoséQuintas escreveu:Os neguinhos esquecem: Harbour e XHarbour andaram juntos, as ferramentas do Harbour estão prontas para uso no XHarbour.
como assim?

GTWVG - ninguém entende o que tem

MensagemEnviado: 11 Fev 2018 01:26
por JoséQuintas
Foi só comentário, XHarbour não tem HBMK2.

Sobre fonte... é só trocar o fonte, não precisa que o usuário escolha, porque ele pode escolher um que não serve.
Por exemplo, Arial, que é o mais comum, não serve.

GTWVG - ninguém entende o que tem

MensagemEnviado: 11 Fev 2018 10:41
por microvolution
JoséQuintas escreveu: porque ele pode escolher um que não serve.
enfim, consegui fazer funcionar o wvt_choosefont() de dentro da HMG 3.4.4 em conjunto com a GWTWVG... ficou legal...
mas, se escolher uma fonte errada, os textos ficam estranhos.
Enfim, o objetivo foi alcançado.

GTWVG - ninguém entende o que tem

MensagemEnviado: 11 Fev 2018 13:34
por microvolution
JoséQuintas escreveu:Foi só comentário, XHarbour não tem HBMK2.

JQuintas escreveu: No final, parece que a GTWVG nem existe, porque nada WVG* é usado nos exemplos.

Prezado Quintas, no início deste tópico vc cita o giovanni Di Maria...
...aí "euzinho" pesquisando aqui no fórum sobre outro assunto: "HARBOUR PARA ANDROID", vi que o projeto tá parado...
e aí, num é que o Di Maria fez uma pergunta sobre o significado de cada LIB e quem respondeu?
vejam aí pra cada um de nós desfrutarmos dessa maravilha de resposta!

3ª - diretório interno 
gtalleg - GT para Allegro GUI backend
gtwvg - GTWVG (uma extensão do GTWVT, só tem a ganhar)
hbamf - manipulação de formato de arquivo AMF
hbblat - Blat invólucro (e-mailing, só tem a ganhar)
hbblink - compatibilidade Blinker
hbbz2 - invólucro bz2 (compressão)
hbcairo - Cairo capa (imagem)
compatibilidade HBCOMM (xhb.com, MiniGUI) - hbcomm
HBCT - Ferramentas Clipper [compatibilidade]
hbcups - Cups invólucro (* nix impressão)
hbcurl - Wrapper libcurl (comunicação IP)
hbdroid - funções específicas para Android (fase muito precoce)
hbexpat - libexpat invólucro (parser XML)
hbfbird - Wrapper Firebird (SQL)
hbfimage - Wrapper FreeImage (imagem)
hbformat - código-fonte do porto formatador
hbfoxpro - compatibilidade FoxPro
hbfship - compatibilidade FlagShip
hbgd - Wrapper libgd (imagem)
HBGS - Ghostscript capa (imagem)
hbgt - biblioteca GT
envoltório libharu (PDF) - hbhpdf
hbhttpd - HTTP lib servidor
hblzf - LZF invólucro (compressão)
hbmagic - Wrapper libmagic (identificação arquivo, * nix única)
hbmemio - arquivo I MEMIO / O para RDDS
hbmisc - coleção função Diversos
minilzo invólucro (compressão) - hbmlzo
hbmxml - Wrapper minixml (parser XML / gerador)
hbmysql - Wrapper MySQL (SQL)
minizip invólucro (compressão) - hbmzip
hbnetio - arquivo HBNETIO I / O para RDDS
hbnf - NanFor lib [compatibilidade]
hbodbc - wrapper ODBC (SQL / db)
hboslib - OSLib (de Dave Pearson) compatibilidade
hbpgsql - PostgreSQL invólucro (SQL)
hbrun - ferramenta hbrun (o mesmo que hbmk2, mas configurado de forma diferente)
hbsms - funções envio de SMS
hbsqlit3 - Wrapper Sqlite3 (SQL)
hbssl - Wrapper OpenSSL (criptografia)
hbtinymt - TinyMT, Pseudo Gerador Aleatório invólucro
hbtip - TCP comm / específicas do IP. funções de protocolo
hbtpathy - Telepata (y) compatibilidade
hbunix - funções específicas Unix
funções específicas do Windows - hbwin
hbxdiff - libxdiff invólucro (diffing)
compatibilidade Xbase ++ - hbxpp
hbzebra - Barcode criação de funções
hbziparc - compatibilidade HBZIPARC (compressão)
rddads - ADS RDD
Filtro RDD Bitmap - rddbm
rddsql - RDDSQL núcleo RDD
sddfb - RDDSQL Firebird backend
sddmy - RDDSQL MySQL backend
sddoci - RDDSQL OCILib (Oracle) backend
sddodbc - backend ODBC RDDSQL
sddpg - RDDSQL PostgreSQL backend
sddsqlt3 - backend RDDSQL Sqlite3
XHB - compatibilidade xHarbour

- Viktor

Só por causa que o VIKTOR disse que a GTWVG é nada mais uma extensão da GTWVW é que resolvi colocar aqui neste post

Bom, o link onde estão estas postagens é:
https://groups.google.com/forum/#!searchin/harbour-users/hbdroid%7Csort:date/harbour-users/kClNxSU2h7U/T55P-5mmD2oJ
Abraços!!!

GTWVG - ninguém entende o que tem

MensagemEnviado: 11 Fev 2018 13:39
por microvolution
ah! sem querer estou cada vez mais me animando com a GTWVG que já uso...
só quero que as 2 funcione em conjunto (GTWVG(W) e HMG) para fazer alterações e migrações nos meus aplicativos do seguinte raciocínio:
- 100% CONSOLE mas com aparência de gráfico (janela com minimizar, restaurar, maximizar e fechar) → isso já faço
- CONSOLE x GUI (GTWVG) isso já faço com alguns botões e telas modais;
- CONSOLE mas usando a (HMG) isso já faço...
- 100% GUI com a GTWVG... isso só faço num único módulo à parte do meu sistema;
- 100% GUI com a HMG... isso estou começando com um módulo incluso no meu sistema.

Enfim, quero ir migrando de CONSOLE para GRÁFICO, aos poucos e isso estou conseguindo com a união do HARBOUR DA HMG 3.4.4 (versão 3.2) usando em conjunto a LIB GTWVG.

Abraços!

GTWVG - ninguém entende o que tem

MensagemEnviado: 11 Fev 2018 13:44
por microvolution
por falar de compatibilidade...
microvolution escreveu:XHB - compatibilidade xHarbour

penso que todas as LIBs gráficas: GTWVW, GTWVG, HWGUI, HMG, HMGE, OOHG, etc... deve ter mais algumas? não sei...
terei uma lib em cada uma que pudesse ser como a XHB acima explicada pelo VIKTOR ZAKATS que aceitasse as funções/comandos de todas elas em todas elas...
abraçs!

GTWVG - ninguém entende o que tem

MensagemEnviado: 12 Fev 2018 23:06
por microvolution
fazendo testes aqui altas horas da madruga...
HB_GTINFO( HB_GTI_WINTITLE , DESC_SIST)
WvT_SetTITLE(DESC_SIST)

Qualquer uma das linhas acima, fazem a mesma coisa. Tudo bem, uma é da GTWVG e outra da outra mesmo.
Já as linhas abaixo fazem a mesma coisa e são da mesma lib GTWVG:
AAdd( aPaint, { NIL , { || wvg_BoxRaised( 01, 1, 04, 77 ) }   , NIL } )
wvg_SetPaint( aPaint )      
AAdd( aPaint, { NIL , { || Wvt_DrawBoxRaised( 06, 1, 20, 77 ) }   , NIL } )
WvtSetPaint( aPaint)

pensando bem... não dá pra entender mesmo:

Por que 2 funções que fazem a mesma coisa. WVTSEPAINT e WVG_SETPAINT?
Essa agora faz a mesma coisa: Wvt_DrawBoxRaised e wvg_BoxRaised.

Bom, do código do Di Maria postado no início deste tópico, dá pra enxugar... ficando somente assim:
Local aPaint :={}
AAdd( aPaint, { NIL , { || wvg_BoxRaised( 01, 1, 04, 77 ) }   , NIL } )
wvg_SetPaint( aPaint )      
AAdd( aPaint, { NIL , { || Wvt_DrawBoxRaised( 06, 1, 20, 77 ) }   , NIL } )
WvtSetPaint( aPaint )      

Agora é só acrescentar os @ SAY/GET e acrescentar no final do PRG a função que não sei o "porquê" dela:
FUNCTION Wvt_Paint()
   WvtPaintObjects()
RETURN NIL

Só isso, já aparece alguma coisa gráfica.
PS: Quem fez a LIB (se é o Viktor ou Pritbal, ou quem quer que seja), já que tomou o tempo de criar, testar, etc, etc, que foi a parte mais difícil... poderia ter feito um tutorial de cada comando ou função pra que a gente não perguntasse tanto...
Um leigo como eu, se além dos exemplos, tivesse o tutorial como os antigos do CLIPPER, aliás, tenho o meu aqui...
"deixa ver o nome", nem me lembro dele mais:
ah sim!
CLIPPER Versão Summer 87 vol.1 Antônio Geraldo da Rocha Vidal:
- comandos
- funções
- compilação
- execução

Enfim, se tivesse algo assim, eu mesmo, diminuiria em 90% as minhas perguntas, e, poderia ajudar em muito mais a este tão conceituado fórum.
Abraços!
boa madruga!

GTWVG - ninguém entende o que tem

MensagemEnviado: 12 Fev 2018 23:13
por microvolution
Esqueci de mencionar:
wvg_BoxRaised()

Com a função acima, faz a mesma coisa, só que ao encerrar ela permanece na tela. Ou seja, tem que descobrir outra função que a exclui... um tipo de : Destroy()
Não sei se vale a pena. pois o negócio é enxugar o código e facilitar a "tabuada".
Ah!
vejam, minha tela com os recursos mencionados na postagem anterior↓:
18-0213 - imagem de uma tela com boxRaised.png
tela CONSOLE com aparência e BOX desenhado nela.

Bom, tudo isso feito da seguinte forma:
- uso a IDE/HMG 3.4.4 pra editar e compilar os fontes;
- tem módulo que está 100% CONSOLE;
- tem módulo que já uso misto de CONSOLE com botões;
- tem módulo que já uso WVG_CRT() - é o caso da tela acima;
- tô desenvolvendo um módulo novo 100% gui usando os recursos de FORM_WINDOW da HMG. O detalhe, não trava e volta perfeitamente ao MENU anterior (sem uso de programas externos - tudo num mesmo .EXE);
- tudo compilado diretamente da HMG.

Bom, agora, tá ficando do jeito que eu preciso pra tentar recuperar parte do espaço no mercado, pois:
- o aplicativo já possui funcionalidades de mouse, botões, recursos gráficos.
- os novos módulos já posso fazer na HMG, que é a LIB em conjunto com a WVG que escolhi para migrar.
boa madruga!
Enquanto uns pulam carvanal, euzinho, "pulo o carnaval"... ufa!
tô desde de manhã e já virando a madruga... vou "drumi"!

00:34h

GTWVG - ninguém entende o que tem

MensagemEnviado: 28 Fev 2019 00:49
por microvolution
nobres professores.
Coincidência... agora já são 00:43h
microvolution escreveu:00:34h

Bom, estou aqui lutando pra entender os fontes da GTWVG, que como disse o nobre professor JoséQuintas, lá nas primeiras postagens deste tópico:
"não existe exemplos", só "existem os fontes".

Estou testando substituir meu MENU 100% console para o WvgMenu():new
vamos ver no que consigo fazer sem exemplos. Se com exemplos já tá difícil rsrsrsrs
boa madrugada!

GTWVG - ninguém entende o que tem

MensagemEnviado: 26 Dez 2020 00:11
por microvolution
Pois é....como disse no outro tópico, os conflitos entre as Libs WVG e HMG, são tantos, q parei a migração de console pra Gui, pois, ninguém entende a WVG.
tem funções WVG mas não se sabe usar.... E existem outras q nem sei se existem...

GTWVG - ninguém entende o que tem

MensagemEnviado: 26 Dez 2020 05:46
por JoséQuintas
Depois de 3 anos, finalmente consegui compilar e executar um exemplo da HMG.
É a única LIB, que compilada com mingw, precisa copiar uma DLL pra pasta do EXE.

Quanto à GTWVG, já falamos disso.
Mas como está usando a wvgCrt, tem opção melhor ainda.

Vamos lá, novamente, de novo:

Em um programa Windows, TUDO é janela, não existe SAY/GET, @ TO, etc.
CADA frase de texto é uma janela, CADA ícone é uma janela, etc.
Ao trabalhar com esses componentes Windows, o ideal é justamente trabalhar com CRT, assim ficam "anexados" nas janelas.

A GTWVG tem isso, mas... também tem o "plano B", que é esse da rotina Paint.
É criado um array com todos os comandos pra fazer todos os desenhos, e eles ficam sendo redesenhados sempre, SEMPRE MESMO.
Pros desenhos não aparecerem mais, é limpar esse array de comandos, parando de repintar, os desenhos somem.

Pode ser interessante usar um tipo ou outro, depende de acostumar com "a coisa".
Mas usando CRT vai facilitar, porque passam a existir várias janelas, e ao invés de usar a Paint() geral, cada CRT pode ter sua própria rotina Paint(), ou seus controles Windows.

GTWVG - ninguém entende o que tem

MensagemEnviado: 26 Dez 2020 10:14
por JoséQuintas
Uma coisa é certa: o resize automático da GTWVG é imbatível.

GTWVG - ninguém entende o que tem

MensagemEnviado: 27 Dez 2020 21:58
por microvolution
JoséQuintas escreveu:É a única LIB, que compilada com mingw, precisa copiar uma DLL pra pasta do EXE.
nobre, será que o problema é só contigo ou com outros? no meu computador, estou com a HMG 3.5 recém instalada e em nenhuma das versões, nunca vi essa DLL ou precisar dela.

GTWVG - ninguém entende o que tem

MensagemEnviado: 27 Dez 2020 22:09
por Claudio Soto
microvolution escreveu:
JoséQuintas escreveu:É a única LIB, que compilada com mingw, precisa copiar uma DLL pra pasta do EXE.
nobre, será que o problema é só contigo ou com outros? no meu computador, estou com a HMG 3.5 recém instalada e em nenhuma das versões, nunca vi essa DLL ou precisar dela.


No, si compilas con el build.bat de hmg como viene configurado por defecto no necesitas ninguna dll.
El problema que relata José es porque el utiliza su propia configuración del hbmk2 y no linka estaticamente la lib como se hace en la configuración por defecto de hmg.

GTWVG - ninguém entende o que tem

MensagemEnviado: 28 Dez 2020 00:15
por JoséQuintas
Claudio Soto escreveu:El problema que relata José es porque el utiliza su propia configuración del hbmk2 y no linka estaticamente la lib como se hace en la configuración por defecto de hmg.


Alterei pra fazer isso, mas não adiantou.
Lembrando que só acontece com a versão POSIX, com a outra nem precisa NADA de parâmetro.

Coloquei isto aqui sim:
rem -ldflag="-pthread  -static-libgcc  -static-libstdc++  -static -lpthread"  --> for gcc.exe link pthread library in static mode
rem -trace --> for show execute command line

HBMK2 -ldflag="-pthread  -static-libgcc  -static-libstdc++  -static -lpthread" -mt -o"%~n1" %HMGPATH%\hmg32.hbc %gtdrivers% %debug% -q %1 %2 %3 %4 %5 %6 %7 %8 >hbmk.log 2>&1


Mesmo que funcionasse, o fato de só HMG precisar disso também é "diferente".
Se ela precisa da LIB/DLL, então é porque usa....

GTWVG - ninguém entende o que tem

MensagemEnviado: 28 Dez 2020 00:37
por JoséQuintas
Vou fazer um novo teste pra confirmar, porque num dos HBPs faltou indicar o hmg.hbc.

GTWVG - ninguém entende o que tem

MensagemEnviado: 28 Dez 2020 00:52
por JoséQuintas
#hmg.hbc
ldflags="-pthread  -static-libgcc  -static-libstdc++  -static -lpthread"


mingw.png


versão POSIX precisa da DLL, e win32 não precisa nem da DLL e nem desses parâmetros.
E só pra HMG.

GTWVG - ninguém entende o que tem

MensagemEnviado: 28 Dez 2020 01:37
por Claudio Soto
HMG presisa porque soporta multithread en los componentes GUI de la lib y esta basado en el estándar POSIX threads.
No se si las otras lib ya han implementado el soporte para mt a nivel del GUI, cuando yo la implemente en HMG las otras lib no lo tenían.

GTWVG - ninguém entende o que tem

MensagemEnviado: 28 Dez 2020 12:26
por JoséQuintas
Lembro que quando usei MSVC 2010, se usasse logo após a instalação dava erro.
Precisa instalar o service pack, porque houve mudança em algo relacionado a multithread.

Na época vi isso quando pesquisei o problema, mas não lembro mais detalhes.
Lembro de um problema relacionado ao modo de liberar memória, mas não lembro se era referente a isso.

O erro pode estar relacionado a essa mudança, apesar de não ser msvc, pode fazer uso da rotina antiga.