また少し進みました。
タブダイアログの中にスクロールするWindowを組み込んでみました。
これをベースにMachine EditorやPattern Editorを作っていこうと思います。
win32 gui generics で、ダイアログでない通常のウィンドウを作成するにはwindow_baseを継承すればよいのかと思っていたのですが、ウィンドウをcreate_wnd()すると死にます。
ヒントを求めてdialogやframeのソースを見るとひと工夫必要なことがわかりました。
create_info frame::def_create_info() { // first, register class (note: might already be registered - that's ok) WNDCLASSEX info = window_base::class_info().raw_info(); ::RegisterClassEx( &info ); try { window_class_info::from_name( info.lpszClassName, (HINSTANCE)info.hInstance); } catch( exception &) { WIN32GUI_THROW exception( _T("failed creating frame class")); } return create_info().class_name( info.lpszClassName) .style( WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_OVERLAPPEDWINDOW | WS_POPUP) .ex_style( WS_EX_APPWINDOW | WS_EX_WINDOWEDGE) .rect( 200, 200, 600, 450); }
ウィンドウを
作る前にはRegister Classが必要だってことですよね。基本中の基本...。
http://cvs.sourceforge.jp/cgi-bin/viewcvs.cgi/sftracker/SFTracker/