![]() |
Turbo Vision
|
例えば ex1.) のような方法で複数のメニューを作成した場合,ソース中のネストが深くなりすぎるため,コンパイル中に Stack overflow を起こす場合があります。
このような場合は,ex2.) のように書き直すことで回避してください。
ex1.)
TMenuBar *TMyApp::initMenuBar( TRect r )
{
r.b.y = r.a.y + 1;
return new TMenuBar( r,
*new TSubMenu( "~F~ile", kbAltF )+
*new TMenuItem( "~O~pen", cmMyFileOpen, kbF3, hcNoContext, "F3" )+
*new TMenuItem( "~N~ew", cmMyNewWin, kbF4, hcNoContext, "F4" )+
newLine()+
*new TMenuItem( "E~x~it", cmQuit, cmQuit, hcNoContext, "Alt-X" )+
*new TSubMenu( "~W~indow", kbAltW )+
*new TMenuItem( "~N~ext", cmNext, kbF6, hcNoContext, "F6" )+
*new TMenuItem( "~Z~oom", cmZoom, kbF5, hcNoContext, "F5" )
);
}
ex2.)
TMenuBar *TMyApp::initMenuBar( TRect r )
{
r.b.y = r.a.y + 1;
TSubMenu& m1 =
*new TSubMenu( "~F~ile", kbAltF )+
*new TMenuItem( "~O~pen", cmMyFileOpen, kbF3, hcNoContext, "F3" )
*new TMenuItem( "~N~ew", cmMyNewWin, kbF4, hcNoContext, "F4" )
newLine()+
*new TMenuItem( "E~x~it", cmQuit, cmQuit, hcNoContext, "Alt-X" );
TSubMenu& m2 = *new TSubMenu( "~W~indow", kbAltW )+
*new TMenuItem( "~N~ext", cmNext, kbF6, hcNoContext, "F6" )+
*new TMenuItem( "~Z~oom", cmZoom, kbF5, hcNoContext, "F5" );
return new TMenuBar( r, *new TSubMenu(m1+m2));
}
Trademarks & Copyright (C) 1998 INPRISE Corporation. Last modified on 8-June-1998.