Page 1 of 1
compilar archivos C
Posted: Thu May 24, 2007 4:39 pm
by Patricio Avalos Aguirre
Estimados
Estoy tratando de modificar el menus.c que se encuentra en
c:\fwh\source\winapi, pero al anexarlo al la libreria
fivehC.lib me arroja que no existen varias funciones
Code: Select all
Compiling...
c:\borland\bcc55\bin\ilink32 -Gn -aa -Tpe -s -v @b32.bc
RMAKE 1.5 Copyright (c) 1989-1995 Computer Associates International, Inc.
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
Error: Unresolved external '_HB_FUN_GETSUBMENU' referenced from C:\FWH\LIB\FIVEH
X.LIB|MDICLIEN
Error: Unresolved external '_HB_FUN_DRAWMENUBAR' referenced from C:\FWH\LIB\FIVE
HX.LIB|MDICLIEN
lo estoy haciendo asi
primero saque el original menus.obj de fivehc.lib y lo respalde en un carpeta diferente
tlib fivehc.lib *menus.c
luego compile menus.c que se encuentra en c:\fwh\source\winapi\menus.c
Code: Select all
bcc32.exe -tWM -DHB_GUI -DHB_API_MACROS -DHB_STACK_MACROS -DHB_FM_STATISTICS_OFF -d -a8 -OS -O2 -5 -c MENUS.C
TLIB FIVEHC +- ..\SOURCE\WINAPI\MENUS.OBJ
y si vuelvo anexar el menus.obj del original funciona sin ningun problema
Al parecer le faltan funciones o algo estoy haciendo mal
Posted: Thu May 24, 2007 4:47 pm
by Antonio Linares
Patricio,
Comprueba si está la función GetSubMenu() en el fichero menus.c que has modificado
Posted: Thu May 24, 2007 4:53 pm
by Patricio Avalos Aguirre
Gracias antonio por responder
si existe la funcion GetSubMenu
Code: Select all
CLIPPER GETSUBMENU( PARAMS ) // hMenu, nPos
{
_retnl( ( LONG ) GetSubMenu( ( HMENU ) _parnl( 1 ), _parni( 2 ) ) );
}
a lo mejor son los parametros de la compilacion
lo unico que agregue a este archivo(menus.c)
Code: Select all
#ifdef __HARBOUR__
CLIPPER MENUDRAWITEM( PARAMS ) // ( pDrawItemStruct, cPrompt, lTop, hBitmap )
#else
CLIPPER MENUDRAWIT( PARAMS ) // EM( pDrawItemStruct, cPrompt, lTop, hBitmap )
#endif
{
LPDRAWITEMSTRUCT lpdis = ( LPDRAWITEMSTRUCT ) _parnl( 1 );
LPSTR szPrompt = _parc( 2 );
BOOL bTab = bStrAt( 9, szPrompt );
WORD wLen;
//BOOL bTop = _parl( 3 );
HPEN hNormal;
HBRUSH hBrush;
LOGBRUSH lb;
RECT rct;
HBITMAP hBmp = ( HBITMAP ) _parnl( 4 );
switch( lpdis->itemAction )
{
case ODA_DRAWENTIRE:
case ODA_SELECT:
lb.lbStyle = BS_SOLID;
lb.lbColor = GetSysColor( COLOR_MENU );
hBrush = CreateBrushIndirect( &lb );
FillRect( lpdis->hDC, &lpdis->rcItem, hBrush );
DeleteObject( hBrush );
//PATRICK
SetBkColor( lpdis->hDC, 8421504 );
//FIN PATRICK
estoy probando de colocar un color al menu
Posted: Thu May 24, 2007 4:57 pm
by Antonio Linares
Patricio,
Compila simplemente asi:
bcc32 -c -Ipath_a_includes menus.c
Posted: Thu May 24, 2007 5:30 pm
by Patricio Avalos Aguirre
igual el error
estoy viendo la libreria fivehc.lib
tlib fivehc,fivehc.prg
Code: Select all
__WNDPRO size = 149
_HB_FUN_WININSPECT __DbgWndProc
__WndProc _bDbgActive
_bDbgBreak
menus size = 1874
APPENDMENU CHECKMENUI
CREATEMENU CREATEPOPU
DESTROYMEN DRAWMENUBA
ENABLEMENU GETDRAWITE
GETDRAWMEN GETMEAITEM
GETMENUSTA GETMENUSTR
GETMITEMCO GETMITEMID
GETSUBMENU GETSYSTEMM
HILITEMENU INSERTMENU
ISMENU LOADMENU
MENUDRAWIT MENUMEASUR
MODIFYMENU REMOVEMENU
SETMENU TRACKPOPUP
y esta es de la original, hay diferencia??
Code: Select all
MENUS size = 1801
_HB_FUN_APPENDMENU _HB_FUN_CHECKMENUITEM
_HB_FUN_CREATEMENU _HB_FUN_CREATEPOPUPMENU
_HB_FUN_DESTROYMENU _HB_FUN_DRAWMENUBAR
_HB_FUN_ENABLEMENUITEM _HB_FUN_GETDRAWITEM
_HB_FUN_GETDRAWMENU _HB_FUN_GETMEAITEM
_HB_FUN_GETMENUSTATE _HB_FUN_GETMENUSTRING
_HB_FUN_GETMITEMCOUNT _HB_FUN_GETMITEMID
_HB_FUN_GETSUBMENU _HB_FUN_GETSYSTEMMENU
_HB_FUN_HILITEMENUITEM _HB_FUN_INSERTMENU
_HB_FUN_ISMENU _HB_FUN_LOADMENU
_HB_FUN_MENUDRAWITEM _HB_FUN_MENUMEASUREITEM
_HB_FUN_MODIFYMENU _HB_FUN_REMOVEMENU
_HB_FUN_SETMENU _HB_FUN_TRACKPOPUP
y existe, que raro..
Posted: Thu May 24, 2007 5:35 pm
by Antonio Linares
Patricio,
Faltan los prefijos (_HB_FUN_) de todas las funciones
Tienes que llamar a fwh/tools/clp2harb.exe menus.c menus2.c y luego compilar menus2.c
Posted: Thu May 24, 2007 8:23 pm
by Patricio Avalos Aguirre
No quiere nada con migo el menus.c
Code: Select all
C:\FWH\SOURCE\WINAPI>\fwh\tools\clp2harb menus.c menus2.c
C:\FWH\SOURCE\WINAPI>bcc32 -c -IC:\Borland\BCC55\Include;c:\harbour\include menu
s2.c
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
menus2.c:
Warning W8070 menus2.c 24: Function should return a value in function HB_FUNC
Warning W8057 menus2.c 24: Parameter 'CREATEMENU' is never used in function HB_F
UNC
Error E2238 menus2.c 33: Multiple declaration for 'HB_FUNC'
Error E2344 menus2.c 21: Earlier declaration of 'HB_FUNC'
Warning W8070 menus2.c 35: Function should return a value in function HB_FUNC
Warning W8057 menus2.c 35: Parameter 'CREATEPOPU' is never used in function HB_F
UNC
Error E2238 menus2.c 40: Multiple declaration for 'HB_FUNC'
Error E2344 menus2.c 31: Earlier declaration of 'HB_FUNC'
Warning W8070 menus2.c 43: Function should return a value in function HB_FUNC
Warning W8057 menus2.c 43: Parameter 'TRACKPOPUP' is never used in function HB_F
UNC
Error E2238 menus2.c 52: Multiple declaration for 'HB_FUNC'
Error E2344 menus2.c 39: Earlier declaration of 'HB_FUNC'
Warning W8070 menus2.c 54: Function should return a value in function HB_FUNC
Warning W8057 menus2.c 54: Parameter 'ENABLEMENU' is never used in function HB_F
Posted: Thu May 24, 2007 8:26 pm
by Antonio Linares
Patricio,
Has modificado los includes que lleva menus.c al principio ?
Posted: Thu May 24, 2007 10:50 pm
by Patricio Avalos Aguirre
Antonio, para nada, es primera vez que le hecho una mirada al la carpeta winapi, siempre he metido mano a las carpeta clases
Posted: Fri May 25, 2007 6:28 am
by Antonio Linares
Patricio,
Dinos exactamente que código quieres incluir en menus.c y lo compilamos aqui y te enviamos el OBJ
Posted: Fri May 25, 2007 2:42 pm
by Patricio Avalos Aguirre
Gracias antonio por tu interes en ayudarme
pero he solucionado el problema
resulta que en c:\fwh\source\winapi\menus.c tiene estos include
Code: Select all
#include <WinTen.h>
#include <Windows.h>
#include <ClipApi.h>
lo he solucionado anteponiendo esto
Code: Select all
#include "hbapi.h"
#include <WinTen.h>
#include <Windows.h>
#include <ClipApi.h>
a lo mejor era obvio colocarlo este include, pero como sabes estoy iniciandome en esto de C
muchas gracias por la ayuda...
pd. siempre se aprende algo nuevo