Thank you very much for this code. I will try to test it, although I am not sure that I know how to apply that patch.
Teddy ----- Original Message ----- From: "Kind, Uwe (AGIS)" <[EMAIL PROTECTED]> To: <perl-win32-gui-users@lists.sourceforge.net> Sent: Sunday, October 29, 2006 1:35 AM Subject: Re: [perl-win32-gui-users] Combobox > Hi Teddy, > > try the following: > > ------------------------------------------------------------------------ > ---- > #!perl -w > > use Win32::GUI ( 'WM_COMMAND' ); > > my $mw = new Win32::GUI::Window > ( -name => 'mw', > -left => 100, > -top => 100, > -width => 300, > -height => 100, > -title => 'CBTest', > ); > > my $cb= $mw -> AddCombobox > ( -name => 'cb', > -left => 10, > -top => 20, > -width => $mw -> ScaleWidth () - 20, > -height => 200, > > -disablenoscroll => 200, > -dropdown => 1, > -vscroll => 1, > ); > > my $cb_event = sub > { > my $self = shift (); > > if ( $_ [ 0 ] == 0x40003E9 ) > { > my $text = $self -> Text (); > my $match = $self -> FindString ( $text ); > > if ( $match >= 0 ) > { > $self -> Text ( $self -> GetString ( $match ) ); > $self -> SetEditSel ( length ( $text ), -1 ); > } > } > return ( 1 ); > }; > > $cb -> Hook ( WM_COMMAND, $cb_event ); > $cb -> SetFocus (); > > for ( 65 .. 90 ) > { > $cb -> AddString ( chr ( $_ ) . ' Test' ); > } > > $mw -> Show (); > Win32::GUI::Dialog (); > ------------------------------------------------------------------------ > ---- > > It won't work from the scratch because of an bug in SetEditSel, so > Combobox > has to be patched first: > > ------------------------------------------------------------------------ > ---- > > XS(XS_Win32__GUI__Combobox_SetEditSel) > { > dXSARGS; > if (items != 3) > Perl_croak(aTHX_ "Usage: > Win32::GUI::Combobox::SetEditSel(handle, start, end)"); > { > HWND handle; > WPARAM start = (WPARAM)SvIV(ST(1)); > WPARAM end = (WPARAM)SvIV(ST(2)); > LPARAM sel = end * 0x10000 + start; /* added */ > > LRESULT RETVAL; > dXSTARG; > > if(SvROK(ST(0))) { > SV** out=hv_fetch((HV*)SvRV(ST(0)), "-handle", 7, 0); > if(out != NULL) > handle = INT2PTR(HWND,SvIV(*out)); > else > handle = NULL; > } else > handle = INT2PTR(HWND,SvIV(ST(0))); > #line 561 "Combobox.xs" > / * RETVAL = SendMessage(handle, CB_SETEDITSEL, start, (LPARAM) > end); */ > RETVAL = SendMessage(handle, CB_SETEDITSEL, 0, sel); /* changed */ > #line 984 "Combobox.c" > XSprePUSH; PUSHi((IV)RETVAL); > } > XSRETURN(1); > } > > ------------------------------------------------------------------------ > ---- > > Furthermore You should handle Del and Backspace or it won't possible to > enter a string like 'A Te' because it's always expanded to 'A Test'. > > Regards, Uwe > > ------------------------------------------------------------------------- > Using Tomcat but need to do more? Need to support web services, security? > Get stuff done quickly with pre-integrated technology to make your job easier > Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo > http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 > _______________________________________________ > Perl-Win32-GUI-Users mailing list > Perl-Win32-GUI-Users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/perl-win32-gui-users > http://perl-win32-gui.sourceforge.net/