Пример #1
0
  window* window::create( int x, int y, int width, int height, const wchar_t* caption ) 
  {
    window* pw = new window();

    UINT style = WS_POPUP | WS_MAXIMIZEBOX | WS_MINIMIZEBOX | WS_SYSMENU | WS_SIZEBOX;
    pw->hwnd = CreateWindowExW( WS_EX_LAYERED, CLASSNAME, NULL, style ,
                                x, y, width, height, NULL, NULL, hinstance, NULL);
//    pw->hwnd = CreateWindowExW( 0, CLASSNAME, NULL, style ,
//                                x, y, width, height, NULL, NULL, hinstance, NULL);
    self(pw->hwnd,pw);
    HTMLayoutSetCallback(pw->hwnd,&callback,pw);
    PBYTE pb; DWORD cb;
    if(load_resource_data(L"DEFAULT",pb,cb))
    {
      HTMLayoutLoadHtml(pw->hwnd,pb,cb);

      dom::element r = pw->root();

      pw->body            = r.find_first("body");
      pw->caption         = r.get_element_by_id("caption");
      pw->button_min      = r.get_element_by_id("minimize");
      pw->button_max      = r.get_element_by_id("maximize");
      pw->button_icon     = r.get_element_by_id("icon");
      pw->button_close    = r.get_element_by_id("close");
      pw->corner          = r.get_element_by_id("corner");

      attach_event_handler(pw->hwnd, pw);

      pw->set_caption(caption);

    }
    return pw;
  }
wyBool 
Announcements::HandleAnnouncementsCheck(HWND hwnd)
{
	HWND		hwndHTML;
	wyString	htmlbuffer;
	WNDPROC		wndproc, origmainwndproc;
	CHttp		http;
	htmlbuffer.SetAs(pGlobals->m_announcementshtml.GetString());
	VERIFY(m_hwnd =  CreateWindow(ANNOUNCEMENTS_MAIN_WINDOW,
								L"", 
								WS_VISIBLE | WS_CHILD | WS_CLIPCHILDREN | WS_CLIPSIBLINGS, 
								2, 450, 300, 180,
							    hwnd, (HMENU)-1,
								pGlobals->m_pcmainwin->GetHinstance(), NULL));

	VERIFY(hwndHTML = CreateWindowEx(0, ANNOUNCEMENTS_WINDOW, 
								L"AnnouncementsWindow",  
								WS_CHILD | WS_VISIBLE, 
                                0, 0, 270, 270, 
								m_hwnd, (HMENU)-1, 
								pGlobals->m_pcmainwin->GetHinstance(), NULL));

    origmainwndproc = (WNDPROC)SetWindowLongPtr(m_hwnd, GWLP_WNDPROC, (LONG_PTR)Announcements::AnnounceWndMainProc);
    SetWindowLongPtr(m_hwnd, GWLP_USERDATA, (LONG_PTR)origmainwndproc);
	
	m_hwndHTML = hwndHTML;

	htmlayout::attach_event_handler(hwndHTML, &AnnEvtHandler);
	HTMLayoutSetCallback(hwndHTML, HTMLayoutNotifyHandler, 0);  
	//htmlayout::attach_event_handler(hwndHTML, &DOMEventsHandler);

    wndproc = (WNDPROC)SetWindowLongPtr(hwndHTML, GWLP_WNDPROC, (LONG_PTR)Announcements::AnnounceWndProc);
    SetWindowLongPtr(hwndHTML, GWLP_USERDATA, (LONG_PTR)wndproc);

	if(HTMLayoutLoadHtml(hwndHTML, (PBYTE)htmlbuffer.GetString(), htmlbuffer.GetLength()))
	{
		//if loadhtml fails return false and the html is malformed 
		HTMLayoutSetMode(hwndHTML, HLM_SHOW_SELECTION);
		return wyTrue;
	}
	else
	{
		//cleanup
		CloseWindow(m_hwndHTML);
		CloseWindow(m_hwnd);
		DestroyWindow(m_hwndHTML);
		DestroyWindow(m_hwnd);
		return wyFalse;
	}

}