Duvida com arquivo "RC"

Discussão sobre a biblioteca Fivewin - O Clipper para Windows.

Moderador: Moderadores

rcalado
Usuário Nível 1
Usuário Nível 1
Mensagens: 12
Registrado em: 08 Jul 2004 14:38
Localização: São Paulo - SP

Duvida com arquivo "RC"

Mensagem por rcalado »

Amigos,

Estou fazendo alguns teste com o FiveWin, e não estou conseguindo abrir um arquivo gerado pelo WorkShop da Borland. Simplesmente eu clico na opção do menu que faz a chamada da rotina e não acontece nada.

Segue abaixo a rotina que faz a chamada e o arquivo RC para análise:

Código: Selecionar todos

static function IncHis( ) 
   local lSave := .f. 
           USE HISTO 
           M->CODIGO    := HISTO->CODIGO
           M->DESCRICAO := HISTO->DESCRICAO

           SET 3DLOOK ON 
           DEFINE DIALOG oDlg RESOURCE "teste" 
           REDEFINE GET      oGet VAR M->CODIGO     PICTURE "@!" ID 101 OF oDlg 
           REDEFINE GET      oGet VAR M->DESCRICAO  PICTURE "@!" ID 102 OF oDlg 
           REDEFINE BUTTON ID 1 OF oDlg ACTION ( lSave := .t. , oDlg:End() ) 
           REDEFINE BUTTON ID 2 OF oDlg ACTION ( lSave := .f. , oDlg:End() ) 
           ACTIVATE DIALOG oDlg CENTERED 
if lSave 
              APPEND BLANK 
              HISTO->CODIGO    := M->CODIGO
              HISTO->DESCRICAO := M->CODIGO
              COMMIT 
endif
return .t. 
Arquivo RC:

Código: Selecionar todos

#include "C:\FW24\include\WinApi.ch"
#include "teste.ch"

TESTE DIALOG 18, 27, 207, 111
STYLE WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX
CAPTION "Cadastro de Históricos"
FONT 8, "Arial"
BEGIN
 DEFPUSHBUTTON "OK", IDOK, 20, 93, 50, 14
 PUSHBUTTON "Cancela", IDCANCEL, 75, 93, 50, 14
 PUSHBUTTON "Ajuda", IDHELP, 130, 93, 50, 14
 EDITTEXT IDC_EDIT1, 47, 16, 37, 12
 EDITTEXT IDC_EDIT2, 47, 36, 132, 12
 LTEXT "Código", -1, 17, 19, 27, 8
 LTEXT "Descrição", -1, 9, 39, 35, 8
END
Se alguém puder ajudar ou dar uma dica, desde já agradeço.

abs,

Roberto
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Mensagem por rochinha »

Amiguinho,

Deixe eu dar duas palavras.

Apresente o conteudo de seu arquivo .BAT de compilação para apreciarmos e qual forma voce esta compilando o aplicativo.

Os arquivos .RC podem ser agregados ao aplicativo de duas formas:

1 - Incrustrado no .EXE
2 - Incrustrado em .DLL

Antes porem ele deve ser transformado em .RES(resource file) atraves do utilitário Borlando BRC32.EXE

brc32 -r arquivo.rc

O arquivo .RES resultante deverá ser linkando ao EXEcutável por meio de seu linker BLINKER ou ILINK32.

No caso de usar o BLINKER o .RC e o .RES devem possuir o mesmo nome do executável e a linha de comando será:

rc -k arquivo (sem extensão)

No caso de usar o ILINK32 o .RC e o .RES podem possuir qualquer nome e a linha de comando deverá estar dentro do arquivo .BC(Borland Commands) e a linha de compilação deverá chama-lo:

ilink32 -Gn -aa -Tpe -s @arquivo.bc

Nas formas anteriores voce ira incrustra-lo no .EXE

Para usar .DLL basta usar no Workshop o método SALVAR como .DLL no caso de usar Fivewin 16 bits e liga-la ao aplicativo por meio de um comando no .PRG principal:

SET RESOURCES TO "arquivo.dll"

Se o caso for Fivewin for Harbour, por ser um compilador 32bits, as .DLLs não funcionarão e deverão ser montadas através de um outro método, via .BAT:

RC2DLL32.BAT

Código: Selecionar todos

rem @ECHO OFF
rem RC file to 32 bits resources DLL
rem syntax: rc2dll32.bat Your_rc_file !!! without the .RC extension 

@ECHO #include "WinApi.ch"   > ARQUIVO.RC
@ECHO #include "arquivo.rc"   >> ARQUIVO.RC

SET FWDIR=c:\fivewin\fwh24
@IF EXIST ARQUIVO.DLL DEL ARQUIVO.DLL 
copy %FWDIR%\dll\SCREEN32.C

%FWDIR%\bin\bcc32 -c -I%FWDIR%\include SCREEN32.C
%FWDIR%\bin\brc32 -r ARQUIVO.rc 
%FWDIR%\bin\ilink32 /Tpd %FWDIR%\lib\c0d32.obj dll\SCREEN32.OBJ, ARQUIVO.DLL,,%FWDIR%\lib\cw32.lib %FWDIR%\lib\import32.lib,, ARQUIVO.RES 

@IF EXIST ARQUIVO.res DEL ARQUIVO.RES > NULL
@IF EXIST ARQUIVO.ils DEL ARQUIVO.ils > NULL
@IF EXIST ARQUIVO.ilf DEL ARQUIVO.ilf > NULL
@IF EXIST ARQUIVO.ilc DEL ARQUIVO.ilc > NULL
@IF EXIST ARQUIVO.ild DEL ARQUIVO.ild > NULL
@IF EXIST ARQUIVO.tds DEL ARQUIVO.tds > NULL
@IF EXIST ARQUIVO.map DEL ARQUIVO.map > NULL
@IF EXIST NULL.       DEL NULL.
SCREENS.C

Código: Selecionar todos

#include <windows.h>

#pragma argsused

//------------------------------------------------------------------------//

int WINAPI _export DllEntryPoint( HINSTANCE hinst, DWORD fdwReason,
                                  PVOID pvReserved )
{
   return TRUE;
}

//------------------------------------------------------------------------//
Após criar a .DLL basta usar o comando:

SET RESOURCES TO "arquivo.dll"
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
rcalado
Usuário Nível 1
Usuário Nível 1
Mensagens: 12
Registrado em: 08 Jul 2004 14:38
Localização: São Paulo - SP

Mensagem por rcalado »

Amigo Rochinha,

Obrigado pela dica, isso é que dá ficar muito tempo sem programar, simplesmente me esqueci de transformar o arquivo RC em RES.

Já fiz os testes e funcionou perfeitamente.

Grande abraço,

Roberto
Responder