Obtain the objects and ID's from a .res file

Obtain the objects and ID's from a .res file

Postby sambomb » Thu Jan 29, 2009 7:22 pm

Is this possible? How to do?

I imagine that with this informations I can make a PRG generator with the redefines of each object from each dialog in a resource...

Example, I make a dialog with Pelles C with 2 gets, 2 buttons and one listbox
With the informations of the type of the objects I redefine 2 gets, 2 buttonbmp and 1 xBrowse with the right ID...

Where I can search some information about this?
Email: SamirSSabreu@gmail.com
xHarbour 1.2.3 + Fwhh 20.2
User avatar
sambomb
 
Posts: 388
Joined: Mon Oct 13, 2008 11:26 am
Location: Itaocara - RJ - Brasil

Re: Obtain the objects and ID's from a .res file

Postby James Bott » Thu Jan 29, 2009 9:43 pm

See: fw\samples\rc2prg.prg

Regards,
James
User avatar
James Bott
 
Posts: 4840
Joined: Fri Nov 18, 2005 4:52 pm
Location: San Diego, California, USA

Re: Obtain the objects and ID's from a .res file

Postby Otto » Thu Jan 29, 2009 10:22 pm

Have a look at:

viewtopic.php?f=3&t=11722&p=57828#p57828

Regards,
Otto

Code: Select all  Expand view
//Otto start
//Otto end

// FiveWin Resources Editor

#include "FiveWin.ch"
#include "Splitter.ch"
#include "TCBrowse.ch"

#define WM_SETFONT          0x0030

#define ES_CENTER           0x0001
#define ES_UPPERCASE        0x0008
#define ES_LOWERCASE        0x0010
#define ES_PASSWORD         0x0020
#define ES_AUTOVSCROLL      0x0040
#define ES_NOHIDESEL        0x0100
#define ES_OEMCONVERT       0x0400
#define ES_NUMBER           0x2000

#define SS_CENTER           0x00000001
#define SS_RIGHT            0x00000002
#define SS_ICON             0x00000003
#define SS_GRAYRECT         0x00000005
#define SS_BLACKFRAME       0x00000007
#define SS_GRAYFRAME        0x00000008
#define SS_USERITEM         0x0000000A
#define SS_LEFTNOWORDWRAP   0x0000000C
#define SS_OWNERDRAW        0x0000000D
#define SS_BITMAP           0x0000000E
#define SS_ENHMETAFILE      0x0000000F
#define SS_ETCHEDHORZ       0x00000010
#define SS_ETCHEDVERT       0x00000011
#define SS_ETCHEDFRAME      0x00000012
#define SS_TYPEMASK         0x0000001F
#define SS_NOPREFIX         0x00000080
#define SS_NOTIFY           0x00000100
#define SS_CENTERIMAGE      0x00000200
#define SS_RIGHTJUST        0x00000400
#define SS_REALSIZEIMAGE    0x00000800
#define SS_SUNKEN           0x00001000
#define SS_ENDELLIPSIS      0x00004000
#define SS_PATHELLIPSIS     0x00008000
#define SS_WORDELLIPSIS     0x0000C000
#define SS_ELLIPSISMASK     0x0000C000

#define CBS_OWNERDRAWVARIABLE 0x0020
#define CBS_HASSTRINGS        0x0200
#define CBS_NOINTEGRALHEIGHT  0x0400
#define CBS_UPPERCASE         0x2000
#define CBS_LOWERCASE         0x4000

#define BS_RADIOBUTTON      0x00000004
#define BS_3STATE           0x00000005
#define BS_AUTO3STATE       0x00000006
#define BS_USERBUTTON       0x00000008
#define BS_OWNERDRAW        0x0000000B
#define BS_LEFTTEXT         0x00000020
#define BS_TEXT             0x00000000
#define BS_ICON             0x00000040
#define BS_BITMAP           0x00000080
#define BS_LEFT             0x00000100
#define BS_RIGHT            0x00000200
#define BS_CENTER           0x00000300
#define BS_TOP              0x00000400
#define BS_BOTTOM           0x00000800
#define BS_VCENTER          0x00000C00
#define BS_PUSHLIKE         0x00001000
#define BS_MULTILINE        0x00002000
#define BS_NOTIFY           0x00004000
#define BS_FLAT             0x00008000
#define BS_RIGHTBUTTON      BS_LEFTTEXT

#define LBS_NOREDRAW          0x0004
#define LBS_OWNERDRAWVARIABLE 0x0020
#define LBS_HASSTRINGS        0x0040
#define LBS_MULTICOLUMN       0x0200
#define LBS_EXTENDEDSEL       0x0800
#define LBS_NODATA            0x2000
#define LBS_NOSEL             0x4000

#define DS_SETFONT            0x40
#define DS_3DLOOK             0x0004
#define DS_FIXEDSYS           0x0008
#define DS_NOFAILCREATE       0x0010
#define DS_CONTROL            0x0400
#define DS_CENTER             0x0800
#define DS_CENTERMOUSE        0x1000
#define DS_CONTEXTHELP        0x2000

#define DTS_UPDOWN          0x0001
#define DTS_SHOWNONE        0x0002
#define DTS_SHORTDATEFORMAT 0x0000
#define DTS_LONGDATEFORMAT  0x0004
#define DTS_SHORTDATECENTURYFORMAT 0x000C
#define DTS_TIMEFORMAT      0x0009
#define DTS_APPCANPARSE     0x0010
#define DTS_RIGHTALIGN      0x0020

#define GW_CHILD              5
#define GW_HWNDNEXT           2

static oWnd, oImageList, oTree


//Otto start
static sourcecode
//Otto end


static aStyles := { { "ES_LEFT",           ES_LEFT },;
                      { "ES_CENTER",         ES_CENTER },;
                      { "ES_RIGHT",          ES_RIGHT },;
                      { "ES_MULTILINE",      ES_MULTILINE },;
                      { "ES_UPPERCASE",      ES_UPPERCASE },;
                      { "ES_LOWERCASE",      ES_LOWERCASE },;
                      { "ES_PASSWORD",       ES_PASSWORD },;
                      { "ES_AUTOVSCROLL",    ES_AUTOVSCROLL },;
                      { "ES_AUTOHSCROLL",    ES_AUTOHSCROLL },;
                      { "ES_NOHIDESEL",      ES_NOHIDESEL },;
                      { "ES_OEMCONVERT",     ES_OEMCONVERT },;
                      { "ES_READONLY",       ES_READONLY },;
                     { "ES_WANTRETURN",     ES_WANTRETURN },;
                      { "ES_NUMBER",         ES_NUMBER },;
                      { "WS_CHILD",          WS_CHILD },;
                      { "WS_VISIBLE",        WS_VISIBLE },;
                      { "WS_GROUP",          WS_GROUP },;
                      { "WS_BORDER",         WS_BORDER },;
                      { "WS_VSCROLL",        WS_VSCROLL },;
                      { "WS_HSCROLL",        WS_HSCROLL },;
                      { "WS_TABSTOP",        WS_TABSTOP },;
                      { "WS_DISABLED",       WS_DISABLED },;
                      { "SS_LEFT",           SS_LEFT  },;
                      { "SS_CENTER",         SS_CENTER },;
                      { "SS_RIGHT",          SS_RIGHT },;
                      { "SS_ICON",           SS_ICON },;
                      { "SS_BLACKRECT",      SS_BLACKRECT },;
                      { "SS_GRAYRECT",       SS_GRAYRECT },;
                      { "SS_WHITERECT",      SS_WHITERECT },;
                      { "SS_BLACKFRAME",     SS_BLACKFRAME },;
                      { "SS_GRAYFRAME",      SS_GRAYFRAME },;
                      { "SS_WHITEFRAME",     SS_WHITEFRAME },;
                      { "SS_USERITEM",       SS_USERITEM },;
                      { "SS_SIMPLE",         SS_SIMPLE },;
                      { "SS_LEFTNOWORDWRAP", SS_LEFTNOWORDWRAP },;
                      { "SS_OWNERDRAW",      SS_OWNERDRAW },;
                      { "SS_BITMAP",         SS_BITMAP },;
                      { "SS_ENHMETAFILE",    SS_ENHMETAFILE },;
                      { "SS_ETCHEDHORZ",     SS_ETCHEDHORZ },;
                      { "SS_ETCHEDVERT",     SS_ETCHEDVERT },;
                      { "SS_ETCHEDFRAME",    SS_ETCHEDFRAME },;
                      { "SS_TYPEMASK",       SS_TYPEMASK },;
                      { "SS_NOPREFIX",       SS_NOPREFIX },;
                      { "SS_NOTIFY",         SS_NOTIFY },;
                      { "SS_CENTERIMAGE",    SS_CENTERIMAGE },;
                      { "SS_RIGHTJUST",      SS_RIGHTJUST },;
                      { "SS_REALSIZEIMAGE",  SS_REALSIZEIMAGE },;
                      { "SS_SUNKEN",         SS_SUNKEN },;
                      { "SS_ENDELLIPSIS",    SS_ENDELLIPSIS },;
                      { "SS_PATHELLIPSIS",   SS_PATHELLIPSIS },;
                      { "SS_WORDELLIPSIS",   SS_WORDELLIPSIS },;
                      { "SS_ELLIPSISMASK",   SS_ELLIPSISMASK },;
                    { "CBS_SIMPLE",            CBS_SIMPLE },;
                      { "CBS_DROPDOWN",          CBS_DROPDOWN },;
                      { "CBS_DROPDOWNLIST",      CBS_DROPDOWNLIST },;
                      { "CBS_OWNERDRAWFIXED",    CBS_OWNERDRAWFIXED },;
                      { "CBS_OWNERDRAWVARIABLE", CBS_OWNERDRAWVARIABLE },;
                      { "CBS_AUTOHSCROLL",       CBS_AUTOHSCROLL },;
                      { "CBS_OEMCONVERT",        CBS_OEMCONVERT },;
                      { "CBS_SORT",              CBS_SORT },;
                      { "CBS_HASSTRINGS",        CBS_HASSTRINGS },;
                      { "CBS_NOINTEGRALHEIGHT",  CBS_NOINTEGRALHEIGHT },;
                      { "CBS_DISABLENOSCROLL",   CBS_DISABLENOSCROLL },;
                      { "CBS_UPPERCASE",         CBS_UPPERCASE },;
                      { "CBS_LOWERCASE",         CBS_LOWERCASE },;
                    { "BS_PUSHBUTTON",            BS_PUSHBUTTON },;
                      { "BS_DEFPUSHBUTTON",        BS_DEFPUSHBUTTON },;
                      { "BS_CHECKBOX",             BS_CHECKBOX },;
                      { "BS_AUTOCHECKBOX",         BS_AUTOCHECKBOX },;
                      { "BS_RADIOBUTTON",          BS_RADIOBUTTON },;
                      { "BS_3STATE",               BS_3STATE },;
                      { "BS_AUTO3STATE",           BS_AUTO3STATE },;
                      { "BS_GROUPBOX",             BS_GROUPBOX },;
                      { "BS_USERBUTTON",           BS_USERBUTTON },;
                      { "BS_AUTORADIOBUTTON",      BS_AUTORADIOBUTTON },;
                      { "BS_OWNERDRAW",            BS_OWNERDRAW },;
                      { "BS_LEFTTEXT",             BS_LEFTTEXT },;
                      { "BS_TEXT",                 BS_TEXT },;
                      { "BS_ICON",                 BS_ICON },;
                      { "BS_BITMAP",               BS_BITMAP },;
                      { "BS_LEFT",                 BS_LEFT },;
                      { "BS_RIGHT",                BS_RIGHT },;
                      { "BS_CENTER",               BS_CENTER },;
                      { "BS_TOP",                  BS_TOP },;
                      { "BS_BOTTOM",               BS_BOTTOM },;
                      { "BS_VCENTER",              BS_VCENTER },;
                      { "BS_PUSHLIKE",             BS_PUSHLIKE },;
                      { "BS_MULTILINE",            BS_MULTILINE },;
                      { "BS_NOTIFY",               BS_NOTIFY },;
                      {   "BS_FLAT",                 BS_FLAT },;
                      {   "BS_RIGHTBUTTON",          BS_RIGHTBUTTON },;
                    { "LBS_NOTIFY",              LBS_NOTIFY },;
                      { "LBS_SORT",                LBS_SORT },;
                      { "LBS_NOREDRAW",            LBS_NOREDRAW },;
                      { "LBS_MULTIPLESEL",         LBS_MULTIPLESEL },;
                      { "LBS_OWNERDRAWFIXED",      LBS_OWNERDRAWFIXED },;
                      { "LBS_OWNERDRAWVARIABLE",   LBS_OWNERDRAWVARIABLE },;
                      { "LBS_HASSTRINGS",          LBS_HASSTRINGS },;
                      { "LBS_USETABSTOPS",         LBS_USETABSTOPS },;
                      { "LBS_NOINTEGRALHEIGHT",    LBS_NOINTEGRALHEIGHT },;
                      { "LBS_MULTICOLUMN",         LBS_MULTICOLUMN },;
                      { "LBS_WANTKEYBOARDINPUT",   LBS_WANTKEYBOARDINPUT },;
                      { "LBS_EXTENDEDSEL",         LBS_EXTENDEDSEL },;
                      { "LBS_DISABLENOSCROLL",     LBS_DISABLENOSCROLL },;
                      { "LBS_NODATA",              LBS_NODATA },;
                      { "LBS_NOSEL",               LBS_NOSEL },;
                      { "LBS_STANDARD",            LBS_STANDARD },;
                    { "DTS_UPDOWN",              DTS_UPDOWN },;
                    { "DTS_SHOWNONE",            DTS_SHOWNONE },;
                    { "DTS_SHORTDATEFORMAT",     DTS_SHORTDATEFORMAT },;
                    { "DTS_LONGDATEFORMAT",      DTS_LONGDATEFORMAT },;
                    { "DTS_SHORTDATECENTURYFORMAT", DTS_SHORTDATECENTURYFORMAT },;
                    { "DTS_TIMEFORMAT",          DTS_TIMEFORMAT },;
                    { "DTS_APPCANPARSE",         DTS_APPCANPARSE },;
                    { "DTS_RIGHTALIGN",          DTS_RIGHTALIGN },;
                      { "1", 1 },;
                      { "2", 2 },;
                      { "3", 3 },;
                      { "0", 0 } }

static aDlgStyles := { { "WS_BORDER",      WS_BORDER },;
                        { "WS_CAPTION",     WS_CAPTION },;
                        { "WS_MINIMIZEBOX", WS_MINIMIZEBOX },;
                        { "WS_POPUP",       WS_POPUP },;
                        { "WS_DLGFRAME",    WS_DLGFRAME },;
                        { "WS_SYSMENU",     WS_SYSMENU },;
                        { "WS_CHILD",       WS_CHILD },;
                        { "WS_OVERLAPPED",  WS_OVERLAPPED },;
                        { "WS_VISIBLE",     WS_VISIBLE },;
                        { "WS_THICKFRAME",  WS_THICKFRAME },;
                        { "0x4L",           4 },;
                        { "4",              4 },;
                        { "DS_MODALFRAME",  DS_MODALFRAME },;
                        { "DS_3DLOOK",      DS_3DLOOK } }

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

function Main()

   local oBar, oMenuNew
   local hBorland := LoadLibrary( "BWCC32.dll" )

   BWCCRegister( GetResources() )

   DEFINE WINDOW oWnd FROM 3, 6 TO 20, 70 ;
      TITLE FWVERSION + " Resources Editor" ;
      MENU BuildMenu() MDI

   DEFINE BUTTONBAR oBar SIZE 24, 27 OF oWnd 2007 // _3D

   MENU oMenuNew POPUP
      MENUITEM "New &Dialog" RESOURCE "Dialog"
      MENUITEM "New &Bitmap" RESOURCE "Bitmap"
      MENUITEM "New &Icon"   RESOURCE "Icon"
   ENDMENU

   DEFINE BUTTON OF oBar  ;
      TOOLTIP "New" NOBORDER RESOURCE "New" MENU oMenuNew

   DEFINE BUTTON OF oBar  ;
      TOOLTIP "Open" NOBORDER RESOURCE "Open" ;
      ACTION OpenRCFile()

   DEFINE BUTTON OF oBar  ;
      TOOLTIP "Save" NOBORDER RESOURCE "Save"

   DEFINE BUTTON OF oBar GROUP ;
      TOOLTIP "Exit" NOBORDER RESOURCE "Exit" ACTION oWnd:End()

   oImageList = TImageList():New()

   oImageList:Add( TBitmap():Define( "folder",,  oWnd ),;
                   TBitmap():Define( "fldmask",, oWnd ) )
   oImageList:Add( TBitmap():Define( "dialog",,  oWnd ),;
                   TBitmap():Define( "dlgmask",, oWnd ) )
   oImageList:Add( TBitmap():Define( "icon",,    oWnd ),;
                   TBitmap():Define( "icomask",, oWnd ) )
   oImageList:Add( TBitmap():Define( "bitmap",,  oWnd ),;
                   TBitmap():Define( "bmpmask",, oWnd ) )

   SET MESSAGE OF oWnd TO "Ready" NOINSET CLOCK DATE KEYBOARD 2007

   ACTIVATE WINDOW oWnd MAXIMIZED ;
      ON INIT InitFWHControls()
      // VALID MsgYesNo( "Want to end ?" )

   oImageList:End()

return nil

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

function BuildMenu()

   local oMenu

   MENU oMenu 2007
      MENUITEM "&File"
      MENU
         MENUITEM "&New"  RESOURCE "new"
         MENUITEM "&Open" RESOURCE "Open" ;
            ACTION OpenRCFile()

         MENUITEM "&Save as..."
         SEPARATOR
         MENUITEM "&Exit..." ACTION oWnd:End() RESOURCE "Exit"
      ENDMENU
      MENUITEM "&Edit"
      oMenu:AddMDI()
      oMenu:AddHelp( "FiveWin Resources Editor", "FiveTech 1993-2007" )
   ENDMENU

return oMenu

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

function OpenRCFile()

   local oWndRC, oTree, oMemo, oSplit
   local cRCFile := cGetFile( "*.rc", "Select a resources file" )
   local cTxtFile, cLine, nFrom := 1, cItemText := "", cText
   local oItem, oBmpItem, oDlgItem, oIcoItem, oMnuItem, oMnuString

   DEFINE WINDOW oWndRC TITLE cRCFile MDICHILD

   oTree = TTreeView():New( 2, 0, oWndRC )
   oTree:bChanged = { | oItem | oItem := oTree:GetSelected(),;
                      If( oItem != nil, oMemo:SetText( oItem:Cargo ),) }
   oTree:bLDblClick = { || ShowDialog( oTree:GetSelected() ) }

   oTree:SetImageList( oImageList )

   @ 0, 25.7 GET oMemo VAR cItemText MEMO OF oWndRC SIZE 300, 100

   @ 0, 200 SPLITTER oSplit ;
      VERTICAL _3DLOOK ;
      PREVIOUS CONTROLS oTree ;
      HINDS CONTROLS oMemo ;
      SIZE 4, 200 PIXEL ;
      OF oWndRC

   oSplit:AdjClient()

   if ! Empty( cRCFile )
      cTxtFile = MemoRead( cRCFile )

      while nFrom < Len( cTxtFile )
         cLine = ExtractLine( cTxtFile, @nFrom )
         SysRefresh()

         if Upper( StrToken( cLine, 2 ) ) == "BITMAP"
            if oBmpItem == nil
               oBmpItem = oTree:Add( "Bitmaps" )
            endif
            oBmpItem:Add( StrToken( cLine, 1 ), 3, StrToken( cLine, 3 ) )
         endif
         if left(Upper( StrToken( cLine, 2 ) ),6) == "DIALOG"
            if oDlgItem == nil
               oDlgItem = oTree:Add( "Dialogs" )
            endif
            oItem = oDlgItem:Add( StrToken( cLine, 1 ), 1 )
            cText = cLine + CRLF
            while ( SubStr( cLine, 1, 1 ) != "}" .and. SubStr( cLine, 1, 3 ) != "END" ) .and. ;
                  nFrom <= Len( cTxtFile )
               cLine = ExtractLine( cTxtFile, @nFrom )
               cText += cLine + CRLF
               SysRefresh()
            end
            oItem:Cargo = cText
         endif

         if Upper( StrToken( cLine, 2 ) ) == "ICON"
            if oIcoItem == nil
               oIcoItem = oTree:Add( "Icons" )
            endif
            oIcoItem:Add( StrToken( cLine, 1 ), 2, StrToken( cLine, 3 ) )
         endif

         if Upper( StrToken( cLine, 2 ) ) == "MENU"
            if oMnuItem == nil
               oMnuItem = oTree:Add( "Menus" )
            endif
            oMnuItem:Add( StrToken( cLine, 1 ), 2 )
         endif

         if Upper( StrToken( cLine, 1 ) ) == "STRINGTABLE"
            if oMnuString == nil
               oMnuString = oTree:Add( "Strings" )
            endif
            oMnuString:Add( StrToken( cLine, 2 ), 2 )
         endif

      end
   endif

   ACTIVATE WINDOW oWndRC ;
      ON RESIZE oSplit:AdjClient()

return nil

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

function ShowDialog( oItem )

   local cText, cLine, nFrom := 1
   local cCaption := "", nTop, nLeft, nWidth, nHeight, nStyle, nFontSize, cFontName
   local oDlg, cResource := "", cFirst, nControls := 0
   local oFnt

   //Otto start
   local DialogName
   local oClp
   DEFINE CLIPBOARD oClp OF oWnd
   //Otto end

   if oItem == nil
      return nil
   endif
   cText = oItem:Cargo
   if Empty( cText )
      return nil
   endif
   cLine = ExtractLine( cText, @nFrom )

   DialogName = StrToken( cLine, 1, " " )

   nTop    = Val( SubStr( StrToken( cLine, 1, "," ), RAt( " ", StrToken( cLine, 1, "," ) ) + 1 ) )
   nLeft   = Val( StrToken( cLine, 2, "," ) )
   nWidth  = Val( StrToken( cLine, 3, "," ) )
   nHeight = Val( StrToken( cLine, 4, "," ) )

   while nFrom < Len( cText )
      cLine = ExtractLine( cText, @nFrom )
      cLine = StrTran( cLine, Chr( 9 ), "   " ) // remove Tab chars
      cFirst = Upper( AllTrim( StrToken( cLine, 1 ) ) )
      do case
          case cFirst == "CAPTION"
              cCaption = StrToken( cLine, 2, '"' )


//Otto start
sourcecode:=('DEFINE DIALOG oDlg RESOURCE "' + DialogName +' "TITLE "'+cCaption + '"')+CRLF+CRLF
//Otto end

         case cFirst == "STYLE"
              nStyle = ParseDlgStyle( AllTrim( SubStr( cLine, 6 ) ) )
              if lAnd( nStyle, WS_CHILD )
                 nStyle = nXor( nStyle, WS_CHILD )
              endif
              if nAnd( nStyle, WS_CAPTION ) != WS_CAPTION
                 nStyle = nOr( nStyle, WS_CAPTION )
              endif

         case cFirst == "FONT"
              nFontSize = Val( StrToken( StrToken( cLine, 1, "," ), 2 ) )
              cFontName = StrToken( cLine, 2, '"' )

         case cFirst == "CONTROL"
              cResource += ParseControl( cLine )
              nControls++

         case cFirst $ "PUSHBUTTON,DEFPUSHBUTTON,LISTBOX,EDITTEXT,LTEXT,RTEXT,GROUPBOX,CHECKBOX,COMBOBOX,RADIOBUTTON"
              cResource += ParseStdControl( cLine )
              nControls++
      endcase



   end

   DEFAULT nFontSize := 8, cFontName := "Ms Sans Serif"

   cResource = cDlg2Chr( nControls, nTop, nLeft, nTop + nHeight, nLeft + nWidth,;
                         cCaption, nStyle, nFontSize, cFontName ) + cResource


//Otto start
      sourcecode := sourcecode +CRLF+    'ACTIVATE DIALOG oDlg '+CRLF
      oClp:SetText( sourcecode )
      msginfo( "Code wurde ins Clipboard gespeichert."+CRLF+CRLF+sourcecode)
//Otto end


   DEFINE DIALOG oDlg

   oDlg:cResData = cResource

   ACTIVATE DIALOG oDlg ;
      ON INIT InitControls( oDlg ) ;
      ON PAINT DrawGrid( oDlg:hWnd, hDC, cPS, 8, 8 )

return nil

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

function ParseDlgStyle( cStyle )

   local nStyle := nOr( DS_SETFONT, WS_OVERLAPPEDWINDOW ), cToken, nAt

   while ! Empty( cStyle )
      cToken = AllTrim( StrToken( cStyle, 1, "|" ) )

      if ( nAt := AScan( aDlgStyles, { | a | cToken == a[ 1 ] } ) ) != 0
           nStyle = nOr( nStyle, aDlgStyles[ nAt ][ 2 ] )
      else
         MsgAlert( "Dialog style not found: " + cToken,;
                   "Please report this to FiveTech Software" )
      endif
      if At( "|", cStyle ) != 0
         cStyle = SubStr( cStyle, At( "|", cStyle ) + 1 )
      else
         cStyle = ""
      endif
   end

return nStyle

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

function ParseControl( cLine )

   local nTop, nLeft, nWidth, nHeight, nId, nAt
   local cClassName, cStyle, nStyle := nOr( WS_VISIBLE, WS_CHILD, WS_TABSTOP ), cCaption, cToken
   local cId

   cCaption = StrToken( cLine, 2, '"' )
   cLine = StrToken( cLine, 1, '"' ) + '"-"' + StrToken( cLine, 3, '"' ) + '"' + ;
           StrToken( cLine, 4, '"' ) + '"' + StrToken( cLine, 5, '"' )
   nId     = Val( StrToken( cLine, 1, "," ) )
   nLeft   = Val( StrToken( cLine, 5, "," ) )
   nTop    = Val( StrToken( cLine, 6, "," ) )
   nWidth  = Val( StrToken( cLine, 7, "," ) )
   nHeight = Val( StrToken( cLine, 8, "," ) )
   cClassName = StrToken( cLine, 4, '"' )
   cStyle  = StrToken( cLine, 4, "," )

   cId := STRTRAN(StrToken( cLine, 3, '"' ),",")

//Otto start

IF cClassName="Edit"
     sourcecode := sourcecode +  'REDEFINE GET oGet     VAR ###     ID ' + cId + 'of oDlg'   + CRLF

ELSEIF cClassName="Static"
     sourcecode := sourcecode +  'REDEFINE SAY oSay     PROMPT ###  ID ' + cId + 'of oDlg'   + CRLF

ELSEIF cClassName="Button"
     sourcecode := sourcecode +  'REDEFINE BUTTON oBtn              ID ' + cId + 'of oDlg  ACTION ()'   + CRLF

ELSEIF cClassName="ComboBox"
     sourcecode := sourcecode +  'REDEFINE COMBOBOX oCbx   ITEMS  a###      ID ' + cId + 'of oDlg'   + CRLF



ELSEIF cClassName="ListBox"
     sourcecode := sourcecode +  'REDEFINE LISTBOX oBrw FIELDS ###  HEADERS ### FIELDSIZES  ###    ID ' + cId + 'of oDlg'   + CRLF



ELSE
     sourcecode := sourcecode + " ******** "+   STRTRAN(StrToken( cLine, 3, '"' ),",")  +cClassName +CRLF

ENDIF
//Otto end

   if cClassName == "EDIT"
      cClassName = "edit"
   endif
   if Upper( cClassName ) == "TFOLDER"
      cClassName = "SysTabControl32"
   endif

   while ! Empty( cStyle )
      cToken = AllTrim( StrToken( cStyle, 1, "|" ) )

      if ( nAt := AScan( aStyles, { | a | cToken == a[ 1 ] } ) ) != 0
           nStyle = nOr( nStyle, aStyles[ nAt ][ 2 ] )
      else
         if SubStr( cToken, 1, 3 ) != "NOT"
            MsgAlert( "Style not found: " + cToken,;
                      "Please report this to FiveTech Software" )
         endif
      endif
      if At( "|", cStyle ) != 0
         cStyle = SubStr( cStyle, At( "|", cStyle ) + 1 )
      else
         cStyle = ""
      endif
   end
//Otto start
// I added + cId +
return cCtrl2Chr( nTop, nLeft, nTop + nHeight, nLeft + nWidth, nId, nStyle,;
                  cClassName,  + cId + cCaption )
//Otto end

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

function ParseStdControl( cLine )

   local nTop, nLeft, nWidth, nHeight, nId, nAt
   local cClassName, cStyle, nStyle := nOr( WS_VISIBLE, WS_CHILD, WS_TABSTOP ), cCaption, cToken

   cClassName = StrToken( cLine, 1 )


   do case
        case cClassName == "PUSHBUTTON"
             cClassName = "Button"
           cCaption = StrToken( cLine, 2, '"' )
           cLine = StrToken( cLine, 1, '"' ) + '"-"' + SubStr( cLine, RAt( '"', cLine ) + 1 )
             nId  = Val( StrToken( cLine, 2, "," ) )
           nTop = Val( StrToken( cLine, 3, "," ) )
           nLeft = Val( StrToken( cLine, 4, "," ) )
           nHeight = Val( StrToken( cLine, 5, "," ) )
           nWidth  = Val( StrToken( cLine, 6, "," ) )

        case cClassName == "DEFPUSHBUTTON"
             cClassName = "Button"
           cCaption = StrToken( cLine, 2, '"' )
           cLine = StrToken( cLine, 1, '"' ) + '"-"' + SubStr( cLine, RAt( '"', cLine ) + 1 )
             nId  = Val( StrToken( cLine, 2, "," ) )
           nTop = Val( StrToken( cLine, 3, "," ) )
           nLeft = Val( StrToken( cLine, 4, "," ) )
           nHeight = Val( StrToken( cLine, 5, "," ) )
           nWidth  = Val( StrToken( cLine, 6, "," ) )
           nStyle = nOr( nStyle, BS_DEFPUSHBUTTON )

        case cClassName == "LISTBOX"
             cClassName = "ListBox"
             nId  = Val( StrToken( StrToken( cLine, 2 ), 1, "," ) )
           nTop = Val( StrToken( cLine, 2, "," ) )
           nLeft   = Val( StrToken( cLine, 3, "," ) )
           nHeight  = Val( StrToken( cLine, 4, "," ) )
           nWidth   = Val( StrToken( cLine, 5, "," ) )
           cCaption = ""
           cStyle  = StrToken( cLine, 6, "," )

        case cClassName == "EDITTEXT"
             cClassName = "Edit"
             nId  = Val( StrToken( cLine, 2 ) )
           nTop = Val( StrToken( cLine, 2, "," ) )
           nLeft   = Val( StrToken( cLine, 3, "," ) )
           nHeight  = Val( StrToken( cLine, 4, "," ) )
           nWidth   = Val( StrToken( cLine, 5, "," ) )
           cStyle = StrToken( cLine, 6, "," )
           if Empty( cStyle )
              cStyle = "WS_BORDER"
           endif
           cCaption = ""

        case cClassName == "LTEXT"
             cClassName = "static"
           cCaption = StrToken( cLine, 2, '"' )
           cLine = StrToken( cLine, 1, '"' ) + '"-"' + SubStr( cLine, RAt( '"', cLine ) + 1 )
             nId  = Val( StrToken( StrToken( cLine, 2, "," ) ) )
           nTop = Val( StrToken( cLine, 3, "," ) )
           nLeft   = Val( StrToken( cLine, 4, "," ) )
           nHeight  = Val( StrToken( cLine, 5, "," ) )
           nWidth   = Val( StrToken( cLine, 6, "," ) )
           cStyle = "ES_LEFT"

          msginfo(procname()+"   " + str(procline())+"   "+cClassName + "  " + cCaption + str(nId))


        case cClassName == "RTEXT"
             cClassName = "static"
           cCaption = StrToken( cLine, 2, '"' )
           cLine = StrToken( cLine, 1, '"' ) + '"-"' + SubStr( cLine, RAt( '"', cLine ) + 1 )
             nId  = Val( StrToken( StrToken( cLine, 2, "," ) ) )
           nTop = Val( StrToken( cLine, 3, "," ) )
           nLeft   = Val( StrToken( cLine, 4, "," ) )
           nHeight  = Val( StrToken( cLine, 5, "," ) )
           nWidth   = Val( StrToken( cLine, 6, "," ) )
           cStyle = "ES_RIGHT"

        case cClassName == "GROUPBOX"
             cClassName = "button"
           cCaption = StrToken( cLine, 2, '"' )
           cLine = StrToken( cLine, 1, '"' ) + '"-"' + SubStr( cLine, RAt( '"', cLine ) + 1 )
             nId  = Val( StrToken( StrToken( cLine, 2, "," ) ) )
           nTop = Val( StrToken( cLine, 3, "," ) )
           nLeft   = Val( StrToken( cLine, 4, "," ) )
           nHeight  = Val( StrToken( cLine, 5, "," ) )
           nWidth   = Val( StrToken( cLine, 6, "," ) )
           cStyle = StrToken( cLine, 7, "," )

        case cClassName == "CHECKBOX"
             cClassName = "Button"
           cCaption = StrToken( cLine, 2, '"' )
           cLine = StrToken( cLine, 1, '"' ) + '"-"' + SubStr( cLine, RAt( '"', cLine ) + 1 )
             nId  = Val( StrToken( cLine, 2, "," ) )
           nTop = Val( StrToken( cLine, 3, "," ) )
           nLeft = Val( StrToken( cLine, 4, "," ) )
           nHeight = Val( StrToken( cLine, 5, "," ) )
           nWidth  = Val( StrToken( cLine, 6, "," ) )
           cStyle = StrToken( cLine, 7, "," )

        case cClassName == "COMBOBOX"
             cClassName = "ComboBox"
             nId  = Val( StrToken( StrToken( cLine, 2 ), 1, "," ) )
           nTop = Val( StrToken( cLine, 2, "," ) )
           nLeft   = Val( StrToken( cLine, 3, "," ) )
           nHeight  = Val( StrToken( cLine, 4, "," ) )
           nWidth   = Val( StrToken( cLine, 5, "," ) )
           cCaption = ""
           cStyle  = StrToken( cLine, 6, "," )

        case cClassName == "RADIOBUTTON"
             cClassName = "Button"
           cCaption = StrToken( cLine, 2, '"' )
           cLine = StrToken( cLine, 1, '"' ) + '"-"' + SubStr( cLine, RAt( '"', cLine ) + 1 )
             nId  = Val( StrToken( cLine, 2, "," ) )
           nTop = Val( StrToken( cLine, 3, "," ) )
           nLeft = Val( StrToken( cLine, 4, "," ) )
           nHeight = Val( StrToken( cLine, 5, "," ) )
           nWidth  = Val( StrToken( cLine, 6, "," ) )
           cStyle = StrToken( cLine, 7, "," )

   endcase

   while ! Empty( cStyle )
      cToken = AllTrim( StrToken( cStyle, 1, "|" ) )

      if ( nAt := AScan( aStyles, { | a | cToken == a[ 1 ] } ) ) != 0
           nStyle = nOr( nStyle, aStyles[ nAt ][ 2 ] )
      else
         if SubStr( cToken, 1, 3 ) != "NOT"
            MsgAlert( "Style not found: " + cToken, "Please report this to FiveTech Software" )
         endif
      endif
      if At( "|", cStyle ) != 0
         cStyle = SubStr( cStyle, At( "|", cStyle ) + 1 )
      else
         cStyle = ""
      endif
   end

return cCtrl2Chr( nLeft, nTop, nLeft + nWidth, nTop + nHeight, nId, nStyle,;
                  cClassName, cCaption )

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

function InitFWHControls()

   local oDlg, oCtrl

   DEFINE DIALOG oDlg

   @ 2, 2 LISTBOX oCtrl FIELDS "" OF oDlg

   @ 2, 2 BTNBMP oCtrl OF oDlg

   @ 2, 2 BITMAP oCtrl OF oDlg

   @ 2, 2 TABS oCtrl OF oDlg

   @ 2, 2 BROWSE oCtrl OF oDlg

   ACTIVATE DIALOG oDlg ;
      ON INIT oDlg:End()

return nil

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

DLL32 FUNCTION BWCCRegister( hInst AS LONG ) AS WORD PASCAL LIB "BWCC32.DLL"

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

function InitControls( oDlg )

   local hDlg := oDlg:hWnd, hCtrl := GetWindow( hDlg, GW_CHILD ), oCtrl

   if hCtrl != 0
      oCtrl = TControl()
      oCtrl:oWnd = oDlg
      oCtrl:hWnd = hCtrl
      oCtrl:Link()
      AAdd( oDlg:aControls, oCtrl )
      oCtrl:lDrag = .T.
      oCtrl:bGotFocus = { || oCtrl:ShowDots() }
   endif

   while hCtrl != 0
      hCtrl = GetWindow( hCtrl, GW_HWNDNEXT   )
      if hCtrl != 0
         oCtrl = TControl()
         oCtrl:oWnd = oDlg
         oCtrl:hWnd = hCtrl
         oCtrl:Link()
         AAdd( oDlg:aControls, oCtrl )
         oCtrl:lDrag = .T.
         oCtrl:bGotFocus = { || oCtrl:ShowDots() }
      endif
   end

return nil

//----------------------------------------------------------------------------//
********************************************************************
mod harbour - Vamos a la conquista de la Web
modharbour.org
https://www.facebook.com/groups/modharbour.club
********************************************************************
User avatar
Otto
 
Posts: 6328
Joined: Fri Oct 07, 2005 7:07 pm

Re: Obtain the objects and ID's from a .res file

Postby sambomb » Fri Jan 30, 2009 10:36 am

Thank's I'll take a look. :wink:
Email: SamirSSabreu@gmail.com
xHarbour 1.2.3 + Fwhh 20.2
User avatar
sambomb
 
Posts: 388
Joined: Mon Oct 13, 2008 11:26 am
Location: Itaocara - RJ - Brasil


Return to FiveWin for Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 86 guests