From: <leo...@us...> - 2005-05-10 18:52:48
|
Thank you everyone for the replies to my Right Click problems, the issue is now solved. However, I am having a couple more issues that I can not figure out how to get around. The first issue is a known one, and it concerns a crash with RichEdit on 1.0 when exiting the application. I have created Global vars for the RichEdit controls, but I still get a crash on exit, so I'm not sure what i'm doing wrong. The next issue concerns a couple buttons that I have created and when I go to click on them the program just hangs. I tried adding a BusyTimer to make sure that the program was hanging and the BusyTimer stopped spewing out information, so I know it hung. Anyway, I have included some code below in hopes that someone can help me fix these issues. Please let me know if you need any more information and I will gladly include it. Thanks. Len. --------------------------[ Begin Code ]------------------------------- use strict; use Win32::GUI; use Win32::GUI::TabFrame; my $mainwindow; my $richedit_1; my $richedit_2; create_mainwindow(); $mainwindow -> Show; Win32::GUI::Dialog(); sub create_mainwindow { my $windowheight = 400; my $windowwidth = 700; my $windowmenu; $windowmenu = Win32::GUI::MakeMenu ( "Item &1" => "", " > SubItem &1" => "Item1SubItem1", " > SubItem &2" => "Item1SubItem2", " > SubItem &3" => "Item1SubItem3", " > -" => 0, " > E&xit" => "AppExit", "Item &2" => "", " > SubItem &1" => "Item2SubItem1", ); $mainwindow = Win32::GUI::Window -> new ( -name => "Main", -width => $windowwidth, -height => $windowheight, -title => "Main Window", -menu => $windowmenu, ); $mainwindow -> AddStatusBar ( -name => "StatusBar" ); $mainwindow -> AddTreeView ( -text => "", -name => "TreeView", -left => -1, -top => -1, -rootlines => 1, -buttons => 1, ); $mainwindow -> AddTabFrame ( -name => "TabFrame", -panel => "TabPage", -tabstop => 1, ); $mainwindow -> TabFrame -> InsertItem ( -text => "Tab1", -border => 1, ); $mainwindow -> TabFrame -> InsertItem ( -text => "Tab2", -border => 1, ); $mainwindow -> TabFrame -> InsertItem ( -text => "Tab3", -border => 1, ); $mainwindow -> TabFrame -> InsertItem ( -text => "Tab4", -border => 1, ); $richedit_1 = $mainwindow -> TabFrame -> TabPage0 -> AddRichEdit ( -name => "RichEdit1", -multiline => 1, -vscroll => 1, -hscroll => 1, -readonly => 1, ); $richedit_2 = $mainwindow -> TabFrame -> TabPage1 -> AddRichEdit ( -name => "RichEdit2", -multiline => 1, -vscroll => 1, -readonly => 1, ); $mainwindow -> TabFrame -> TabPage2 -> AddListView ( -name => "ListView1", -style => WS_CHILD | WS_VISIBLE | WS_VSCROLL | 1, -fullrowselect => 1, ); $mainwindow -> TabFrame -> TabPage2 -> ListView1 -> InsertColumn ( -index => 0, -width => 220, -text => "Column 1", ); $mainwindow -> TabFrame -> TabPage2 -> ListView1 -> InsertColumn ( -index => 1, -width => 220, -text => "Column 2", ); $mainwindow -> TabFrame -> TabPage2 -> AddButton ( -name => "Button1", -text => "Button 1", -default => 1, -tabstop => 1, ); $mainwindow -> TabFrame -> TabPage2 -> AddButton ( -name => "Button2", -text => "Button 2", -tabstop => 1, ); $mainwindow -> TabFrame -> TabPage3 -> AddListView ( -name => "ListView2", -style => WS_CHILD | WS_VISIBLE | WS_VSCROLL | 1, -fullrowselect => 1, ); $mainwindow -> TabFrame -> TabPage3 -> ListView2 -> InsertColumn ( -index => 0, -width => 125, -text => "Column1", ); $mainwindow -> TabFrame -> TabPage3 -> ListView2 -> InsertColumn ( -index => 1, -width => 50, -text => "Column2", ); $mainwindow -> TabFrame -> TabPage3 -> ListView2 -> InsertColumn ( -index => 2, -width => 200, -text => "Column3", ); $mainwindow -> TabFrame -> TabPage3 -> ListView2 -> InsertColumn ( -index => 3, -width => 200, -text => "Column4", ); $mainwindow -> {-dialogui} = 1; } sub Button1_Click { print "DEBUG - Button 1 was Clicked\n"; } sub Button2_Click { print "DEBUG - Button 2 was Clicked\n"; } sub AppExit_Click { Main_Terminate(); } sub Main_Terminate { $mainwindow -> Hide(); exit 0; } sub Main_Resize { my $windowheight = $mainwindow -> ScaleHeight(); my $windowwidth = $mainwindow -> ScaleWidth(); my $treeview_width = 200; $mainwindow -> TreeView -> Move (0, 0); $mainwindow -> TreeView -> Resize ($treeview_width, $windowheight - $mainwindow -> StatusBar -> ScaleHeight); $mainwindow -> TabFrame -> Move ($treeview_width, 0); $mainwindow -> TabFrame -> Resize ($windowwidth - $treeview_width, $windowheight - $mainwindow -> StatusBar -> ScaleHeight); $mainwindow -> TabFrame -> TabPage0 -> RichEdit1 -> Move (0, 0); $mainwindow -> TabFrame -> TabPage0 -> RichEdit1 -> Resize ($mainwindow -> TabFrame -> TabPage0 -> ScaleWidth, $mainwindow -> TabFrame -> TabPage0 -> ScaleHeight); $mainwindow -> TabFrame -> TabPage1 -> RichEdit2 -> Move (0, 0); $mainwindow -> TabFrame -> TabPage1 -> RichEdit2 -> Resize ($mainwindow -> TabFrame -> TabPage0 -> ScaleWidth, $mainwindow -> TabFrame -> TabPage0 -> ScaleHeight); $mainwindow -> TabFrame -> TabPage2 -> ListView1 -> Move (0, 0); $mainwindow -> TabFrame -> TabPage2 -> ListView1 -> Resize ($mainwindow -> TabFrame -> TabPage2 -> ScaleWidth, $mainwindow -> TabFrame -> TabPage2 -> ScaleHeight - 40 ); $mainwindow -> TabFrame -> TabPage2 -> Button1 -> Move ($mainwindow -> TabFrame -> TabPage2 -> ScaleWidth / 2 - 70, $mainwindow -> TabFrame -> TabPage2 -> ScaleHeight - 30); $mainwindow -> TabFrame -> TabPage2 -> Button2 -> Move ($mainwindow -> TabFrame -> TabPage2 -> ScaleWidth / 2 , $mainwindow -> TabFrame -> TabPage2 -> ScaleHeight - 30); $mainwindow -> TabFrame -> TabPage3 -> ListView2 -> Move (0, 0); $mainwindow -> TabFrame -> TabPage3 -> ListView2 -> Resize ($mainwindow -> TabFrame -> TabPage3 -> ScaleWidth, $mainwindow -> TabFrame -> TabPage3 -> ScaleHeight); $mainwindow -> StatusBar -> Move (0, $windowheight - $mainwindow -> StatusBar -> Height); $mainwindow -> StatusBar -> Resize ($windowwidth, $mainwindow -> StatusBar -> Height); } --------------------------[ End Code ]------------------------------- ------------------------------------------------------------------------------ Electronic Privacy Notice. This e-mail, and any attachments, contains information that is, or may be, covered by electronic communications privacy laws, and is also confidential and proprietary in nature. If you are not the intended recipient, please be advised that you are legally prohibited from retaining, using, copying, distributing, or otherwise disclosing this information in any manner. Instead, please reply to the sender that you have received this communication in error, and then immediately delete it. Thank you in advance for your cooperation. ============================================================================== |
From: Ariel S. <as...@ya...> - 2005-05-10 19:48:25
|
I had the same issue today with the richedit crashing. I found a post somewhere that said to call the richedit's DESTROY method before terminating. That worked for me. My code looks like this: sub Window_Terminate { $re->DESTROY; -1;} -Ariel --- leo...@us... wrote: > Thank you everyone for the replies to my Right Click > problems, the issue > is now solved. However, I am having a couple more > issues that I can not > figure out how to get around. > > The first issue is a known one, and it concerns a > crash with RichEdit on > 1.0 when exiting the application. I have created > Global vars for the > RichEdit controls, but I still get a crash on exit, > so I'm not sure what > i'm doing wrong. > > The next issue concerns a couple buttons that I have > created and when I go > to click on them the program just hangs. I tried > adding a BusyTimer to > make sure that the program was hanging and the > BusyTimer stopped spewing > out information, so I know it hung. > > Anyway, I have included some code below in hopes > that someone can help me > fix these issues. Please let me know if you need > any more information and > I will gladly include it. > > Thanks. > > Len. > > --------------------------[ Begin Code > ]------------------------------- > > use strict; > > use Win32::GUI; > use Win32::GUI::TabFrame; > > my $mainwindow; > > my $richedit_1; > my $richedit_2; > > create_mainwindow(); > > $mainwindow -> Show; > > Win32::GUI::Dialog(); > > sub create_mainwindow { > my $windowheight = 400; > my $windowwidth = 700; > my $windowmenu; > > $windowmenu = Win32::GUI::MakeMenu ( > "Item &1" > => "", > " > SubItem &1" > => > "Item1SubItem1", > " > SubItem &2" > => > "Item1SubItem2", > " > SubItem &3" > => > "Item1SubItem3", > " > -" > => 0, > " > E&xit" > => "AppExit", > "Item &2" > => "", > " > SubItem &1" > => > "Item2SubItem1", > ); > > $mainwindow = Win32::GUI::Window -> new ( > -name => "Main", > -width => $windowwidth, > -height => $windowheight, > -title => "Main Window", > -menu => $windowmenu, > ); > > $mainwindow -> AddStatusBar ( > -name => "StatusBar" > ); > > $mainwindow -> AddTreeView ( > -text => "", > -name => "TreeView", > -left => -1, > -top => -1, > -rootlines => 1, > -buttons => 1, > ); > > $mainwindow -> AddTabFrame ( > -name => "TabFrame", > -panel => "TabPage", > -tabstop => 1, > ); > > $mainwindow -> TabFrame -> InsertItem ( > -text => "Tab1", > -border => 1, > ); > > $mainwindow -> TabFrame -> InsertItem ( > -text => "Tab2", > -border => 1, > ); > > $mainwindow -> TabFrame -> InsertItem ( > -text => "Tab3", > -border => 1, > ); > > $mainwindow -> TabFrame -> InsertItem ( > -text => "Tab4", > -border => 1, > ); > > $richedit_1 = $mainwindow -> TabFrame -> > TabPage0 -> AddRichEdit ( > -name => "RichEdit1", > -multiline => 1, > -vscroll => 1, > -hscroll => 1, > -readonly => 1, > ); > > $richedit_2 = $mainwindow -> TabFrame -> > TabPage1 -> AddRichEdit ( > -name => "RichEdit2", > -multiline => 1, > -vscroll => 1, > -readonly => 1, > ); > > $mainwindow -> TabFrame -> TabPage2 -> > AddListView ( > -name => "ListView1", > -style => WS_CHILD | > WS_VISIBLE | WS_VSCROLL | 1, > -fullrowselect => 1, > ); > > $mainwindow -> TabFrame -> TabPage2 -> > ListView1 -> InsertColumn ( > -index => 0, > -width => 220, > -text => "Column 1", > ); > > $mainwindow -> TabFrame -> TabPage2 -> > ListView1 -> InsertColumn ( > -index => 1, > -width => 220, > -text => "Column 2", > ); > > $mainwindow -> TabFrame -> TabPage2 -> > AddButton ( > -name => "Button1", > -text => "Button 1", > -default => 1, > -tabstop => 1, > ); > > $mainwindow -> TabFrame -> TabPage2 -> > AddButton ( > -name => "Button2", > -text => "Button 2", > -tabstop => 1, > ); > > $mainwindow -> TabFrame -> TabPage3 -> > AddListView ( > -name => "ListView2", > -style => WS_CHILD | > WS_VISIBLE | WS_VSCROLL | 1, > -fullrowselect => 1, > ); > > $mainwindow -> TabFrame -> TabPage3 -> > ListView2 -> InsertColumn ( > -index => 0, > -width => 125, > -text => "Column1", > ); > > $mainwindow -> TabFrame -> TabPage3 -> > ListView2 -> InsertColumn ( > -index => 1, > -width => 50, > -text => "Column2", > ); > > $mainwindow -> TabFrame -> TabPage3 -> > ListView2 -> InsertColumn ( > -index => 2, > -width => 200, > -text => "Column3", > ); > > $mainwindow -> TabFrame -> TabPage3 -> > ListView2 -> InsertColumn ( > -index => 3, > -width => 200, > -text => "Column4", > ); > > $mainwindow -> {-dialogui} = 1; > > } > > > sub Button1_Click { > > print "DEBUG - Button 1 was Clicked\n"; > > } > > > sub Button2_Click { > > print "DEBUG - Button 2 was Clicked\n"; > > } > > > sub AppExit_Click { > > Main_Terminate(); > > } > > > sub Main_Terminate { > > $mainwindow -> Hide(); > > exit 0; > > } > > > sub Main_Resize { > my $windowheight = $mainwindow -> > ScaleHeight(); > my $windowwidth = $mainwindow -> > ScaleWidth(); > my $treeview_width = 200; > > $mainwindow -> TreeView -> Move (0, 0); > $mainwindow -> TreeView -> Resize > ($treeview_width, $windowheight > - $mainwindow -> StatusBar -> ScaleHeight); > > $mainwindow -> TabFrame -> Move > ($treeview_width, 0); > $mainwindow -> TabFrame -> Resize > ($windowwidth - $treeview_width, > $windowheight - $mainwindow -> StatusBar -> > ScaleHeight); > > $mainwindow -> TabFrame -> TabPage0 -> > RichEdit1 -> Move (0, 0); > $mainwindow -> TabFrame -> TabPage0 -> > RichEdit1 -> Resize > ($mainwindow -> TabFrame -> TabPage0 -> ScaleWidth, > $mainwindow -> > TabFrame -> TabPage0 -> ScaleHeight); > > $mainwindow -> TabFrame -> TabPage1 -> > RichEdit2 -> Move (0, 0); > $mainwindow -> TabFrame -> TabPage1 -> > RichEdit2 -> Resize > ($mainwindow -> TabFrame -> TabPage0 -> ScaleWidth, > $mainwindow -> > TabFrame -> TabPage0 -> ScaleHeight); > > $mainwindow -> TabFrame -> TabPage2 -> > ListView1 -> Move (0, 0); > $mainwindow -> TabFrame -> TabPage2 -> > ListView1 -> Resize > ($mainwindow -> TabFrame -> TabPage2 -> ScaleWidth, > $mainwindow -> > TabFrame -> TabPage2 -> ScaleHeight - 40 ); > $mainwindow -> TabFrame -> TabPage2 -> > Button1 -> Move > ($mainwindow -> TabFrame -> TabPage2 -> ScaleWidth / > 2 - 70, $mainwindow > -> TabFrame -> TabPage2 -> ScaleHeight - 30); > $mainwindow -> TabFrame -> TabPage2 -> > Button2 -> Move > ($mainwindow -> TabFrame -> TabPage2 -> ScaleWidth / > 2 , $mainwindow -> > TabFrame -> TabPage2 -> ScaleHeight - 30); > > $mainwindow -> TabFrame -> TabPage3 -> > ListView2 -> Move (0, 0); > $mainwindow -> TabFrame -> TabPage3 -> > ListView2 -> Resize > ($mainwindow -> TabFrame -> TabPage3 -> ScaleWidth, > $mainwindow -> > TabFrame -> TabPage3 -> ScaleHeight); > > $mainwindow -> StatusBar -> Move (0, > $windowheight - $mainwindow > -> StatusBar -> Height); > $mainwindow -> StatusBar -> Resize > ($windowwidth, $mainwindow -> > StatusBar -> Height); > > } > > --------------------------[ End Code > ]------------------------------- > > > ------------------------------------------------------------------------------ > Electronic Privacy Notice. This e-mail, and any > attachments, contains information that is, or may > be, covered by electronic communications privacy > laws, and is also confidential and proprietary in > nature. If you are not the intended recipient, > please be advised that you are legally prohibited > from retaining, using, copying, distributing, or > otherwise disclosing this information in any manner. > Instead, please reply to the sender that you have > received this communication in error, and then > immediately delete it. Thank you in advance for your > cooperation. > ============================================================================== > |
From: Jez W. <je...@je...> - 2005-05-11 08:24:58
|
Ok - Ariel's solution (calling DESTROY) on the richedit controls before = exit solves the crash for your example:) I must admit I'm a bit stumped at the button hang - I was able to = reproduce it. It must be something to do with TabFrame (probably a = scoping issue) since if the buttons are created directly on the tab = strip they work fine. I'm not to sure what to suggest - other than don't = use the TabFrame package:) Cheers, jez. ----- Original Message -----=20 From: leo...@us...=20 To: per...@li...=20 Sent: Tuesday, May 10, 2005 7:52 PM Subject: [perl-win32-gui-users] Button and RichEdit issues Thank you everyone for the replies to my Right Click problems, the = issue is now solved. However, I am having a couple more issues that I = can not figure out how to get around.=20 The first issue is a known one, and it concerns a crash with RichEdit = on 1.0 when exiting the application. I have created Global vars for the = RichEdit controls, but I still get a crash on exit, so I'm not sure what = i'm doing wrong.=20 The next issue concerns a couple buttons that I have created and when = I go to click on them the program just hangs. I tried adding a = BusyTimer to make sure that the program was hanging and the BusyTimer = stopped spewing out information, so I know it hung.=20 Anyway, I have included some code below in hopes that someone can help = me fix these issues. Please let me know if you need any more = information and I will gladly include it.=20 Thanks.=20 Len.=20 |
From: <leo...@us...> - 2005-05-11 15:32:08
|
Thank you for your replies. I tried the DESTROY solution and it did indeed work, so thank you very much :) As far as the button hang goes, the below code has the same problems, however, when you remove the StatusBar it doesnt. Its very odd and i'm not sure how to go about debugging it. I tried to remove the StatusBar from my main program, but that did not solve the issue, so I dont think it has to do with the StatusBar, but something is obviously tripping it up there. The reason I use TabFrame is because I am familiar with it, and because I cannot find any examples on how to work with TabStrip (for example, I created a TabStrip script, but could not figure out how to add widgets to it). I did find one example by searching the mailing list for "AddTabStrip", however from the example it looks like I have to hide each individual widget when changing tabs. Is this correct? I must confess though, I have spent very little time looking for TabStrip code, so I may be missing something entirely :) Anyway, if anyone has any suggestions as to what may be causing my problems, or how I could go about debugging it, they would be greatly appreciated. Thanks for all the help. Len --------------------------[ Begin Code ]------------------------------- use strict; use warnings; use Win32::GUI; use Win32::GUI::TabFrame; my $mainwindow; create_mainwindow(); $mainwindow -> Show; Win32::GUI::Dialog(); sub create_mainwindow { my $windowheight = 400; my $windowwidth = 700; my $windowmenu; $windowmenu = Win32::GUI::MakeMenu ( "Item &1" => "", " > SubItem &1" => "Item1SubItem1", " > SubItem &2" => "Item1SubItem2", " > SubItem &3" => "Item1SubItem3", " > -" => 0, " > E&xit" => "AppExit", "Item &2" => "", " > SubItem &1" => "Item2SubItem1", ); $mainwindow = Win32::GUI::Window -> new ( -name => "Main", -width => $windowwidth, -height => $windowheight, -title => "Main Window", -menu => $windowmenu, ); $mainwindow -> AddStatusBar ( -name => "StatusBar" ); $mainwindow -> AddTabFrame ( -name => "TabFrame", -panel => "TabPage", -tabstop => 1, ); $mainwindow -> TabFrame -> InsertItem ( -text => "Tab1", -border => 1, ); $mainwindow -> TabFrame -> InsertItem ( -text => "Tab2", -border => 1, ); $mainwindow -> TabFrame -> TabPage1 -> AddListView ( -name => "ListView1", -style => WS_CHILD | WS_VISIBLE | WS_VSCROLL | 1, -fullrowselect => 1, ); $mainwindow -> TabFrame -> TabPage1 -> ListView1 -> InsertColumn ( -index => 0, -width => 220, -text => "Column 1", ); $mainwindow -> TabFrame -> TabPage1 -> ListView1 -> InsertColumn ( -index => 1, -width => 220, -text => "Column 2", ); $mainwindow -> TabFrame -> TabPage1 -> AddButton ( -name => "Button1", -text => "Button 1", -default => 1, -tabstop => 1, ); $mainwindow -> TabFrame -> TabPage1 -> AddButton ( -name => "Button2", -text => "Button 2", -tabstop => 1, ); $mainwindow -> {-dialogui} = 1; } sub Button1_Click { print "DEBUG - Button 1 was Clicked\n"; } sub Button2_Click { print "DEBUG - Button 2 was Clicked\n"; } sub AppExit_Click { Main_Terminate(); } sub Main_Terminate { $mainwindow -> Hide(); exit 0; } sub Main_Resize { my $windowheight = $mainwindow -> ScaleHeight(); my $windowwidth = $mainwindow -> ScaleWidth(); my $statusbar_height = $mainwindow -> StatusBar -> Height(); $mainwindow -> TabFrame -> Move (0, 0); $mainwindow -> TabFrame -> Resize ($windowwidth, $windowheight - $statusbar_height); $mainwindow -> TabFrame -> TabPage1 -> ListView1 -> Move (0, 0); $mainwindow -> TabFrame -> TabPage1 -> ListView1 -> Resize ($mainwindow -> TabFrame -> TabPage1 -> ScaleWidth, $mainwindow -> TabFrame -> TabPage1 -> ScaleHeight - 40 ); $mainwindow -> TabFrame -> TabPage1 -> Button1 -> Move ($mainwindow -> TabFrame -> TabPage1 -> ScaleWidth / 2 - 70, $mainwindow -> TabFrame -> TabPage1 -> ScaleHeight - 30); $mainwindow -> TabFrame -> TabPage1 -> Button2 -> Move ($mainwindow -> TabFrame -> TabPage1 -> ScaleWidth / 2 , $mainwindow -> TabFrame -> TabPage1 -> ScaleHeight - 30); $mainwindow -> StatusBar -> Move (0, $windowheight - $mainwindow -> StatusBar -> Height); $mainwindow -> StatusBar -> Resize ($windowwidth, $mainwindow -> StatusBar -> Height); } --------------------------[ End Code ]------------------------------- "Jez White" <je...@je...> 05/11/2005 03:24 AM To per...@li..., leo...@us... cc Subject Re: [perl-win32-gui-users] Button and RichEdit issues Ok - Ariel's solution (calling DESTROY) on the richedit controls before exit solves the crash for your example:) I must admit I'm a bit stumped at the button hang - I was able to reproduce it. It must be something to do with TabFrame (probably a scoping issue) since if the buttons are created directly on the tab strip they work fine. I'm not to sure what to suggest - other than don't use the TabFrame package:) Cheers, jez. ------------------------------------------------------------------------------ Electronic Privacy Notice. This e-mail, and any attachments, contains information that is, or may be, covered by electronic communications privacy laws, and is also confidential and proprietary in nature. If you are not the intended recipient, please be advised that you are legally prohibited from retaining, using, copying, distributing, or otherwise disclosing this information in any manner. Instead, please reply to the sender that you have received this communication in error, and then immediately delete it. Thank you in advance for your cooperation. ============================================================================== |
From: Jez W. <je...@je...> - 2005-05-12 09:46:26
|
Ok - this might be a simple solution:) Comment out the line "$mainwindow -> {-dialogui} =3D 1;" and it = works... I dont know what this option does, so I'm not sure it this would be a = good solution for you. Cheers, jez. ----- Original Message -----=20 From: leo...@us...=20 To: Jez White=20 Cc: per...@li...=20 Sent: Wednesday, May 11, 2005 4:31 PM Subject: Re: [perl-win32-gui-users] Button and RichEdit issues Thank you for your replies.=20 I tried the DESTROY solution and it did indeed work, so thank you very = much :)=20 As far as the button hang goes, the below code has the same problems, = however, when you remove the StatusBar it doesnt. Its very odd and i'm = not sure how to go about debugging it. I tried to remove the StatusBar = from my main program, but that did not solve the issue, so I dont think = it has to do with the StatusBar, but something is obviously tripping it = up there.=20 The reason I use TabFrame is because I am familiar with it, and = because I cannot find any examples on how to work with TabStrip (for = example, I created a TabStrip script, but could not figure out how to = add widgets to it). I did find one example by searching the mailing = list for "AddTabStrip", however from the example it looks like I have to = hide each individual widget when changing tabs. Is this correct? I = must confess though, I have spent very little time looking for TabStrip = code, so I may be missing something entirely :)=20 Anyway, if anyone has any suggestions as to what may be causing my = problems, or how I could go about debugging it, they would be greatly = appreciated.=20 Thanks for all the help.=20 Len=20 --------------------------[ Begin Code = ]-------------------------------=20 use strict;=20 use warnings;=20 use Win32::GUI;=20 use Win32::GUI::TabFrame;=20 my $mainwindow;=20 create_mainwindow();=20 $mainwindow -> Show;=20 Win32::GUI::Dialog();=20 sub create_mainwindow {=20 my $windowheight =3D 400;=20 my $windowwidth =3D 700;=20 my $windowmenu;=20 $windowmenu =3D Win32::GUI::MakeMenu (=20 "Item &1" =3D> "",=20 " > SubItem &1" =3D> = "Item1SubItem1",=20 " > SubItem &2" =3D> = "Item1SubItem2",=20 " > SubItem &3" =3D> = "Item1SubItem3",=20 " > -" =3D> 0,=20 " > E&xit" =3D> = "AppExit",=20 "Item &2" =3D> "",=20 " > SubItem &1" =3D> = "Item2SubItem1",=20 );=20 $mainwindow =3D Win32::GUI::Window -> new (=20 -name =3D> "Main",=20 -width =3D> $windowwidth,=20 -height =3D> $windowheight,=20 -title =3D> "Main Window",=20 -menu =3D> $windowmenu,=20 );=20 $mainwindow -> AddStatusBar (=20 -name =3D> "StatusBar"=20 );=20 $mainwindow -> AddTabFrame (=20 -name =3D> "TabFrame",=20 -panel =3D> "TabPage",=20 -tabstop =3D> 1,=20 );=20 $mainwindow -> TabFrame -> InsertItem (=20 -text =3D> "Tab1",=20 -border =3D> 1,=20 );=20 $mainwindow -> TabFrame -> InsertItem (=20 -text =3D> "Tab2",=20 -border =3D> 1,=20 );=20 $mainwindow -> TabFrame -> TabPage1 -> AddListView (=20 -name =3D> "ListView1",=20 -style =3D> WS_CHILD | WS_VISIBLE | = WS_VSCROLL | 1,=20 -fullrowselect =3D> 1,=20 );=20 $mainwindow -> TabFrame -> TabPage1 -> ListView1 -> = InsertColumn (=20 -index =3D> 0,=20 -width =3D> 220,=20 -text =3D> "Column 1",=20 );=20 $mainwindow -> TabFrame -> TabPage1 -> ListView1 -> = InsertColumn (=20 -index =3D> 1,=20 -width =3D> 220,=20 -text =3D> "Column 2",=20 );=20 $mainwindow -> TabFrame -> TabPage1 -> AddButton (=20 -name =3D> "Button1",=20 -text =3D> "Button 1",=20 -default =3D> 1,=20 -tabstop =3D> 1,=20 );=20 $mainwindow -> TabFrame -> TabPage1 -> AddButton (=20 -name =3D> "Button2",=20 -text =3D> "Button 2",=20 -tabstop =3D> 1,=20 );=20 $mainwindow -> {-dialogui} =3D 1;=20 }=20 sub Button1_Click {=20 print "DEBUG - Button 1 was Clicked\n";=20 }=20 sub Button2_Click {=20 print "DEBUG - Button 2 was Clicked\n";=20 }=20 sub AppExit_Click {=20 Main_Terminate();=20 }=20 sub Main_Terminate {=20 $mainwindow -> Hide();=20 exit 0;=20 }=20 sub Main_Resize {=20 my $windowheight =3D $mainwindow -> ScaleHeight();=20 my $windowwidth =3D $mainwindow -> ScaleWidth();=20 my $statusbar_height =3D $mainwindow -> StatusBar -> Height(); = $mainwindow -> TabFrame -> Move (0, 0);=20 $mainwindow -> TabFrame -> Resize ($windowwidth, $windowheight = - $statusbar_height);=20 $mainwindow -> TabFrame -> TabPage1 -> ListView1 -> Move (0, = 0);=20 $mainwindow -> TabFrame -> TabPage1 -> ListView1 -> Resize = ($mainwindow -> TabFrame -> TabPage1 -> ScaleWidth, $mainwindow -> = TabFrame -> TabPage1 -> ScaleHeight - 40 );=20 $mainwindow -> TabFrame -> TabPage1 -> Button1 -> Move = ($mainwindow -> TabFrame -> TabPage1 -> ScaleWidth / 2 - 70, $mainwindow = -> TabFrame -> TabPage1 -> ScaleHeight - 30);=20 $mainwindow -> TabFrame -> TabPage1 -> Button2 -> Move = ($mainwindow -> TabFrame -> TabPage1 -> ScaleWidth / 2 , $mainwindow -> = TabFrame -> TabPage1 -> ScaleHeight - 30);=20 $mainwindow -> StatusBar -> Move (0, $windowheight - = $mainwindow -> StatusBar -> Height);=20 $mainwindow -> StatusBar -> Resize ($windowwidth, $mainwindow = -> StatusBar -> Height);=20 }=20 --------------------------[ End Code ]-------------------------------=20 "Jez White" <je...@je...>=20 05/11/2005 03:24 AM=20 To per...@li..., = leo...@us... =20 cc =20 Subject Re: [perl-win32-gui-users] Button and RichEdit = issues=20 =20 =20 Ok - Ariel's solution (calling DESTROY) on the richedit controls = before exit solves the crash for your example:)=20 =20 I must admit I'm a bit stumped at the button hang - I was able to = reproduce it. It must be something to do with TabFrame (probably a = scoping issue) since if the buttons are created directly on the tab = strip they work fine. I'm not to sure what to suggest - other than don't = use the TabFrame package:)=20 =20 Cheers,=20 =20 jez.=20 = -------------------------------------------------------------------------= ----- Electronic Privacy Notice. This e-mail, and any attachments, contains = information that is, or may be, covered by electronic communications = privacy laws, and is also confidential and proprietary in nature. If you = are not the intended recipient, please be advised that you are legally = prohibited from retaining, using, copying, distributing, or otherwise = disclosing this information in any manner. Instead, please reply to the = sender that you have received this communication in error, and then = immediately delete it. Thank you in advance for your cooperation. = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D |
From: <leo...@us...> - 2005-05-12 16:06:58
|
Absolutely wonderful !!!! I removed that line from my program and all of a sudden the buttons work and everything is fine =D Thank you very much, I greatly appreciate it. I have no idea what that option does, I think its just something i've been using since pre .588 Thanks again for everyone's help Len. "Jez White" <je...@je...> Sent by: per...@li... 05/12/2005 04:41 AM To leo...@us... cc per...@li... Subject Re: [perl-win32-gui-users] Button and RichEdit issues Ok - this might be a simple solution:) Comment out the line "$mainwindow -> {-dialogui} = 1;" and it works... I dont know what this option does, so I'm not sure it this would be a good solution for you. Cheers, jez. ----- Original Message ----- From: leo...@us... To: Jez White Cc: per...@li... Sent: Wednesday, May 11, 2005 4:31 PM Subject: Re: [perl-win32-gui-users] Button and RichEdit issues Thank you for your replies. I tried the DESTROY solution and it did indeed work, so thank you very much :) As far as the button hang goes, the below code has the same problems, however, when you remove the StatusBar it doesnt. Its very odd and i'm not sure how to go about debugging it. I tried to remove the StatusBar from my main program, but that did not solve the issue, so I dont think it has to do with the StatusBar, but something is obviously tripping it up there. The reason I use TabFrame is because I am familiar with it, and because I cannot find any examples on how to work with TabStrip (for example, I created a TabStrip script, but could not figure out how to add widgets to it). I did find one example by searching the mailing list for "AddTabStrip", however from the example it looks like I have to hide each individual widget when changing tabs. Is this correct? I must confess though, I have spent very little time looking for TabStrip code, so I may be missing something entirely :) Anyway, if anyone has any suggestions as to what may be causing my problems, or how I could go about debugging it, they would be greatly appreciated. Thanks for all the help. Len --------------------------[ Begin Code ]------------------------------- use strict; use warnings; use Win32::GUI; use Win32::GUI::TabFrame; my $mainwindow; create_mainwindow(); $mainwindow -> Show; Win32::GUI::Dialog(); sub create_mainwindow { my $windowheight = 400; my $windowwidth = 700; my $windowmenu; $windowmenu = Win32::GUI::MakeMenu ( "Item &1" => "", " > SubItem &1" => "Item1SubItem1", " > SubItem &2" => "Item1SubItem2", " > SubItem &3" => "Item1SubItem3", " > -" => 0, " > E&xit" => "AppExit", "Item &2" => "", " > SubItem &1" => "Item2SubItem1", ); $mainwindow = Win32::GUI::Window -> new ( -name => "Main", -width => $windowwidth, -height => $windowheight, -title => "Main Window", -menu => $windowmenu, ); $mainwindow -> AddStatusBar ( -name => "StatusBar" ); $mainwindow -> AddTabFrame ( -name => "TabFrame", -panel => "TabPage", -tabstop => 1, ); $mainwindow -> TabFrame -> InsertItem ( -text => "Tab1", -border => 1, ); $mainwindow -> TabFrame -> InsertItem ( -text => "Tab2", -border => 1, ); $mainwindow -> TabFrame -> TabPage1 -> AddListView ( -name => "ListView1", -style => WS_CHILD | WS_VISIBLE | WS_VSCROLL | 1, -fullrowselect => 1, ); $mainwindow -> TabFrame -> TabPage1 -> ListView1 -> InsertColumn ( -index => 0, -width => 220, -text => "Column 1", ); $mainwindow -> TabFrame -> TabPage1 -> ListView1 -> InsertColumn ( -index => 1, -width => 220, -text => "Column 2", ); $mainwindow -> TabFrame -> TabPage1 -> AddButton ( -name => "Button1", -text => "Button 1", -default => 1, -tabstop => 1, ); $mainwindow -> TabFrame -> TabPage1 -> AddButton ( -name => "Button2", -text => "Button 2", -tabstop => 1, ); $mainwindow -> {-dialogui} = 1; } sub Button1_Click { print "DEBUG - Button 1 was Clicked\n"; } sub Button2_Click { print "DEBUG - Button 2 was Clicked\n"; } sub AppExit_Click { Main_Terminate(); } sub Main_Terminate { $mainwindow -> Hide(); exit 0; } sub Main_Resize { my $windowheight = $mainwindow -> ScaleHeight(); my $windowwidth = $mainwindow -> ScaleWidth(); my $statusbar_height = $mainwindow -> StatusBar -> Height(); $mainwindow -> TabFrame -> Move (0, 0); $mainwindow -> TabFrame -> Resize ($windowwidth, $windowheight - $statusbar_height); $mainwindow -> TabFrame -> TabPage1 -> ListView1 -> Move (0, 0); $mainwindow -> TabFrame -> TabPage1 -> ListView1 -> Resize ($mainwindow -> TabFrame -> TabPage1 -> ScaleWidth, $mainwindow -> TabFrame -> TabPage1 -> ScaleHeight - 40 ); $mainwindow -> TabFrame -> TabPage1 -> Button1 -> Move ($mainwindow -> TabFrame -> TabPage1 -> ScaleWidth / 2 - 70, $mainwindow -> TabFrame -> TabPage1 -> ScaleHeight - 30); $mainwindow -> TabFrame -> TabPage1 -> Button2 -> Move ($mainwindow -> TabFrame -> TabPage1 -> ScaleWidth / 2 , $mainwindow -> TabFrame -> TabPage1 -> ScaleHeight - 30); $mainwindow -> StatusBar -> Move (0, $windowheight - $mainwindow -> StatusBar -> Height); $mainwindow -> StatusBar -> Resize ($windowwidth, $mainwindow -> StatusBar -> Height); } --------------------------[ End Code ]------------------------------- "Jez White" <je...@je...> 05/11/2005 03:24 AM To per...@li..., leo...@us... cc Subject Re: [perl-win32-gui-users] Button and RichEdit issues Ok - Ariel's solution (calling DESTROY) on the richedit controls before exit solves the crash for your example:) I must admit I'm a bit stumped at the button hang - I was able to reproduce it. It must be something to do with TabFrame (probably a scoping issue) since if the buttons are created directly on the tab strip they work fine. I'm not to sure what to suggest - other than don't use the TabFrame package:) Cheers, jez. ------------------------------------------------------------------------------ Electronic Privacy Notice. This e-mail, and any attachments, contains information that is, or may be, covered by electronic communications privacy laws, and is also confidential and proprietary in nature. If you are not the intended recipient, please be advised that you are legally prohibited from retaining, using, copying, distributing, or otherwise disclosing this information in any manner. Instead, please reply to the sender that you have received this communication in error, and then immediately delete it. Thank you in advance for your cooperation. ============================================================================== ------------------------------------------------------------------------------ Electronic Privacy Notice. This e-mail, and any attachments, contains information that is, or may be, covered by electronic communications privacy laws, and is also confidential and proprietary in nature. If you are not the intended recipient, please be advised that you are legally prohibited from retaining, using, copying, distributing, or otherwise disclosing this information in any manner. Instead, please reply to the sender that you have received this communication in error, and then immediately delete it. Thank you in advance for your cooperation. ============================================================================== |
From: Jez W. <je...@je...> - 2005-05-13 07:57:59
|
> That option is supposed to enable tabbing between widgets (at least), and > is one of the main differences between creating a window and creating a > dialog box. Without it, you generally _must_ use the mouse to select > widgets. Hummm - this sounds like a bug then. I've created a tracker item for it: http://sourceforge.net/tracker/index.php?func=detail&aid=1201190&group_id=16572&atid=116572 There is another bug associated with -dialogui=1 - so this option needs a good going over:) Cheers, jez. |
From: Robert M. <rm...@po...> - 2005-05-19 17:10:17
|
Hi all, I've been travelling on business for the last couple of weekes, and so have had a few spare moments at airports to have a look into these 2 issues, and think I have got to the root cause in both cases. RichEdit crashing on exit: Fundamentally this is a problem with Win32::GUI, where the richedit dll can get unloaded before the richedit window objects get destroyed. In GUI.pm the richedit dll is loaded when the package is use()d, and there is an END block that is there to unload the dll when the process terminates. It is, unfortunately, very easy to end up with references to the richedit control (or any of its ancestor windows, as Win32::GUI puts a reference to each objects in its parent to allow the $main_window->Richedit1->dostuff() syntax) that prevent the object's reference counts going to zero when the script exits. The result of this is that the END block gets executed (and unloads the richedit dll) before the RichEdit's DESTROY method gets called. Here is a link that (may) explain how this happens better than I could: http://groups.google.co.uk/group/comp.lang.perl.misc/browse_thread/thread/e85f1d86213fbaa4/520169ef5cab46c4 And here is an example showing it: #!perl use strict; use warnings; my $a = Thing->new(); warn "Exiting\n"; # Uncomment this next line for a safer way to get the DESTROY method called # before the END block than calling it explicitly # undef $a; exit(0); END { warn "Running END block\n"; } # somesub causes the reference count to $a to not go to zero when the script # exits, and so there is a reference to a Thing object still in existence, # which results in the END block being executed before Thing's DESTROY # method. # Comment out this sub, and see Thing's DESTROY method being called before # the END block is executed. sub somesub { my $tmp = $a; } package Thing; sub new { return bless {}; } sub DESTROY { warn "DESTROYing Thing\n"; } __END__ In GUI.pm the solution is to comment out the END block It is not necessary to call FreeLibrary explicitly, as windows will do this for you on process termination. While making this change I would move the richedit LoadLibrary call into the Win32::GUI::RichEdit's constructor (Win32::GUI::RichEdit::new()) so that the process only gets bloated with the richedit dll(s) if you are actually using a richedit control. Here's a context diff for how I did this. I haven't given it much testing, but it seems OK on the small number of examples I've run: cvs diff -c GUI.pm (in directory C:\Development\Work\Win32-GUI\) Index: GUI.pm =================================================================== RCS file: /cvsroot/perl-win32-gui/Win32-GUI/GUI.pm,v retrieving revision 1.26 diff -c -r1.26 GUI.pm *** GUI.pm 1 Feb 2005 11:04:06 -0000 1.26 --- GUI.pm 19 May 2005 16:29:54 -0000 *************** *** 1793,1798 **** --- 1793,1799 ---- # can also be called as PARENT->AddRichEdit(%OPTIONS). # See new Win32::GUI::Edit for B<%OPTIONS> sub new { + $Win32::GUI::RICHED = Win32::GUI::LoadLibrary("RICHED32") unless defined $Win32::GUI::RICHED; return Win32::GUI->_new(Win32::GUI::constant("WIN32__GUI__RICHEDIT", 0), @_); } *************** *** 3243,3254 **** -widget => "Splitter", ); ! $Win32::GUI::RICHED = Win32::GUI::LoadLibrary("RICHED32"); ! END { # print "Freeing library RICHED32\n"; ! Win32::GUI::FreeLibrary($Win32::GUI::RICHED); ! } #Currently Autoloading is not implemented in Perl for win32 # Autoload methods go after __END__, and are processed by the autosplit program. --- 3244,3255 ---- -widget => "Splitter", ); ! #$Win32::GUI::RICHED = Win32::GUI::LoadLibrary("RICHED32"); ! #END { # print "Freeing library RICHED32\n"; ! # Win32::GUI::FreeLibrary($Win32::GUI::RICHED); ! #} #Currently Autoloading is not implemented in Perl for win32 # Autoload methods go after __END__, and are processed by the autosplit program. ** END of context diff ** Additionally I would strongly discourage calling the richedit object's DESTROY method directly. Not only is this bad OO practice (the DESTROY method is technically private), but also due to the way that Win32::GUI ties it's objects, the DESTROY sub usually gets called twice (once for untie, once for object destruction), and I can't get my head around what might be happening if it is called directly. It would (in my opinion) be better (as in my example above) to undef the 'global' variables you have holding the objects before you exit as a work-around. As a final comment on this issue, using the NEM, it is possible in most cases to avoid having to have these 'global' variables, as the window object gets passed into the event handler subs. dialogui causing hang: This appears to be a microsoft 'bug' in IsDialogMessage(). Here are some descriptions of some similar problems: http://www.guyswithtowels.com/articles/2002-08-15-1600.html#NestedDialogs http://support.microsoft.com/default.aspx?scid=KB;EN-US;Q149501 http://blogs.msdn.com/oldnewthing/archive/2004/07/30/201988.aspx The solution is to add the WS_EX_CONTROLPARENT extended style to the TabFrame object. Putting this all together here is my re-write of Leonard's original script, that runs correctly under Win32::GUI V1.0 #!perl use strict; #use warnings; use Win32::GUI; use Win32::GUI::TabFrame; # Sadly this needs global scope, to stop the # menu getting destroyed prematurely. my $windowmenu = Win32::GUI::MakeMenu( "Item &1" => "", " > SubItem &1" => "Item1SubItem1", " > SubItem &2" => "Item1SubItem2", " > SubItem &3" => "Item1SubItem3", " > -" => 0, " > E&xit" => "AppExit", "Item &2" => "", " > SubItem &1" => "Item2SubItem1", ); my $mainwindow = create_mainwindow(); $mainwindow->Show(); Win32::GUI::Dialog(); exit(0); sub create_mainwindow { my $windowheight = 400; my $windowwidth = 700; my $mw = Win32::GUI::Window->new( -name => "Main", -width => $windowwidth, -height => $windowheight, -title => "Main Window", -menu => $windowmenu, -onResize => \&MW_Resize, -dialogui => 1, ); $mw->AddStatusBar( -name => "StatusBar" ); $mw->AddTreeView( -text => "", -name => "TreeView", -left => -1, -top => -1, -rootlines => 1, -buttons => 1, ); $mw->AddTabFrame( -name => "TabFrame", -panel => "TabPage", -tabstop => 1, -pushexstyle => WS_EX_CONTROLPARENT, ); $mw->TabFrame->InsertItem( -text => "Tab1", -border => 1, ); $mw->TabFrame->InsertItem( -text => "Tab2", -border => 1, ); $mw->TabFrame->InsertItem( -text => "Tab3", -border => 1, ); $mw->TabFrame->InsertItem( -text => "Tab4", -border => 1, ); $mw->TabFrame->TabPage0->AddRichEdit( -name => "RichEdit1", -multiline => 1, -vscroll => 1, -hscroll => 1, -readonly => 1, -tabstop => 1, ); $mw->TabFrame->TabPage1->AddRichEdit( -name => "RichEdit2", -multiline => 1, -vscroll => 1, -readonly => 1, -tabstop => 1, ); $mw->TabFrame->TabPage2->AddListView( -name => "ListView1", -vscroll => 1, -report => 1, -fullrowselect => 1, -tabstop => 1, ); $mw->TabFrame->TabPage2->ListView1->InsertColumn( -index => 0, -width => 220, -text => "Column 1", ); $mw->TabFrame->TabPage2->ListView1->InsertColumn( -index => 1, -width => 220, -text => "Column 2", ); $mw->TabFrame->TabPage2->AddButton( -name => "Button1", -text => "Button 1", -default => 1, -tabstop => 1, ); $mw->TabFrame->TabPage2->AddButton( -name => "Button2", -text => "Button 2", -tabstop => 1, ); $mw->TabFrame->TabPage3-> AddListView( -name => "ListView2", -vscroll => 1, -report => 1, -fullrowselect => 1, -tabstop => 1, ); $mw->TabFrame->TabPage3->ListView2->InsertColumn( -index => 0, -width => 125, -text => "Column1", ); $mw->TabFrame->TabPage3->ListView2->InsertColumn( -index => 1, -width => 50, -text => "Column2", ); $mw->TabFrame->TabPage3->ListView2->InsertColumn( -index => 2, -width => 200, -text => "Column3", ); $mw->TabFrame->TabPage3->ListView2->InsertColumn( -index => 3, -width => 200, -text => "Column4", ); return $mw; } sub Button1_Click { print "DEBUG - Button 1 was Clicked\n"; } sub Button2_Click { print "DEBUG - Button 2 was Clicked\n"; } sub AppExit_Click { -1; } sub MW_Resize { my $self = shift; my $windowheight = $self->ScaleHeight(); my $windowwidth = $self->ScaleWidth(); my $treeview_width = 200; $self->TreeView->Move(0, 0); $self->TreeView->Resize($treeview_width, $windowheight - $self->StatusBar->ScaleHeight); $self->TabFrame->Move($treeview_width, 0); $self->TabFrame->Resize($windowwidth - $treeview_width, $windowheight - $self->StatusBar->ScaleHeight); $self->TabFrame->TabPage0->RichEdit1->Move(0, 0); $self->TabFrame->TabPage0->RichEdit1->Resize($self->TabFrame->TabPage0->ScaleWidth, $self->TabFrame->TabPage0->ScaleHeight); $self->TabFrame->TabPage1->RichEdit2->Move(0, 0); $self->TabFrame->TabPage1->RichEdit2->Resize($self->TabFrame->TabPage0->ScaleWidth, $self->TabFrame->TabPage0->ScaleHeight); $self->TabFrame->TabPage2->ListView1->Move(0, 0); $self->TabFrame->TabPage2->ListView1->Resize($self->TabFrame->TabPage2->ScaleWidth, $self->TabFrame->TabPage2->ScaleHeight - 40 ); $self->TabFrame->TabPage2->Button1->Move($self->TabFrame->TabPage2->ScaleWidth/2 - 70, $self->TabFrame->TabPage2->ScaleHeight - 30); $self->TabFrame->TabPage2->Button2->Move($self->TabFrame->TabPage2->ScaleWidth/2 , $self->TabFrame->TabPage2->ScaleHeight - 30); $self->TabFrame->TabPage3->ListView2->Move(0, 0); $self->TabFrame->TabPage3->ListView2->Resize($self->TabFrame->TabPage3->ScaleWidth, $self->TabFrame->TabPage3->ScaleHeight); $self->StatusBar->Move(0, $windowheight - $self->StatusBar->Height); $self->StatusBar->Resize($windowwidth, $self->StatusBar->Height); return 1; } __END__ Have fun, Rob. Jez White wrote: > Ok - Ariel's solution (calling DESTROY) on the richedit controls > before exit solves the crash for your example:) > > I must admit I'm a bit stumped at the button hang - I was able to > reproduce it. It must be something to do with TabFrame (probably a > scoping issue) since if the buttons are created directly on the tab > strip they work fine. I'm not to sure what to suggest - other than > don't use the TabFrame package:) > > Cheers, > > jez. > > ----- Original Message ----- > *From:* leo...@us... > <mailto:leo...@us...> > *To:* per...@li... > <mailto:per...@li...> > *Sent:* Tuesday, May 10, 2005 7:52 PM > *Subject:* [perl-win32-gui-users] Button and RichEdit issues > > > Thank you everyone for the replies to my Right Click problems, the > issue is now solved. However, I am having a couple more issues > that I can not figure out how to get around. > > The first issue is a known one, and it concerns a crash with > RichEdit on 1.0 when exiting the application. I have created > Global vars for the RichEdit controls, but I still get a crash on > exit, so I'm not sure what i'm doing wrong. > > The next issue concerns a couple buttons that I have created and > when I go to click on them the program just hangs. I tried adding > a BusyTimer to make sure that the program was hanging and the > BusyTimer stopped spewing out information, so I know it hung. > > Anyway, I have included some code below in hopes that someone can > help me fix these issues. Please let me know if you need any more > information and I will gladly include it. > > Thanks. > > Len. > > > |