//ID2D1HwndRenderTargetPtr base_window::render_target() { return impl_->render_target();};
//IDWriteFactoryPtr base_window::write_factory() {return impl_->write_factory();};
- toplevel_window_ptr create_toplevel_window
- (
- const std::wstring& menu_name,
- const std::wstring& name,
- const boost::uint32_t show_flag,
- bool fit_to_display,
- float width,
- float height
- )
- {
- toplevel_window* p = new toplevel_window(menu_name,name,fit_to_display,width,height);
- p->create_device_independent_resources();
- p->register_class();
- p->create_window();
- p->show(show_flag);
- p->update();
- return toplevel_window_ptr(p);
- }
-
+
toplevel_window::toplevel_window(const std::wstring& menu_name,const std::wstring& name,
bool fit_to_display,float width,float height)
: base_window(menu_name,name,fit_to_display,width,height) , wm_task_bar_create_(0),timer_id_(0),result_time_(INTERVAL_SEC1),status_(active)
//create_device();
{
+
paint_struct begin_paint(hwnd);
+
+ //CloseHandle(cb);
// 描画コードの呼び出し
render();
+
}
// ::ShowWindow(hwnd_,SW_MINIMIZE);
{
::InvalidateRect(hwnd, NULL, FALSE);
}
+ break;
case WM_ERASEBKGND:
{
- return FALSE;
+// return FALSE;
}
+ break;
case WM_MOUSEMOVE:
{
// on_mouse_move(GET_X_LPARAM(lParam),GET_Y_LPARAM(lParam),wParam);
{
static float t = 0.0f;
+
if (render_target_)
{
D2D1_SIZE_F renderTargetSize = render_target_->GetSize();
try {
render_target_->BeginDraw();
- render_target_->Clear(D2D1::ColorF(D2D1::ColorF::White));
+ ID2D1SolidColorBrushPtr ebrush;
+ render_target_->Clear(D2D1::ColorF(0,1.0f));
+// render_target_->FillRectangle(D2D1::RectF(0.0f,0.0f,renderTargetSize.width,renderTargetSize.height),);
+
+// (D2D1::ColorF(0,1.0f));
render_target_->SetTransform(D2D1::Matrix3x2F::Identity());
ID2D1SolidColorBrushPtr brush;
- render_target_->CreateSolidColorBrush(D2D1::ColorF(D2D1::ColorF::Black), &brush);
- ID2D1SolidColorBrushPtr brushr;
- render_target_->CreateSolidColorBrush(D2D1::ColorF(D2D1::ColorF::Red), &brushr);
+ render_target_->CreateSolidColorBrush(D2D1::ColorF(D2D1::ColorF::White), &brush);
D2D1_RECT_F layoutRect = D2D1::RectF(0.0f,0.0f,width_,height_);
IDWriteTextFormatPtr write_text_format;
DWRITE_FONT_WEIGHT_REGULAR,
DWRITE_FONT_STYLE_NORMAL,
DWRITE_FONT_STRETCH_NORMAL,
- 18.0f,
+ 20.0f,
L"ja-jp",
&write_text_format
));
layoutRect,
brush);
THROW_IFERR(render_target_->EndDraw());
- } catch(...) {
+ } catch(sf::win32_error_exception& err)
+ {
+ if(err.hresult() == D2DERR_RECREATE_TARGET)
+ {
+ discard_device();
+ create_device();
+ } else {
+ throw;
+ }
+ } catch(...) {
throw;
}
}
return bitmap;
}
+ HRESULT EnableBlurBehind(HWND hwnd)
+{
+ HRESULT hr = S_OK;
+
+ //Create and populate the BlurBehind structre
+ DWM_BLURBEHIND bb = {0};
+ //Enable Blur Behind and Blur Region;
+ bb.dwFlags = DWM_BB_ENABLE;
+ bb.fEnable = true;
+ bb.hRgnBlur = NULL;
+
+ //Enable Blur Behind
+ hr = DwmEnableBlurBehindWindow(hwnd, &bb);
+ if (SUCCEEDED(hr))
+ {
+ //do more things
+ }
+ return hr;
+}
+ toplevel_window_ptr create_toplevel_window
+ (
+ const std::wstring& menu_name,
+ const std::wstring& name,
+ const boost::uint32_t show_flag,
+ bool fit_to_display,
+ float width,
+ float height
+ )
+ {
+ toplevel_window* p = new toplevel_window(menu_name,name,fit_to_display,width,height);
+ p->create_device_independent_resources();
+ p->register_class();
+ p->create_window();
+
+ BOOL dwmEnable;
+ DwmIsCompositionEnabled (&dwmEnable);
+ if (dwmEnable) EnableBlurBehind(p->hwnd_);
+
+ p->show(show_flag);
+ p->update();
+ return toplevel_window_ptr(p);
+ }
+
}