=================================================================== RCS file: /home/cvs/OpenXM_contrib2/windows/engine2000/ox_plot.cpp,v retrieving revision 1.2 retrieving revision 1.7 diff -u -p -r1.2 -r1.7 --- OpenXM_contrib2/windows/engine2000/ox_plot.cpp 2002/07/30 03:06:20 1.2 +++ OpenXM_contrib2/windows/engine2000/ox_plot.cpp 2015/08/20 17:47:53 1.7 @@ -12,10 +12,16 @@ static char THIS_FILE[] = __FILE__; #endif -extern "C" { -#include "ca.h" -#include "ifplot.h" +#if defined(MAX) +#undef MAX +#endif +#define MAX(a,b) ((a) > (b) ? (a) : (b) ) +extern "C" { +#include "if_canvas.h" +extern struct canvas *canvas[]; + extern HANDLE hCanvasCreated; + extern HANDLE hMainThreadReady; extern HANDLE hStreamNotify; extern HANDLE hStreamNotify_Ack; extern DWORD MainThread; @@ -85,6 +91,7 @@ BOOL COx_plotApp::InitInstance() WS_OVERLAPPEDWINDOW | FWS_ADDTOTITLE, NULL, NULL); MainThread = m_nThreadID; + SetEvent(hMainThreadReady); // メイン ウィンドウが初期化されたので、表示と更新を行います。 // pFrame->ShowWindow(SW_SHOW); @@ -160,48 +167,35 @@ BOOL COx_plotApp::PreTranslateMessage(MSG* pMsg) { // TODO: この位置に固有の処理を追加するか、または基本クラスを呼び出してください CMainFrame *pFrame; - struct canvas *can; - switch ( pMsg->message ) { - case WM_APP: // copy to canvas - can = canvas[pMsg->wParam]; - if ( !can->window ) { - pFrame = new CMainFrame; - /* XXX */ - pFrame->m_pWindowName = - (char *)malloc(MAX(strlen(can->wname),strlen("ox_plot"))+10); - sprintf(pFrame->m_pWindowName,"%s : %d", - strlen(can->wname)?can->wname:"ox_plot",can->index); + if ( pMsg->message == WM_APP ) { + struct canvas *can; - pFrame->m_cansize.cx = can->width; - pFrame->m_cansize.cy = can->height; - pFrame->LoadFrame(IDR_MAINFRAME, - WS_OVERLAPPEDWINDOW | FWS_ADDTOTITLE, NULL, NULL); - can->window = (void *)pFrame; - pFrame->m_wndView.can = can; - pFrame->ShowWindow(SW_SHOW); - pFrame->UpdateWindow(); - pFrame->BringWindowToTop(); - can->hwnd = pFrame->m_wndView.m_hWnd; - } else - pFrame = (CMainFrame *)can->window; - pFrame->RedrawWindow(); - break; - case WM_APP+1: // popup - can = canvas[pMsg->wParam]; - pFrame = (CMainFrame *)can->window; - pFrame->ShowWindow(SW_SHOW); - break; - case WM_APP+2: // popdown - can = canvas[pMsg->wParam]; - pFrame = (CMainFrame *)can->window; - pFrame->ShowWindow(SW_HIDE); - closed_canvas[pMsg->wParam] = can; - canvas[pMsg->wParam] = 0; - break; - default: - break; - } + can = canvas[pMsg->wParam]; + if ( !canvas_window(can) ) { + char *s = canvas_wname(can); + + pFrame = new CMainFrame; + /* XXX */ + pFrame->m_pWindowName = (char *)malloc(MAX(strlen(s),strlen("ox_plot"))+10); + sprintf(pFrame->m_pWindowName,"%s : %d",strlen(s)?s:"ox_plot",canvas_index(can)); + + pFrame->m_cansize.cx = canvas_width(can); + pFrame->m_cansize.cy = canvas_height(can); + pFrame->LoadFrame(IDR_MAINFRAME, + WS_OVERLAPPEDWINDOW | FWS_ADDTOTITLE, NULL, + NULL); + canvas_set_window(can,(void *)pFrame); + pFrame->m_wndView.can = can; + pFrame->ShowWindow(SW_SHOW); + pFrame->UpdateWindow(); + pFrame->BringWindowToTop(); + canvas_set_handle(can,pFrame->m_wndView.m_hWnd); + } else + pFrame = (CMainFrame *)canvas_window(can); + pFrame->RedrawWindow(); + SetEvent(hCanvasCreated); + } return CWinApp::PreTranslateMessage(pMsg); }