/* ANT_CANVAS::MENU() ------------------ */ void ANT_canvas::menu(WORD clicked) { SCROLLINFO scrollbar; long long lines; switch (clicked) { /* FILE MENU */ case ID_FILE_EXIT: PostQuitMessage(0); break; case ID_FILE_OPEN_FILE: lines = load_file(); set_scroll_position(1, file->get_current_line_number(), file->get_page_size(), file->get_lines_in_file()); break; } }
void tm_window_rep::set_scroll_pos (SI x, SI y) { set_scroll_position (wid, x, y); }
/* ANT_CANVAS::WINDOWS_CALLBACK() ------------------------------ */ LRESULT ANT_canvas::windows_callback(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { switch(message) { case WM_CREATE: file->set_window_size(((CREATESTRUCT *)lParam)->cx, ((CREATESTRUCT *)lParam)->cy); file->read_file((char *)(L"c:\\ant\\edit\\main.c")); return 0; case WM_CLOSE: PostQuitMessage(0); return 0; case WM_SYSKEYDOWN: case WM_KEYDOWN: return 0; case WM_SYSKEYUP: case WM_KEYUP: return 0; case WM_VSCROLL: { long long new_line, new_position; switch LOWORD(wParam) { case SB_LINEUP: new_line = file->line_up(); break; case SB_LINEDOWN: new_line = file->line_down(); break; case SB_PAGEUP: new_line = file->page_up(); break; case SB_PAGEDOWN: new_line = file->page_down(); break; case SB_BOTTOM: new_line = file->file_end(); break; case SB_TOP: new_line = file->file_start(); break; case SB_ENDSCROLL: // user has finished scrolling, do nothing break; case SB_THUMBPOSITION: // user is tracking the scroll bar case SB_THUMBTRACK: new_position = HIWORD(wParam); new_line = file->goto_line(new_position); break; } set_scroll_position(1, file->get_current_line_number(), file->get_page_size(), file->get_lines_in_file()); InvalidateRect(window, NULL, true); return 0; } case WM_PAINT: render(); return 0; case WM_TIMER: return 0; case WM_MOUSEWHEEL: { long long lines = GET_WHEEL_DELTA_WPARAM(wParam) / WHEEL_DELTA; long long current; if (lines > 0) for (current = 0; current < lines; current++) { file->line_up(); file->line_up(); file->line_up(); } else for (current = 0; current > lines; current--) { file->line_down(); file->line_down(); file->line_down(); } set_scroll_position(1, file->get_current_line_number(), file->get_page_size(), file->get_lines_in_file()); InvalidateRect(window, NULL, true); return 0; } case WM_SIZE: file->set_window_size(LOWORD(lParam), HIWORD(lParam)); return 0; case WM_COMMAND: if (LOWORD(wParam) == IDCANCEL) // ESC key { } else menu(LOWORD(wParam)); return 0; } return (DefWindowProc(hwnd,message,wParam,lParam)); }