Jump to content

UEZ

MVPs
  • Posts

    7,495
  • Joined

  • Last visited

  • Days Won

    95

UEZ last won the day on April 2

UEZ had the most liked content!

About UEZ

  • Birthday 12/03/2007

Profile Information

  • Member Title
    Never say never
  • Location
    Germany
  • Interests
    Computer, watching movies, football (soccer), being lazy :-)

Recent Profile Visitors

11,423 profile views

UEZ's Achievements

  1. @wakillon thanks for testing. vfw is now replaced with x264 dll. @All: Can you please test: ScreenRecorder.7z It is now GUI driven. Limitations: 2GB AVI file and Windows10+.
  2. Case $WM_ERASEBKGND Return 1 This means you're telling Windows not to delete the background, because we've already done that. May flicker when removed. Case $WM_SETFOCUS, $WM_KILLFOCUS These messages appear when you click in the field or move away from it (e.g., by pressing the Tab key). Case $WM_MOUSEMOVE / $WM_MOUSELEAVE This is the logic behind the hover effect (the frame lights up when the mouse hovers over it). _WinAPI_InvalidateRect is basically the “Redraw, please!” command for Windows. If everything works fine without the Case checks, you can leave them out, but this may vary depending on the operating system. I haven't noticed any negative effects without that parts.
  3. 1) As a general rule, when you open a resource, you should release it again to avoid a memory leak. For example, if you constantly call _WinAPI_CreateSolidBrush(), you’re reserving memory without freeing it up. Eventually, the memory will run out. Yes, every call to _WinAPI_CreateSolidBrush() / _WinAPI_DeleteObject() takes processing time, which may become noticeable if there are a large number of calls. I don’t think this plays a major role for “normal” applications. 2) At first glance, it appears that no brush is being used, but I assume that Windows creates a brush internally and then deletes it to prevent a memory leak.
  4. Use BGR values to set color directly $tNMLVCUSTOMDRAW.clrTextBk = 0x60004A ;indigo $tNMLVCUSTOMDRAW.clrText = 0xFFFFFF
  5. ;Coded by UEZ build 2020-04-21 #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <GuiListView.au3> #include <WinAPISys.au3> Opt("MustDeclareVars", True) Example1() Example2() Func Example1() Local $hGUI = GUICreate("Listview Example", 300, 300) Local $idListview = GUICtrlCreateListView("Col1|Col2|Col3 ", 10, 10, 200, 150) GUICtrlCreateListViewItem("item2|col22|col23", $idListview) GUICtrlCreateListViewItem("item1|col12|col13", $idListview) GUICtrlCreateListViewItem("item3|col32|col33", $idListview) Local $idButton = GUICtrlCreateButton("Test", 75, 170, 70, 20) GUISetState() While True Switch GUIGetMsg() Case $GUI_EVENT_CLOSE GUIDelete($hGUI) ExitLoop Case $idButton _GUICtrlListView_GetSelectedIndices($idListview) GUICtrlSetState($idListview, $GUI_FOCUS) EndSwitch WEnd EndFunc Func Example2() Local $hGUI = GUICreate("Listview Custom Draw Example", 300, 300) Local $idListview = GUICtrlCreateListView("Col1|Col2|Col3", 10, 10, 200, 150, BitOR($LVS_SHOWSELALWAYS, $LVS_REPORT)) _GUICtrlListView_SetExtendedListViewStyle($idListview, BitOR($LVS_EX_FULLROWSELECT, $LVS_EX_DOUBLEBUFFER)) GUICtrlCreateListViewItem("item2|col22|col23", $idListview) GUICtrlCreateListViewItem("item1|col12|col13", $idListview) GUICtrlCreateListViewItem("item3|col32|col33", $idListview) Local $idButton = GUICtrlCreateButton("Test", 75, 170, 70, 20) GUISetState(@SW_SHOW) GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY") While True Switch GUIGetMsg() Case $GUI_EVENT_CLOSE GUIDelete($hGUI) ExitLoop Case $idButton ConsoleWrite("Button clicked." & @CRLF) EndSwitch WEnd EndFunc ;==>Example Func WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam) Local $tNMHDR = DllStructCreate($tagNMHDR, $lParam) Local $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom")) Local $iCode = $tNMHDR.Code Switch $iCode Case $NM_CUSTOMDRAW Local $tNMLVCUSTOMDRAW = DllStructCreate($tagNMLVCUSTOMDRAW, $lParam) Local $dwDrawStage = $tNMLVCUSTOMDRAW.dwDrawStage Switch $dwDrawStage Case $CDDS_PREPAINT Return $CDRF_NOTIFYITEMDRAW Case $CDDS_ITEMPREPAINT Local $dwItemSpec = $tNMLVCUSTOMDRAW.dwItemSpec If _GUICtrlListView_GetItemSelected($hWndFrom, $dwItemSpec) Then Local $iState = $tNMLVCUSTOMDRAW.uItemState ;remove SELECTED-State and draw system colors $tNMLVCUSTOMDRAW.uItemState = BitAnd($iState, BitNot($CDIS_SELECTED), BitNot($CDIS_FOCUS)) $tNMLVCUSTOMDRAW.clrTextBk = _WinAPI_GetSysColor($COLOR_HIGHLIGHT) $tNMLVCUSTOMDRAW.clrText = _WinAPI_GetSysColor($COLOR_HIGHLIGHTTEXT) Return $CDRF_NEWFONT EndIf EndSwitch EndSwitch Return $GUI_RUNDEFMSG EndFunc ;==>WM_NOTIFY
  6. Can you try instead? If _IsBorderedControl($sClass) Then ; Trigger WM_NCPAINT to redraw border with updated focus color ;_WinAPI_SetWindowPos($hWnd, 0, 0, 0, 0, 0, BitOR($SWP_NOMOVE, $SWP_NOSIZE, $SWP_NOZORDER, $SWP_FRAMECHANGED)) _WinAPI_RedrawWindow($hWnd, 0, 0, BitOR($RDW_FRAME, $RDW_INVALIDATE, $RDW_NOERASE)) EndIf
  7. I added the exlusion for the up/down control in Case $WM_PAINT (_WinProc() function). ; also exclude the system Up/Down of the TabControl itself Local $hTabUpDown = _WinAPI_FindWindowEx($hWnd, "msctls_updown32") If $hTabUpDown And _WinAPI_IsWindowVisible($hTabUpDown) Then $tCR = _WinAPI_GetWindowRect($hTabUpDown) If Not ($tCR.right < $tPR.left Or $tCR.left > $tPR.right Or _ $tCR.bottom < $tPR.top Or $tCR.top > $tPR.bottom) Then $left = Max($tCR.left, $tPR.left) - $tPR.left $top = Max($tCR.top, $tPR.top) - $tPR.top $right = Min($tCR.right, $tPR.right) - $tPR.left $bottom = Min($tCR.bottom, $tPR.bottom) - $tPR.top DllCall("gdi32.dll", "int", "ExcludeClipRect", "handle", $hMemDC, "int", $left, "int", $top, "int", $right, "int", $bottom) DllCall("gdi32.dll", "int", "ExcludeClipRect", "handle", $hDC, "int", $left, "int", $top, "int", $right, "int", $bottom) EndIf EndIf This works for me. up/down control will be displayed when more tabs are added than it can be displayed.
  8. Thank you both for testing. 👍 @AndyG my previous version is ok for x86 because I didn't use threading. With lasted update I changed it to threading, ergo encoding is executed in a separate thread but for some reason it doesn't work for x86. Actually I cannot find the issue - maybe VfW‑Thread‑Affinity‑Problem under x86.
  9. Should be fixed now - you may try it again. x64 should work - x86 may have some issues and may crash! Btw, I renamed the GraphicsCaptureWrapper DLLs and record time is now 20 seconds. You don't need Ultrafast, Superfast should be ok, too.
  10. I got same message -> need to investigate... Thx
  11. @AndyG Were there any problems with the player? @Danyfirex reported problems with VLC Player playing AVI file.
  12. Can you please test also ? Thanks.
  13. Can someone with a 2K+ monitor test whether screen recording works at 60 fps? The previous version used the GDI API to send frames to the codec, which is too slow at high screen resolutions. Windows build 18362+ required! Link to: ScreenRecorder2_vfw Please unzip the 7-Zip archive and run one of the executable files. Recording will begin on the main screen as soon as the CMD window appears and a yellow rectangle is displayed. Please run “Configure_x264vfw.cmd” (default is the x64 DLL version), adjust the settings according to this screenshot, and then click “OK”: Once the recording is complete, the “Actual Time” should be roughly equal to the “Target Time,” which is 15 seconds (900 frames). Can you please post your screen size and the “actual time”? My result: 1920x1200 Actual time : 15.01514229999849 seconds The closer the actual time is to the recorded time, the more accurate the recording was. Thanks.
×
×
  • Create New...