📄 edillo.c
字号:
} if (message == MGD_NAV_BACKWARD) a_Nav_back (bw); else a_Nav_forw (bw); return 0;}static void on_keydown (HWND hwnd, int scancode, DWORD ks){ BrowserWindow* bw = (BrowserWindow*) GetWindowAdditionalData2 (hwnd); DwViewport* viewport = (DwViewport*)bw->viewport; long world_height = 0; if (viewport == NULL || viewport->child == NULL) { return; } world_height = viewport->child->allocation.ascent + viewport->child->allocation.descent; switch (scancode) { case SCANCODE_HOME: MGD_scroll_to_x (viewport, 0); MGD_scroll_to_y (viewport, 0); break; case SCANCODE_END: MGD_scroll_to_y (viewport, world_height); break; case SCANCODE_CURSORBLOCKDOWN: on_vscrollbar (hwnd, SB_LINEDOWN, 0); break; case SCANCODE_CURSORBLOCKUP: on_vscrollbar (hwnd, SB_LINEUP, 0); break; case SCANCODE_CURSORBLOCKRIGHT: on_hscrollbar (hwnd, SB_LINERIGHT, 0); break; case SCANCODE_CURSORBLOCKLEFT: on_hscrollbar (hwnd, SB_LINELEFT, 0); break; case SCANCODE_PAGEDOWN:#ifdef ENABLE_DIGITAL_LINK if(current_link_number <= 8); current_link_number++; break;#endif if (ks & KS_ALT) on_hscrollbar (hwnd, SB_PAGERIGHT, 0); else on_vscrollbar (hwnd, SB_PAGEDOWN, 0); break; case SCANCODE_PAGEUP:#ifdef ENABLE_DIGITAL_LINK if(current_link_number >= 1) current_link_number--; break;#endif if (ks & KS_ALT) on_hscrollbar (hwnd, SB_PAGELEFT, 0); else on_vscrollbar (hwnd, SB_PAGEUP, 0); break; case SCANCODE_F: if (ks & KS_CTRL) navigation (hwnd, MGD_NAV_FORWARD); break; case SCANCODE_B: if (ks & KS_CTRL) navigation (hwnd, MGD_NAV_BACKWARD); break;#ifdef ENABLE_DIGITAL_LINK case SCANCODE_ENTER: a_Nav_push(bw, digital_address[current_link_number].url_address); break; case SCANCODE_0: case SCANCODE_1: case SCANCODE_2: case SCANCODE_3: case SCANCODE_4: case SCANCODE_5: case SCANCODE_6: case SCANCODE_7: case SCANCODE_8: case SCANCODE_9: a_Nav_push(bw, digital_address[scancode - SCANCODE_0].url_address); break;#endif default: printf(">> Key pressed!\n"); break; }}static BOOL focus_on_child (HWND hwnd, int scancode, DWORD ks){ HWND hCurFocus; HWND hNewFocus; hCurFocus = GetFocusChild (hwnd); if (!hCurFocus) return FALSE; if (SendMessage (hCurFocus, MSG_GETDLGCODE, 0, 0L) & DLGC_WANTALLKEYS) return TRUE; switch (scancode) { case SCANCODE_CURSORBLOCKDOWN: case SCANCODE_CURSORBLOCKUP: case SCANCODE_CURSORBLOCKRIGHT: case SCANCODE_CURSORBLOCKLEFT: { if (hCurFocus && SendMessage (hCurFocus, MSG_GETDLGCODE, 0, 0L) & DLGC_WANTARROWS) return TRUE; if (scancode == SCANCODE_CURSORBLOCKDOWN || scancode == SCANCODE_CURSORBLOCKRIGHT) hNewFocus = GetNextDlgGroupItem (hwnd, hCurFocus, FALSE); else hNewFocus = GetNextDlgGroupItem (hwnd, hCurFocus, TRUE); if (hNewFocus != hCurFocus) { if (SendMessage (hCurFocus, MSG_GETDLGCODE, 0, 0L) & DLGC_STATIC) break; SetFocus (hNewFocus); if (SendMessage (hNewFocus, MSG_GETDLGCODE, 0, 0L) & DLGC_RADIOBUTTON) { SendMessage (hNewFocus, BM_CLICK, 0, 0L); ExcludeWindowStyle (hCurFocus, WS_TABSTOP); IncludeWindowStyle (hNewFocus, WS_TABSTOP); } } } break; case SCANCODE_TAB: {#if 0 if (hCurFocus && SendMessage (hCurFocus, MSG_GETDLGCODE, 0, 0L) & DLGC_WANTTAB) break;#endif if (ks & KS_SHIFT) hNewFocus = GetNextDlgTabItem (hwnd, hCurFocus, TRUE); else hNewFocus = GetNextDlgTabItem (hwnd, hCurFocus, FALSE); if (hNewFocus != hCurFocus) { SetFocus (hNewFocus); } break; } default: break; } return TRUE;}static int eDilloControlProc (HWND hwnd, int message, WPARAM wParam, LPARAM lParam){ HDC hdc; switch (message) { case MSG_CREATE: SendNotifyMessage (hwnd, MGD_REALIZED, 0, 0); return 0; case MSG_PAINT: hdc = BeginPaint (hwnd); on_paint (hwnd, hdc); EndPaint (hwnd, hdc); return 0; case MSG_HSCROLL: on_hscrollbar (hwnd, wParam, lParam); break; case MSG_VSCROLL: on_vscrollbar (hwnd, wParam, lParam); break; case MSG_KEYDOWN: if (!focus_on_child (hwnd, LOWORD(wParam), lParam)) on_keydown (hwnd, LOWORD (wParam), lParam); break; case MSG_LBUTTONUP: SetFocus (hwnd); case MSG_MOUSEMOVE: case MSG_LBUTTONDOWN: on_mouse_event (hwnd, LOSWORD (lParam), HISWORD (lParam), MAKELONG (wParam, message)); break; case MSG_DESTROY: on_destroy (hwnd); break; case MGD_REALIZED: on_realized (hwnd, GetWindowCaption (hwnd)); break; case MGD_OPENURL: return MGD_open_url (hwnd, (const char*)lParam);#if 0 case MGD_NAV_BACKWARD: case MGD_NAV_FORWARD: return navigation (hwnd, message);#endif case MGD_RESETCONTENT: reset_content ((BrowserWindow*) GetWindowAdditionalData2 (hwnd)); return 0; case MGD_RESIZE: { BrowserWindow* bw = (BrowserWindow*)GetWindowAdditionalData2 (hwnd); return a_Dw_viewport_draw_resize ((DwViewport*)bw->viewport); } } return DefaultControlProc (hwnd, message, wParam, lParam);}static BOOL register_edillo_control (void){ WNDCLASS MyClass; MyClass.spClassName = CTRL_DILLO; MyClass.dwStyle = WS_NONE; MyClass.dwExStyle = WS_EX_NONE; MyClass.hCursor = GetSystemCursor (IDC_ARROW); MyClass.iBkColor = COLOR_lightwhite; MyClass.WinProc = eDilloControlProc; return RegisterWindowClass (&MyClass);}static void unregister_edillo_control (void){ UnregisterWindowClass (CTRL_DILLO);}BOOL edillo_init (void){ a_Prefs_init (); a_Dns_init (); a_Http_init ();#ifdef ENABLE_SSL a_Https_SSL_init ();#endif a_Mime_init (); a_Cache_init (); a_Dicache_init (); a_Dw_style_init (); a_Interface_init ();#ifdef ENABLE_COOKIES a_Cookies_init ();#endif if (!register_edillo_control ()) { return FALSE; } return TRUE;}void edillo_cleanup (void){ unregister_edillo_control (); a_Dicache_freeall (); a_Cache_freeall ();#ifdef ENABLE_SSL a_Https_freeall (); #endif a_Http_freeall (); a_Dns_freeall ();#ifdef ENABLE_COOKIES a_Cookies_freeall ();#endif a_Dw_style_freeall (); a_Prefs_freeall (); a_History_free ();}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -