%HLTdelta = 40 '-------------------------------------------------------------------------------- GLOBAL OldHLTProc AS LONG '-------------------------------------------------------------------------------- '-------------------------------------------------------------------------------- SUB HighlightCurrentLine(hD AS DWORD, hlcol AS STRING) LOCAL e, r AS STRING LOCAL i, j AS LONG ' Get html code SendString "{HOME}{SHIFT_D}{END}{SHIFT_U}{CTRL_D}c{CTRL_U}" SLEEP 50 e = ClipBoardHtmlGet(hD) IF LEN(e) = 0 THEN BEEP : EXIT SUB ' Handle buffer overflow i = INSTR(e, "") IF i > 0 THEN i = INSTR(i, e, $CRLF) + LEN($CRLF) e = LEFT$(e, i-1) ELSE BEEP ?e,,EXE.NAME$ END IF ' If already highlighted: change highlight color IF INSTR(e, "background:") > 0 AND INSTR(e, "mso-highlight:") > 0 THEN r = e i = INSTR(r, "background:") WHILE i > 0 i += LEN("background:") j = INSTR(i, r, ";") r = LEFT$(r, i-1) + hlcol + MID$(r, j) i = INSTR(i, r, "mso-highlight:") j = INSTR(i, r, "'") r = LEFT$(r, i-1) + hlcol + MID$(r, j) i = INSTR(i, r, "background:") WEND ' Else if not highlighted, add single highlight around fragment zone ELSE i = INSTR(e, "") + LEN("") j = INSTR(i, e, "") r = LEFT$(e, i-1) _ + "" _ + MID$(e, i, j-i) _ + "" _ + MID$(e, j) END IF ' Update HTML clipboard header ClipBoardHtmlUpdateHeader(r) ' Put raw result in clipboard ClipBoardHtmlSetRaw(hD, r) SLEEP 50 END SUB '-------------------------------------------------------------------------------- '------------------------------------------------------------------------------ FUNCTION HLTProc(BYVAL hWnd AS LONG, BYVAL Msg AS LONG, _ BYVAL wParam AS LONG, BYVAL lParam AS LONG) AS LONG LOCAL hDlg AS DWORD STATIC c AS STRING IF Msg = %WM_KEYDOWN THEN ' Key press event c = "" SELECT CASE wParam CASE 96 : c = "transparent" ' 0: transparent (keydown 96) CASE 97 : c = "aqua" ' 1: aqua (keydown 97) CASE 98 : c = "lime" ' 2: lime (keydown 98) CASE 99 : c = "fuchsia" ' 3: fuchsia (keydown 99) CASE 100 : c = "yellow" ' 4: yellow (keydown 100) END SELECT ELSEIF Msg = %WM_KEYUP THEN ' Key release event IF c <> "" THEN WINDOW GET PARENT hWnd TO hDlg : hDlg = GetParent(hDlg) DIALOG END GetParent(hWnd), -1 ' Close highlighter dialog HighlightCurrentLine hDlg, c ' Highlight current line in OneNote c = "" END IF END IF FUNCTION = CallWindowProc(OldHLTProc, hWnd, Msg, wParam, lParam) END FUNCTION '------------------------------------------------------------------------------ '-------------------------------------------------------------------------------- CALLBACK FUNCTION ProcHighlight() LOCAL hEdit AS DWORD LOCAL i, c AS DWORD SELECT CASE CB.MSG CASE %WM_INITDIALOG ' Initialization handler: draw graphic GRAPHIC ATTACH CB.HNDL, 100, REDRAW GRAPHIC COLOR %BLACK, -1 GRAPHIC CLEAR FOR i = 0 TO %HLTdelta*5 STEP %HLTdelta GRAPHIC SET POS (i+5, 5) GRAPHIC PRINT FORMAT$(i/%HLTdelta, "0");":" SELECT CASE i/%HLTdelta CASE 0 : c = %WHITE CASE 1 : c = %CYAN CASE 2 : c = %GREEN CASE 3 : c = %MAGENTA CASE 4 : c = %YELLOW END SELECT GRAPHIC BOX (i+15, 0) - (i+35, 20),, RGB(201,201,201), c IF i = 0 THEN GRAPHIC COLOR RGB(200,0,0), -1 GRAPHIC WIDTH 3 GRAPHIC LINE (i+15, 20) - (i+35, 0) GRAPHIC WIDTH 1 GRAPHIC COLOR %BLACK, -1 END IF NEXT GRAPHIC REDRAW ' Subclass edit control CONTROL HANDLE CB.HNDL, 102 TO hEdit OldHLTProc = SETWINDOWLONG(hEdit, %GWL_WNDPROC, CODEPTR(HLTProc)) CONTROL SET FOCUS CB.HNDL, 102 CASE %WM_COMMAND ' Process control notifications IF CB.CTL = %IDCANCEL THEN DIALOG END CB.HNDL, 0 END SELECT END FUNCTION '-------------------------------------------------------------------------------- '-------------------------------------------------------------------------------- FUNCTION ShowHighlight(BYVAL hParent AS DWORD) AS LONG LOCAL lRes AS LONG LOCAL hDlg AS DWORD LOCAL hEdit AS DWORD LOCAL hIco AS DWORD DIALOG NEW hParent, "Highlight line", , , %HLTdelta*5+4, 32, %WS_POPUP OR _ %WS_BORDER OR %WS_DLGFRAME OR %WS_SYSMENU OR _ %WS_CLIPSIBLINGS OR %WS_VISIBLE OR %DS_MODALFRAME OR _ %DS_3DLOOK OR %DS_NOFAILCREATE OR %DS_SETFONT, %WS_EX_WINDOWEDGE OR _ %WS_EX_CONTROLPARENT OR %WS_EX_LEFT OR %WS_EX_LTRREADING OR _ %WS_EX_RIGHTSCROLLBAR, TO hDlg hIco = ExtractIcon(GetModuleHandle(""), "shell32.dll", 133) SetClassLong(hDlg, %GCL_HICONSM, hIco) SetClassLong(hDlg, %GCL_HICON, hIco) ClipBoardHtmlSet hParent, "" CONTROL ADD GRAPHIC, hDlg, 100, "", 2, 7, %HLTdelta*5, 20 CONTROL ADD TEXTBOX, hDlg, 102, "", -1, -1, 0, 0 DIALOG SHOW MODAL hDlg, CALL ProcHighlight TO lRes FUNCTION = lRes END FUNCTION '--------------------------------------------------------------------------------