void createIndex(STS sts, char *outpath) { char *filename = new char[strlen(outpath)+12]; sprintf(filename, "%s/index.html", outpath); HTML html = html_create(filename); if (html == NULL) { log("createIndex", "Khong the tao file 'index.html' duoc!"); return; } html_header(html, "HCMUS Students"); html_body_navigation(html); html_body_content(html, 1); html_body_content_header(html, "", "", 1); html_idxlist_begin(html); for (int i = 0; sts[i] != NULL; i++) { char year[5]; itoa(sts[i]->Nam, year, 10); html_idxlist_element(html, sts[i]->MSSV, sts[i]->HoTen, year); } html_idxlist_end(html); html_footer(html, "HungryBirds"); html_close(html); delete filename; }
void createSVS(STS sts, char *outpath) { char *filename; HTML html; for (int i = 0; sts[i] != NULL; i++) { filename = new char[strlen(outpath)+14]; sprintf(filename, "%s/%s.html", outpath, sts[i]->MSSV); html = html_create(filename); if (html == NULL) { printf("%s -> Khong the tao file '%s.html' duoc!\n", "createSV", sts[i]->MSSV); continue; } createSVPage(html, sts, i); html_footer(html, "HungryBirds"); html_close(html); delete filename; } }
static LRESULT CALLBACK html_proc(HWND win, UINT msg, WPARAM wp, LPARAM lp) { html_t* html = (html_t*) GetWindowLongPtr(win, 0); if(html != NULL && html->ie_win == NULL) { /* Let's try to subclass IE window. This is very dirty hack, * which allows us to forward keyboard messages properly to * IOleInPlaceActiveObject::TranslateAccelerator(). * * Normally this should be done from main app. loop but we do not * have it under control in the DLL. */ html->ie_win = html_find_ie_window(win); if(html->ie_win != NULL) { HTML_TRACE("html_proc: Subclassing MSIE."); html->ie_proc = (WNDPROC) SetWindowLongPtr(html->ie_win, GWLP_WNDPROC, (LONG_PTR) html_ie_subclass_proc); SetProp(html->ie_win, ie_prop, (HANDLE) html); if(GetFocus() == win) { SetFocus(html->ie_win); MC_SEND(html->ie_win, WM_LBUTTONDOWN, 0, 0); MC_SEND(html->ie_win, WM_LBUTTONUP, 0, 0); } } } switch(msg) { case MC_HM_GOTOURLW: case MC_HM_GOTOURLA: { int res = html_goto_url(html, (const void*)lp, (msg == MC_HM_GOTOURLW)); return (res == 0 ? TRUE : FALSE); } case MC_HM_SETTAGCONTENTSW: case MC_HM_SETTAGCONTENTSA: { int res = html_set_element_contents(html, (void*)wp, (void*)lp, (msg == MC_HM_SETTAGCONTENTSW)); return (res == 0 ? TRUE : FALSE); } case MC_HM_GOBACK: { int res = html_goto_back(html, wp); return (res == 0 ? TRUE : FALSE); } case MC_HM_CANBACK: return ((wp ? html->can_back : html->can_forward) ? TRUE : FALSE); case WM_SIZE: { IWebBrowser2* browser_iface; HRESULT hr; hr = html->browser_obj->lpVtbl->QueryInterface(html->browser_obj, &IID_IWebBrowser2, (void**)&browser_iface); if(hr == S_OK && browser_iface != NULL) { browser_iface->lpVtbl->put_Width(browser_iface, LOWORD(lp)); browser_iface->lpVtbl->put_Height(browser_iface, HIWORD(lp)); browser_iface->lpVtbl->Release(browser_iface); } return 0; } case WM_STYLECHANGED: if(wp == GWL_STYLE) { STYLESTRUCT* ss = (STYLESTRUCT*) lp; html->style = ss->styleNew; RedrawWindow(win, NULL, NULL, RDW_INVALIDATE | RDW_FRAME | RDW_ERASE | RDW_ALLCHILDREN); } break; case WM_NOTIFYFORMAT: switch(lp) { case NF_REQUERY: html_notify_format(html); return (html->unicode_notifications ? NFR_UNICODE : NFR_ANSI); case NF_QUERY: return (MC_IS_UNICODE ? NFR_UNICODE : NFR_ANSI); } break; case CCM_SETUNICODEFORMAT: { BOOL tmp = html->unicode_notifications; html->unicode_notifications = (wp != 0); return tmp; } case CCM_GETUNICODEFORMAT: return html->unicode_notifications; case CCM_SETNOTIFYWINDOW: { HWND old = html->notify_win; html->notify_win = (wp ? (HWND) wp : GetAncestor(win, GA_PARENT)); return (LPARAM) old; } case WM_SETFOCUS: if(html->ie_win) { SetFocus(html->ie_win); MC_SEND(html->ie_win, WM_LBUTTONDOWN, 0, 0); MC_SEND(html->ie_win, WM_LBUTTONUP, 0, 0); } return 0; case WM_GETDLGCODE: return DLGC_WANTALLKEYS; case WM_SETTEXT: return FALSE; case WM_GETTEXT: if(wp > 0) ((TCHAR*)lp)[0] = _T('\0'); return 0; case WM_GETTEXTLENGTH: return 0; case WM_NCCREATE: html = html_nccreate(win, (CREATESTRUCT*)lp); if(MC_ERR(html == NULL)) return FALSE; SetWindowLongPtr(win, 0, (LONG_PTR)html); return TRUE; case WM_CREATE: return (html_create(html, (CREATESTRUCT*)lp) == 0 ? 0 : -1); case WM_DESTROY: html_destroy(html); return 0; case WM_NCDESTROY: if(html) html_ncdestroy(html); return 0; } /* Forward keystrokes to the IE */ if(WM_KEYFIRST <= msg && msg <= WM_KEYLAST) { if(html->ie_win) MC_SEND(html->ie_win, msg, wp, lp); return 0; } return DefWindowProc(win, msg, wp, lp); }