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; } }