本ページは公開が終了した情報の複製であり、掲載時点での情報です。本ページに記載されている内容について各所に問い合わせることはご遠慮下さい。
QA  Turbo Vision
プログラミング

複数のメニューを作成するとコンパイル時に Stack overflow が発生する


例えば 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));
   }
Language Q&A に戻る | Q&A ホームページへ戻る

Trademarks & Copyright (C) 1998 INPRISE Corporation. Last modified on 8-June-1998.

inserted by FC2 system