This is the mail archive of the binutils@sources.redhat.com mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [Patch]: Fix a windres (rcparse.y) parsing bug for controls without text fields


cgf said on Jun 26, 2003:

> On Thu, Jun 26, 2003 at 09:38:05PM +1000, Danny Smith wrote:
> >The following patch fixes by defining a new <dialog_control>
> >control_params_no_text, like control_params, but passing a
> >null-text res_id as first parameter to define_control.
> >
> >I'm not sure this is the best way to do this, but I'm finding it
> >difficult to discern what the "real" rules should be when the behaviour
> >of native resource compiler sometimes disagrees with documentation.
> 
> Two minor problems with this patch.  One is a misspelling of "their" rather
> than "there" (I know: picky, picky).

OK

> 
> The other is a feel that control_parms and control_params_no_text should
> be using a common rule somehow.  It looks like there is some code duplication
> now which is generally a bad thing unless there is no way around this.
> 
> Isn't there some way to merge the rules to avoid the duplication?
> 
> cgf
>

Okay, here is a revised patch that avoids code duplication (and, in fact,
make it easier to separate out some more inconsistencies between rc and
windres independently -- later. Thanks Chris).

I have also added a new testcase (for CHECKBOX) as a case that does
accept a text field, but .... 

On further testing with MS rc.exe I am finding that, in some cases, the
leading text field in control definition statements is not optional with
MS rc.exe but obligatory. That is, gnu windres (before or after my proposed
patch) accepts syntax for which rc.exe reports syntax errors. Should I
incorporate these additional changes (to make make windres fail or warn) now
or do that separately since those changes are orthogonal to what *this patch
does? 

2003-06-27  Danny Smith  <dannysmith@usrs.sourceforge.net>

	* rcparse.y (res_text_field): New res_id variable.
	(res_null_text): New static const struct res_id object,
	with empty unicode name field.
	(control): Pop parsing of optresidc up one level. Set
	res_text_field to $2 except for controls which do not accept
	a text field.  Set res_text_field to res_null_text for the
	special cases (viz. COMBOBOX, EDITTEXT, LISTBOX, SCROLLBAR).
	(control_params): Adjust to use res_text_field rather
	than optresidc.
	(COMBOBOX): Add comment about discrepency between documented
	vs. observed default style.
	* resrc.c (define_control): Make first param const.
	* windres.h (define_control): Adjust prototype.

testsuite

	* binutils-all/windres/checkbox.rc: New file.
	* binutils-all/windres/checkbox.rsd: New file.
	* binutils-all/windres/combobox.rc: New file.
	* binutils-all/windres/combobox.rsd: New file.
	* binutils-all/windres/edittext.rc: New file.
	* binutils-all/windres/edittext.rsd: New file.
	* binutils-all/windres/listbox.rc: New file.
	* binutils-all/windres/listbox.rsd: New file.
	* binutils-all/windres/scrollbar.rc: New file.
	* binutils-all/windres/scrollbar.rsd: Newfile.

Index: rcparse.y
===================================================================
RCS file: /cvs/src/src/binutils/rcparse.y,v
retrieving revision 1.17
diff -c -3 -p -r1.17 rcparse.y
*** rcparse.y	31 Mar 2003 10:15:58 -0000	1.17
--- rcparse.y	27 Jun 2003 02:32:19 -0000
*************** static unsigned long style;
*** 52,57 ****
--- 52,62 ----
  static unsigned long base_style;
  static unsigned long default_style;
  static unsigned long class;
+ static struct res_id res_text_field;
+ 
+ /* This is used for COMBOBOX, LISTBOX, EDITTEXT, SCROLLBAR which
+    do not allow resource 'text' field in control definition. */
+ static const struct res_id res_null_text = { 1, {{0, L""}}};
  
  %}
  
*************** controls:
*** 533,596 ****
  	;
  
  control:
! 	  AUTO3STATE
  	    {
  	      default_style = BS_AUTO3STATE | WS_TABSTOP;
  	      base_style = BS_AUTO3STATE;
  	      class = CTL_BUTTON;
  	    }
  	    control_params
  	  {
! 	    $$ = $3;
  	  }
! 	| AUTOCHECKBOX
  	    {
  	      default_style = BS_AUTOCHECKBOX | WS_TABSTOP;
  	      base_style = BS_AUTOCHECKBOX;
  	      class = CTL_BUTTON;
  	    }
  	    control_params
  	  {
! 	    $$ = $3;
  	  }
! 	| AUTORADIOBUTTON
  	    {
  	      default_style = BS_AUTORADIOBUTTON | WS_TABSTOP;
  	      base_style = BS_AUTORADIOBUTTON;
  	      class = CTL_BUTTON;
  	    }
  	    control_params
  	  {
! 	    $$ = $3;
  	  }
! 	| BEDIT
  	    {
  	      default_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
  	      base_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
  	      class = CTL_EDIT;
  	    }
  	    control_params
  	  {
! 	    $$ = $3;
  	    if (dialog.ex == NULL)
  	      rcparse_warning (_("BEDIT requires DIALOGEX"));
  	    res_string_to_id (&$$->class, "BEDIT");
  	  }
! 	| CHECKBOX
  	    {
  	      default_style = BS_CHECKBOX | WS_TABSTOP;
  	      base_style = BS_CHECKBOX | WS_TABSTOP;
  	      class = CTL_BUTTON;
  	    }
  	    control_params
  	  {
! 	    $$ = $3;
  	  }
  	| COMBOBOX
  	    {
  	      default_style = CBS_SIMPLE | WS_TABSTOP;
  	      base_style = 0;
  	      class = CTL_COMBOBOX;
  	    }
  	    control_params
  	  {
--- 538,609 ----
  	;
  
  control:
! 	  AUTO3STATE optresidc
  	    {
  	      default_style = BS_AUTO3STATE | WS_TABSTOP;
  	      base_style = BS_AUTO3STATE;
  	      class = CTL_BUTTON;
+ 	      res_text_field = $2;	
  	    }
  	    control_params
  	  {
! 	    $$ = $4;
  	  }
! 	| AUTOCHECKBOX optresidc
  	    {
  	      default_style = BS_AUTOCHECKBOX | WS_TABSTOP;
  	      base_style = BS_AUTOCHECKBOX;
  	      class = CTL_BUTTON;
+ 	      res_text_field = $2;	
  	    }
  	    control_params
  	  {
! 	    $$ = $4;
  	  }
! 	| AUTORADIOBUTTON optresidc
  	    {
  	      default_style = BS_AUTORADIOBUTTON | WS_TABSTOP;
  	      base_style = BS_AUTORADIOBUTTON;
  	      class = CTL_BUTTON;
+ 	      res_text_field = $2;	
  	    }
  	    control_params
  	  {
! 	    $$ = $4;
  	  }
! 	| BEDIT optresidc
  	    {
  	      default_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
  	      base_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
  	      class = CTL_EDIT;
+ 	      res_text_field = $2;	
  	    }
  	    control_params
  	  {
! 	    $$ = $4;
  	    if (dialog.ex == NULL)
  	      rcparse_warning (_("BEDIT requires DIALOGEX"));
  	    res_string_to_id (&$$->class, "BEDIT");
  	  }
! 	| CHECKBOX optresidc
  	    {
  	      default_style = BS_CHECKBOX | WS_TABSTOP;
  	      base_style = BS_CHECKBOX | WS_TABSTOP;
  	      class = CTL_BUTTON;
+ 	      res_text_field = $2;	
  	    }
  	    control_params
  	  {
! 	    $$ = $4;
  	  }
  	| COMBOBOX
  	    {
+ 	      /* This is as per MSDN documentation.  With some (???)
+ 		 versions of MS rc.exe, there is no default style.  */
  	      default_style = CBS_SIMPLE | WS_TABSTOP;
  	      base_style = 0;
  	      class = CTL_COMBOBOX;
+ 	      res_text_field = res_null_text;	
  	    }
  	    control_params
  	  {
*************** control:
*** 640,694 ****
  	    $$->class.named = 1;
    	    unicode_from_ascii (&$$->class.u.n.length, &$$->class.u.n.name, $5);
  	  }
! 	| CTEXT
  	    {
  	      default_style = SS_CENTER | WS_GROUP;
  	      base_style = SS_CENTER;
  	      class = CTL_STATIC;
  	    }
  	    control_params
  	  {
! 	    $$ = $3;
  	  }
! 	| DEFPUSHBUTTON
  	    {
  	      default_style = BS_DEFPUSHBUTTON | WS_TABSTOP;
  	      base_style = BS_DEFPUSHBUTTON | WS_TABSTOP;
  	      class = CTL_BUTTON;
  	    }
  	    control_params
  	  {
! 	    $$ = $3;
  	  }
  	| EDITTEXT
  	    {
  	      default_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
  	      base_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
  	      class = CTL_EDIT;
  	    }
  	    control_params
  	  {
  	    $$ = $3;
  	  }
! 	| GROUPBOX
  	    {
  	      default_style = BS_GROUPBOX;
  	      base_style = BS_GROUPBOX;
  	      class = CTL_BUTTON;
  	    }
  	    control_params
  	  {
! 	    $$ = $3;
  	  }
! 	| HEDIT
  	    {
  	      default_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
  	      base_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
  	      class = CTL_EDIT;
  	    }
  	    control_params
  	  {
! 	    $$ = $3;
  	    if (dialog.ex == NULL)
  	      rcparse_warning (_("IEDIT requires DIALOGEX"));
  	    res_string_to_id (&$$->class, "HEDIT");
--- 653,712 ----
  	    $$->class.named = 1;
    	    unicode_from_ascii (&$$->class.u.n.length, &$$->class.u.n.name, $5);
  	  }
! 	| CTEXT optresidc
  	    {
  	      default_style = SS_CENTER | WS_GROUP;
  	      base_style = SS_CENTER;
  	      class = CTL_STATIC;
+ 	      res_text_field = $2;	
  	    }
  	    control_params
  	  {
! 	    $$ = $4;
  	  }
! 	| DEFPUSHBUTTON optresidc
  	    {
  	      default_style = BS_DEFPUSHBUTTON | WS_TABSTOP;
  	      base_style = BS_DEFPUSHBUTTON | WS_TABSTOP;
  	      class = CTL_BUTTON;
+ 	      res_text_field = $2;	
  	    }
  	    control_params
  	  {
! 	    $$ = $4;
  	  }
  	| EDITTEXT
  	    {
  	      default_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
  	      base_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
  	      class = CTL_EDIT;
+ 	      res_text_field = res_null_text;	
  	    }
  	    control_params
  	  {
  	    $$ = $3;
  	  }
! 	| GROUPBOX optresidc
  	    {
  	      default_style = BS_GROUPBOX;
  	      base_style = BS_GROUPBOX;
  	      class = CTL_BUTTON;
+ 	      res_text_field = $2;	
  	    }
  	    control_params
  	  {
! 	    $$ = $4;
  	  }
! 	| HEDIT optresidc
  	    {
  	      default_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
  	      base_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
  	      class = CTL_EDIT;
+ 	      res_text_field = $2;	
  	    }
  	    control_params
  	  {
! 	    $$ = $4;
  	    if (dialog.ex == NULL)
  	      rcparse_warning (_("IEDIT requires DIALOGEX"));
  	    res_string_to_id (&$$->class, "HEDIT");
*************** control:
*** 716,730 ****
  	    $$ = define_icon_control ($2, $3, $4, $5, style, $9, $10, $11,
  				      dialog.ex);
            }
! 	| IEDIT
  	    {
  	      default_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
  	      base_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
  	      class = CTL_EDIT;
  	    }
  	    control_params
  	  {
! 	    $$ = $3;
  	    if (dialog.ex == NULL)
  	      rcparse_warning (_("IEDIT requires DIALOGEX"));
  	    res_string_to_id (&$$->class, "IEDIT");
--- 734,749 ----
  	    $$ = define_icon_control ($2, $3, $4, $5, style, $9, $10, $11,
  				      dialog.ex);
            }
! 	| IEDIT optresidc
  	    {
  	      default_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
  	      base_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
  	      class = CTL_EDIT;
+ 	      res_text_field = $2;	
  	    }
  	    control_params
  	  {
! 	    $$ = $4;
  	    if (dialog.ex == NULL)
  	      rcparse_warning (_("IEDIT requires DIALOGEX"));
  	    res_string_to_id (&$$->class, "IEDIT");
*************** control:
*** 734,755 ****
  	      default_style = LBS_NOTIFY | WS_BORDER;
  	      base_style = LBS_NOTIFY | WS_BORDER;
  	      class = CTL_LISTBOX;
  	    }
  	    control_params
  	  {
  	    $$ = $3;
  	  }
! 	| LTEXT
  	    {
  	      default_style = SS_LEFT | WS_GROUP;
  	      base_style = SS_LEFT;
  	      class = CTL_STATIC;
  	    }
  	    control_params
  	  {
! 	    $$ = $3;
  	  }
! 	| PUSHBOX
  	    {
  	      default_style = BS_PUSHBOX | WS_TABSTOP;
  	      base_style = BS_PUSHBOX;
--- 753,776 ----
  	      default_style = LBS_NOTIFY | WS_BORDER;
  	      base_style = LBS_NOTIFY | WS_BORDER;
  	      class = CTL_LISTBOX;
+ 	      res_text_field = res_null_text;	
  	    }
  	    control_params
  	  {
  	    $$ = $3;
  	  }
! 	| LTEXT optresidc
  	    {
  	      default_style = SS_LEFT | WS_GROUP;
  	      base_style = SS_LEFT;
  	      class = CTL_STATIC;
+ 	      res_text_field = $2;	
  	    }
  	    control_params
  	  {
! 	    $$ = $4;
  	  }
! 	| PUSHBOX optresidc
  	    {
  	      default_style = BS_PUSHBOX | WS_TABSTOP;
  	      base_style = BS_PUSHBOX;
*************** control:
*** 757,813 ****
  	    }
  	    control_params
  	  {
! 	    $$ = $3;
  	  }
! 	| PUSHBUTTON
  	    {
  	      default_style = BS_PUSHBUTTON | WS_TABSTOP;
  	      base_style = BS_PUSHBUTTON | WS_TABSTOP;
  	      class = CTL_BUTTON;
  	    }
  	    control_params
  	  {
! 	    $$ = $3;
  	  }
! 	| RADIOBUTTON
  	    {
  	      default_style = BS_RADIOBUTTON | WS_TABSTOP;
  	      base_style = BS_RADIOBUTTON;
  	      class = CTL_BUTTON;
  	    }
  	    control_params
  	  {
! 	    $$ = $3;
  	  }
! 	| RTEXT
  	    {
  	      default_style = SS_RIGHT | WS_GROUP;
  	      base_style = SS_RIGHT;
  	      class = CTL_STATIC;
  	    }
  	    control_params
  	  {
! 	    $$ = $3;
  	  }
  	| SCROLLBAR
  	    {
  	      default_style = SBS_HORZ;
  	      base_style = 0;
  	      class = CTL_SCROLLBAR;
  	    }
  	    control_params
  	  {
  	    $$ = $3;
  	  }
! 	| STATE3
  	    {
  	      default_style = BS_3STATE | WS_TABSTOP;
  	      base_style = BS_3STATE;
  	      class = CTL_BUTTON;
  	    }
  	    control_params
  	  {
! 	    $$ = $3;
  	  }
  	| USERBUTTON resref numexpr ',' numexpr ',' numexpr ','
  	    numexpr ',' numexpr ',' 
--- 778,839 ----
  	    }
  	    control_params
  	  {
! 	    $$ = $4;
  	  }
! 	| PUSHBUTTON optresidc
  	    {
  	      default_style = BS_PUSHBUTTON | WS_TABSTOP;
  	      base_style = BS_PUSHBUTTON | WS_TABSTOP;
  	      class = CTL_BUTTON;
+ 	      res_text_field = $2;	
  	    }
  	    control_params
  	  {
! 	    $$ = $4;
  	  }
! 	| RADIOBUTTON optresidc
  	    {
  	      default_style = BS_RADIOBUTTON | WS_TABSTOP;
  	      base_style = BS_RADIOBUTTON;
  	      class = CTL_BUTTON;
+ 	      res_text_field = $2;	
  	    }
  	    control_params
  	  {
! 	    $$ = $4;
  	  }
! 	| RTEXT optresidc
  	    {
  	      default_style = SS_RIGHT | WS_GROUP;
  	      base_style = SS_RIGHT;
  	      class = CTL_STATIC;
+ 	      res_text_field = $2;	
  	    }
  	    control_params
  	  {
! 	    $$ = $4;
  	  }
  	| SCROLLBAR
  	    {
  	      default_style = SBS_HORZ;
  	      base_style = 0;
  	      class = CTL_SCROLLBAR;
+ 	      res_text_field = res_null_text;	
  	    }
  	    control_params
  	  {
  	    $$ = $3;
  	  }
! 	| STATE3 optresidc
  	    {
  	      default_style = BS_3STATE | WS_TABSTOP;
  	      base_style = BS_3STATE;
  	      class = CTL_BUTTON;
+ 	      res_text_field = $2;	
  	    }
  	    control_params
  	  {
! 	    $$ = $4;
  	  }
  	| USERBUTTON resref numexpr ',' numexpr ',' numexpr ','
  	    numexpr ',' numexpr ',' 
*************** control:
*** 827,863 ****
     style.  CLASS is the class of the control.  */
  
  control_params:
! 	  optresidc numexpr cnumexpr cnumexpr cnumexpr cnumexpr
! 	    opt_control_data
  	  {
! 	    $$ = define_control ($1, $2, $3, $4, $5, $6, class,
  				 default_style | WS_CHILD | WS_VISIBLE, 0);
! 	    if ($7 != NULL)
  	      {
  		if (dialog.ex == NULL)
  		  rcparse_warning (_("control data requires DIALOGEX"));
! 		$$->data = $7;
  	      }
  	  }
! 	| optresidc numexpr cnumexpr cnumexpr cnumexpr cnumexpr
  	    control_params_styleexpr optcnumexpr opt_control_data
  	  {
! 	    $$ = define_control ($1, $2, $3, $4, $5, $6, class, style, $8);
! 	    if ($9 != NULL)
  	      {
  		if (dialog.ex == NULL)
  		  rcparse_warning (_("control data requires DIALOGEX"));
! 		$$->data = $9;
  	      }
  	  }
! 	| optresidc numexpr cnumexpr cnumexpr cnumexpr cnumexpr
  	    control_params_styleexpr cnumexpr cnumexpr opt_control_data
  	  {
! 	    $$ = define_control ($1, $2, $3, $4, $5, $6, class, style, $8);
  	    if (dialog.ex == NULL)
  	      rcparse_warning (_("help ID requires DIALOGEX"));
! 	    $$->help = $9;
! 	    $$->data = $10;
  	  }
  	;
  
--- 853,888 ----
     style.  CLASS is the class of the control.  */
  
  control_params:
! 	  numexpr cnumexpr cnumexpr cnumexpr cnumexpr opt_control_data
  	  {
! 	    $$ = define_control (res_text_field, $1, $2, $3, $4, $5, class,
  				 default_style | WS_CHILD | WS_VISIBLE, 0);
! 	    if ($6 != NULL)
  	      {
  		if (dialog.ex == NULL)
  		  rcparse_warning (_("control data requires DIALOGEX"));
! 		$$->data = $6;
  	      }
  	  }
! 	| numexpr cnumexpr cnumexpr cnumexpr cnumexpr
  	    control_params_styleexpr optcnumexpr opt_control_data
  	  {
! 	    $$ = define_control (res_text_field, $1, $2, $3, $4, $5, class, style, $7);
! 	    if ($8 != NULL)
  	      {
  		if (dialog.ex == NULL)
  		  rcparse_warning (_("control data requires DIALOGEX"));
! 		$$->data = $8;
  	      }
  	  }
! 	| numexpr cnumexpr cnumexpr cnumexpr cnumexpr
  	    control_params_styleexpr cnumexpr cnumexpr opt_control_data
  	  {
! 	    $$ = define_control (res_text_field, $1, $2, $3, $4, $5, class, style, $7);
  	    if (dialog.ex == NULL)
  	      rcparse_warning (_("help ID requires DIALOGEX"));
! 	    $$->help = $8;
! 	    $$->data = $9;
  	  }
  	;
  
Index: resrc.c
===================================================================
RCS file: /cvs/src/src/binutils/resrc.c,v
retrieving revision 1.21
diff -c -3 -p -r1.21 resrc.c
*** resrc.c	31 Mar 2003 10:15:58 -0000	1.21
--- resrc.c	27 Jun 2003 02:32:22 -0000
*************** define_dialog (id, resinfo, dialog)
*** 819,825 ****
  
  struct dialog_control *
  define_control (iid, id, x, y, width, height, class, style, exstyle)
!      struct res_id iid;
       unsigned long id;
       unsigned long x;
       unsigned long y;
--- 819,825 ----
  
  struct dialog_control *
  define_control (iid, id, x, y, width, height, class, style, exstyle)
!      const struct res_id iid;
       unsigned long id;
       unsigned long x;
       unsigned long y;
Index: windres.h
===================================================================
RCS file: /cvs/src/src/binutils/windres.h,v
retrieving revision 1.9
diff -c -3 -p -r1.9 windres.h
*** windres.h	31 Mar 2003 10:15:58 -0000	1.9
--- windres.h	27 Jun 2003 02:32:24 -0000
*************** extern void define_cursor
*** 814,820 ****
  extern void define_dialog
    PARAMS ((struct res_id, const struct res_res_info *, const struct dialog *));
  extern struct dialog_control *define_control
!   PARAMS ((struct res_id, unsigned long, unsigned long, unsigned long,
  	   unsigned long, unsigned long, unsigned long, unsigned long,
  	   unsigned long));
  extern struct dialog_control *define_icon_control
--- 814,820 ----
  extern void define_dialog
    PARAMS ((struct res_id, const struct res_res_info *, const struct dialog *));
  extern struct dialog_control *define_control
!   PARAMS ((const struct res_id, unsigned long, unsigned long, unsigned long,
  	   unsigned long, unsigned long, unsigned long, unsigned long,
  	   unsigned long));
  extern struct dialog_control *define_icon_control
*** /dev/null	Fri Jun 27 05:42:27 2003
--- testsuite/binutils-all/windres/checkbox.rc	Fri Jun 27 05:11:20 2003
***************
*** 0 ****
--- 1,4 ----
+ 501 DIALOG DISCARDABLE  0, 0, 168, 137
+ BEGIN
+   CHECKBOX     "tick me", 1001, 28, 63, 137, 52
+ END
*** /dev/null	Fri Jun 27 05:42:28 2003
--- testsuite/binutils-all/windres/checkbox.rsd	Fri Jun 27 05:11:28 2003
***************
*** 0 ****
--- 1,8 ----
+  0000 00000000 20000000 ffff0000 ffff0000  .... ...........
+  0010 00000000 00000000 00000000 00000000  ................
+  0020 40000000 20000000 ffff0500 fffff501  @... ...........
+  0030 00000000 30100904 00000000 00000000  ....0...........
+  0040 00008880 00000000 01000000 0000a800  ................
+  0050 89000000 00000000 02000150 00000000  ...........P....
+  0060 1c003f00 89003400 e903ffff 80007400  ..?...4.......t.
+  0070 69006300 6b002000 6d006500 00000000  i.c.k. .m.e.....
*** /dev/null	Fri Jun 27 05:42:28 2003
--- testsuite/binutils-all/windres/combobox.rc	Sat Jun 21 11:32:53 2003
***************
*** 0 ****
--- 1,8 ----
+ #define CBS_SIMPLE 0x1
+ #define WS_TABSTOP 0x10000
+ 
+ 501 DIALOG DISCARDABLE  0, 0, 168, 137
+ BEGIN
+     COMBOBOX        1001,10,10,50,54, CBS_SIMPLE | WS_TABSTOP
+ END
+ 
*** /dev/null	Fri Jun 27 05:42:28 2003
--- testsuite/binutils-all/windres/combobox.rsd	Fri Jun 27 05:11:30 2003
***************
*** 0 ****
--- 1,8 ----
+  0000 00000000 20000000 ffff0000 ffff0000  .... ...........
+  0010 00000000 00000000 00000000 00000000  ................
+  0020 32000000 20000000 ffff0500 fffff501  2... ...........
+  0030 00000000 30100904 00000000 00000000  ....0...........
+  0040 00008880 00000000 01000000 0000a800  ................
+  0050 89000000 00000000 01000150 00000000  ...........P....
+  0060 0a000a00 32003600 e903ffff 85000000  ....2.6.........
+  0070 00000000                             ....            
*** /dev/null	Fri Jun 27 05:42:28 2003
--- testsuite/binutils-all/windres/edittext.rc	Sat Jun 21 08:30:53 2003
***************
*** 0 ****
--- 1,4 ----
+ 501 DIALOG DISCARDABLE  0, 0, 168, 137
+ BEGIN
+   EDITTEXT      1001, 28, 63, 137, 52
+ END
*** /dev/null	Fri Jun 27 05:42:28 2003
--- testsuite/binutils-all/windres/edittext.rsd	Fri Jun 27 05:11:37 2003
***************
*** 0 ****
--- 1,8 ----
+  0000 00000000 20000000 ffff0000 ffff0000  .... ...........
+  0010 00000000 00000000 00000000 00000000  ................
+  0020 32000000 20000000 ffff0500 fffff501  2... ...........
+  0030 00000000 30100904 00000000 00000000  ....0...........
+  0040 00008880 00000000 01000000 0000a800  ................
+  0050 89000000 00000000 00008150 00000000  ...........P....
+  0060 1c003f00 89003400 e903ffff 81000000  ..?...4.........
+  0070 00000000                             ....            
*** /dev/null	Fri Jun 27 05:42:28 2003
--- testsuite/binutils-all/windres/listbox.rc	Sat Jun 21 08:35:18 2003
***************
*** 0 ****
--- 1,4 ----
+ 501 DIALOG DISCARDABLE  0, 0, 168, 137
+ BEGIN
+   LISTBOX     1001, 28, 63, 137, 52
+ END
*** /dev/null	Fri Jun 27 05:42:28 2003
--- testsuite/binutils-all/windres/listbox.rsd	Fri Jun 27 05:11:42 2003
***************
*** 0 ****
--- 1,8 ----
+  0000 00000000 20000000 ffff0000 ffff0000  .... ...........
+  0010 00000000 00000000 00000000 00000000  ................
+  0020 32000000 20000000 ffff0500 fffff501  2... ...........
+  0030 00000000 30100904 00000000 00000000  ....0...........
+  0040 00008880 00000000 01000000 0000a800  ................
+  0050 89000000 00000000 01008050 00000000  ...........P....
+  0060 1c003f00 89003400 e903ffff 83000000  ..?...4.........
+  0070 00000000                             ....            
*** /dev/null	Fri Jun 27 05:42:28 2003
--- testsuite/binutils-all/windres/scrollbar.rc	Thu Jun 26 08:52:54 2003
***************
*** 0 ****
--- 1,4 ----
+ 501 DIALOGEX 0, 0, 168, 137
+ BEGIN
+     SCROLLBAR       1001,43,68,105,10,0,0,0x81f503e9
+ END
*** /dev/null	Fri Jun 27 05:42:28 2003
--- testsuite/binutils-all/windres/scrollbar.rsd	Fri Jun 27 05:11:46 2003
***************
*** 0 ****
--- 1,8 ----
+  0000 00000000 20000000 ffff0000 ffff0000  .... ...........
+  0010 00000000 00000000 00000000 00000000  ................
+  0020 40000000 20000000 ffff0500 fffff501  @... ...........
+  0030 00000000 30100904 00000000 00000000  ....0...........
+  0040 0100ffff 00000000 00000000 00008880  ................
+  0050 01000000 0000a800 89000000 00000000  ................
+  0060 e903f581 00000000 00000050 2b004400  ...........P+.D.
+  0070 69000a00 e9030000 ffff8400 00000000  i...............


http://mobile.yahoo.com.au - Yahoo! Mobile
- Check & compose your email via SMS on your Telstra or Vodafone mobile.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]