HWND AP_Win32LeftRuler::createWindow(HWND hwndContainer, UT_uint32 left, UT_uint32 top, UT_uint32 height) { XAP_Win32App * app = static_cast<XAP_Win32App *>(XAP_App::getApp()); m_hwndLeftRuler = UT_CreateWindowEx(0, s_LeftRulerWndClassName, NULL, WS_CHILD | WS_VISIBLE, left, top, s_iFixedWidth, height, hwndContainer, NULL, app->getInstance(), NULL); UT_return_val_if_fail (m_hwndLeftRuler,0); SWL(m_hwndLeftRuler, this); DELETEP(m_pG); GR_Win32AllocInfo ai(GetDC(m_hwndLeftRuler), m_hwndLeftRuler); GR_Win32Graphics * pG = (GR_Win32Graphics *)XAP_App::getApp()->newGraphics(ai); m_pG = pG; UT_return_val_if_fail (pG, 0); pG->init3dColors(); RECT rSize; GetClientRect(m_hwndLeftRuler,&rSize); setHeight(rSize.bottom); setWidth(rSize.right); return m_hwndLeftRuler; }
void AP_Win32LeftRuler::setView(AV_View * pView) { AP_LeftRuler::setView(pView); DELETEP(m_pG); GR_Win32AllocInfo ai(GetDC(m_hwndLeftRuler), m_hwndLeftRuler); GR_Win32Graphics * pG = (GR_Win32Graphics *)XAP_App::getApp()->newGraphics(ai); m_pG = pG; UT_return_if_fail (m_pG); pG->init3dColors(); }
void AP_Win32TopRuler::setView(AV_View * pView) { AP_TopRuler::setView(pView); DELETEP(m_pG); GR_Win32AllocInfo ai(GetDC(m_hwndTopRuler), m_hwndTopRuler); GR_Win32Graphics * pG = (GR_Win32Graphics *)XAP_App::getApp()->newGraphics(ai); m_pG = pG; UT_return_if_fail (m_pG); pG->init3dColors(); if (IsWindow(m_hwndTopRuler)) SendMessage(m_hwndTopRuler, WM_ERASEBKGND, (WPARAM)GetDC(m_hwndTopRuler), 0); }
LRESULT CALLBACK AP_Win32LeftRuler::_LeftRulerWndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam) { // this is a static member function. AP_Win32LeftRuler * pRuler = GWL(hwnd); if (!pRuler) return UT_DefWindowProc(hwnd, iMsg, wParam, lParam); GR_Win32Graphics * pG = static_cast<GR_Win32Graphics *>(pRuler->m_pG); switch (iMsg) { case WM_LBUTTONDOWN: SetCapture(hwnd); pRuler->mousePress(s_GetEMS(wParam),EV_EMB_BUTTON1,pG->tlu(LOWORD(lParam)), pG->tlu(HIWORD(lParam))); { pG->handleSetCursorMessage(); } return 0; case WM_MBUTTONDOWN: SetCapture(hwnd); pRuler->mousePress(s_GetEMS(wParam),EV_EMB_BUTTON2,pG->tlu(LOWORD(lParam)),pG->tlu(HIWORD(lParam))); { pG->handleSetCursorMessage(); } return 0; case WM_RBUTTONDOWN: SetCapture(hwnd); pRuler->mousePress(s_GetEMS(wParam),EV_EMB_BUTTON3,pG->tlu(LOWORD(lParam)),pG->tlu(HIWORD(lParam))); { pG->handleSetCursorMessage(); } return 0; case WM_MOUSEMOVE: pRuler->mouseMotion(s_GetEMS(wParam),pG->tlu(signedLoWord(lParam)),pG->tlu(signedHiWord(lParam))); return 0; case WM_LBUTTONUP: pRuler->mouseRelease(s_GetEMS(wParam),EV_EMB_BUTTON1,pG->tlu(signedLoWord(lParam)),pG->tlu(signedHiWord(lParam))); ReleaseCapture(); return 0; case WM_MBUTTONUP: pRuler->mouseRelease(s_GetEMS(wParam),EV_EMB_BUTTON2,pG->tlu(signedLoWord(lParam)),pG->tlu(signedHiWord(lParam))); ReleaseCapture(); return 0; case WM_RBUTTONUP: pRuler->mouseRelease(s_GetEMS(wParam),EV_EMB_BUTTON3,pG->tlu(signedLoWord(lParam)),pG->tlu(signedHiWord(lParam))); ReleaseCapture(); return 0; case WM_LBUTTONDBLCLK: case WM_MBUTTONDBLCLK: case WM_RBUTTONDBLCLK: return 0; case WM_PAINT: { PAINTSTRUCT ps; HDC hdc = BeginPaint(hwnd, &ps); UT_return_val_if_fail(hdc && pG, 0); UT_Rect r(ps.rcPaint.left,ps.rcPaint.top, ps.rcPaint.right-ps.rcPaint.left+1, ps.rcPaint.bottom-ps.rcPaint.top+1); pRuler->draw(&r); EndPaint(hwnd,&ps); return 0; } case WM_SYSCOLORCHANGE: { pG->init3dColors(); return 0; } case WM_SETCURSOR: { pG->handleSetCursorMessage(); } return 0; default: break; } return UT_DefWindowProc(hwnd, iMsg, wParam, lParam); }
LRESULT CALLBACK AP_Win32TopRuler::_TopRulerWndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam) { // this is a static member function. AP_Win32TopRuler * pRuler = GWL(hwnd); if (!pRuler) return UT_DefWindowProc(hwnd, iMsg, wParam, lParam); GR_Win32Graphics * pG = static_cast<GR_Win32Graphics *>(pRuler->m_pG); switch (iMsg) { case WM_LBUTTONDOWN: SetCapture(hwnd); pRuler->mousePress(s_GetEMS(wParam),EV_EMB_BUTTON1,pG->tlu(LOWORD(lParam)),pG->tlu(HIWORD(lParam))); { pG->handleSetCursorMessage(); } return 0; case WM_MBUTTONDOWN: SetCapture(hwnd); pRuler->mousePress(s_GetEMS(wParam),EV_EMB_BUTTON2,pG->tlu(LOWORD(lParam)),pG->tlu(HIWORD(lParam))); { pG->handleSetCursorMessage(); } return 0; case WM_RBUTTONDOWN: SetCapture(hwnd); pRuler->mousePress(s_GetEMS(wParam),EV_EMB_BUTTON3, pG->tlu(LOWORD(lParam)),pG->tlu(HIWORD(lParam))); { pG->handleSetCursorMessage(); } return 0; case WM_MOUSEMOVE: { // HACK for not updating Ruler for incremental Loading FV_View * pView = (FV_View *) pRuler->getView(); if(pView && (pView->getPoint() == 0)) { return 0; } } pRuler->mouseMotion(s_GetEMS(wParam),pG->tlu(signedLoWord(lParam)),pG->tlu(signedHiWord(lParam))); pRuler->isMouseOverTab(pG->tlu(signedLoWord(lParam)),pG->tlu(signedHiWord(lParam))); return 0; case WM_LBUTTONUP: pRuler->mouseRelease(s_GetEMS(wParam),EV_EMB_BUTTON1,pG->tlu(signedLoWord(lParam)),pG->tlu(signedHiWord(lParam))); ReleaseCapture(); return 0; case WM_MBUTTONUP: pRuler->mouseRelease(s_GetEMS(wParam),EV_EMB_BUTTON2,pG->tlu(signedLoWord(lParam)),pG->tlu(signedHiWord(lParam))); ReleaseCapture(); return 0; case WM_RBUTTONUP: pRuler->mouseRelease(s_GetEMS(wParam),EV_EMB_BUTTON3,pG->tlu(signedLoWord(lParam)),pG->tlu(signedHiWord(lParam))); ReleaseCapture(); return 0; case WM_PAINT: { // HACK for not updating Ruler for incremental Loading FV_View * pView = (FV_View *) pRuler->getView(); if(pView && (pView->getPoint() == 0)) { return 0; } PAINTSTRUCT ps; HDC hdc = BeginPaint(hwnd, &ps); UT_return_val_if_fail(hdc, 0); UT_Rect r(pG->tlu(ps.rcPaint.left), pG->tlu(ps.rcPaint.top), pG->tlu(ps.rcPaint.right-ps.rcPaint.left+1), pG->tlu(ps.rcPaint.bottom-ps.rcPaint.top+1)); pRuler->draw(&r); EndPaint(hwnd,&ps); return 0; } case WM_SYSCOLORCHANGE: { pG->init3dColors(); return 0; } case WM_SETCURSOR: { pG->handleSetCursorMessage(); return 0; } default: break; } return UT_DefWindowProc(hwnd, iMsg, wParam, lParam); }
BOOL XAP_Win32Dialog_Insert_Symbol::_onInitDialog(HWND hWnd, WPARAM /*wParam*/, LPARAM /*lParam*/) { m_hDlg = hWnd; // localize controls localizeControlText(XAP_RID_DIALOG_INSERTSYMBOL_INSERT_BUTTON,XAP_STRING_ID_DLG_Insert); localizeControlText(XAP_RID_DIALOG_INSERTSYMBOL_CLOSE_BUTTON,XAP_STRING_ID_DLG_Close); // *** this is how we add the gc for symbol table *** // attach a new graphics context to the drawing area XAP_Win32App * app = static_cast<XAP_Win32App *> (m_pApp); UT_ASSERT(app); HWND hwndChild = GetDlgItem(hWnd, XAP_RID_DIALOG_INSERTSYMBOL_SYMBOLS); m_pSymbolPreviewWidget = new XAP_Win32PreviewWidget(static_cast<XAP_Win32App *>(m_pApp), hwndChild, 0); UT_uint32 w,h; m_pSymbolPreviewWidget->getWindowSize(&w,&h); _createSymbolFromGC(m_pSymbolPreviewWidget->getGraphics(), w, h); m_pSymbolPreviewWidget->setPreview(m_DrawSymbol); m_pSymbolPreviewWidget->setInsertSymbolParent(this); hwndChild = GetDlgItem(hWnd, XAP_RID_DIALOG_INSERTSYMBOL_SYMBOL_PREVIEW); m_pSamplePreviewWidget = new XAP_Win32PreviewWidget(static_cast<XAP_Win32App *>(m_pApp), hwndChild, 0); m_pSamplePreviewWidget->getWindowSize(&w,&h); _createSymbolareaFromGC(m_pSamplePreviewWidget->getGraphics(), w, h); m_DrawSymbolSample = new XAP_Draw_Symbol_sample(m_DrawSymbol, m_pSamplePreviewWidget->getGraphics()); // TODO: Colour GR_Win32Graphics* gr = (GR_Win32Graphics*) m_DrawSymbolSample->m_pSymbolDraw->getGraphics(); gr->setBrush((HBRUSH)GetSysColorBrush(COLOR_3DFACE)); m_pSamplePreviewWidget->setPreview(m_DrawSymbolSample); XAP_Draw_Symbol * iDrawSymbol = _getCurrentSymbolMap(); UT_ASSERT(iDrawSymbol); // Fill the list box with symbol fonts. HDC hDCScreen = CreateDC("DISPLAY", NULL, NULL, NULL); #if 1 EnumFontFamilies(hDCScreen, (const char *)NULL, (FONTENUMPROC)fontEnumProcedure, (LPARAM)this); #else LOGFONT LogFont; // LogFont.lfCharSet = SYMBOL_CHARSET; - all fonts enum is more inline with XP nature LogFont.lfCharSet = DEFAULT_CHARSET; LogFont.lfFaceName[0] = '\0'; EnumFontFamiliesEx(hDCScreen, &LogFont, (FONTENUMPROC)fontEnumProcedure, (LPARAM)this, 0); #endif DeleteDC(hDCScreen); // Select the current font. UT_sint32 Index = SendDlgItemMessage(m_hDlg, XAP_RID_DIALOG_INSERTSYMBOL_FONT_LIST, CB_FINDSTRING, -1, (LPARAM)Symbol_font_selected); if(Index != -1) { _setFontFromCombo(Index); } else { _setFontFromCombo(0); } // Update the caption ConstructWindowName(); setDialogTitle((LPCSTR)(AP_Win32App::s_fromUTF8ToWinLocale(m_WindowName)).c_str()); centerDialog(); return 1; // 1 == we did not call SetFocus() }