Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Draw on a control
Sets an user-defined function to be called to draw on a control in a dialog or other window.

Attached Files
.qml   Draw on control.qml (Size: 5.08 KB / Downloads: 776)
Thanks, works great for the icons!!! I couldn't however, understand how to use the example to change the vertical splitter into a horizontal splitter with updown arrows. The marlett character "v" for up/down arrows is great but I couldn't get it to size right. with the TextOutW definition of "dll gdi32 #TextOutW hdc x y @*lpString c". For some reason, it was getting extremely large or small when I put variable or absolute integer values in for x and y depending on the size and height/width of the splitter bar.
Thanks though for an amazing UI element.
Hi Gintaras,
I am trying to use this function in an executable therefore the icon I refer to will need resource id. Unfortunately, if I include a resource id in the filepath for the icon, it fails to appear when I run the dialog:

Select All      Help
__Hicon-- ico=LoadImageW(0 @IconPath IMAGE_ICON 0 0 LR_LOADFROMFILE)

Is there a way to get this into an executable?

Now added code for horizontal splitter too.

Can be
GetFileIcon(":5 $qm$\cut.ico")
many many thanks Gintaras!
Hi Gintaras,
This is probably figure-out-able from what you have in the section and examples but I am still having trouble. I would like to give a color to both the background dialog and the splitter. Perhaps same perhaps different.
To give dialog background color, I use this:

Select All      Help
DT_SetBackgroundColor(hDlg 0 0xB48246) ;;blue 70 130 180

If there was a way to similarly assign color to this element, that would be great. I guess if it was transparent, it would take the background color but still be grab-able?

I see that this may be relevant but not yet sure how to implement:

Select All      Help

Not sure what this would do with any draw-on-controls.

Thanks for any help!
Example with 3 splitters. Vertical transparent, horizontal yellow, vertical with arrows and icon.
Function Dialog137
Select All      Help
function# hDlg message wParam lParam
if(hDlg) goto messages

str controls = "3 4 7"
str lb3 e4 e7
if(!ShowDialog("Dialog137" &Dialog137 &controls)) ret

;0 "" 0x90C80AC8 0x0 0 0 223 135 "Dialog"
;3 ListBox 0x54230101 0x200 4 4 96 62 ""
;4 Edit 0x54231044 0x200 106 4 114 62 ""
;7 Edit 0x54231044 0x200 4 74 96 48 ""
;1 Button 0x54030001 0x4 120 116 48 14 "OK"
;2 Button 0x54030000 0x4 170 116 48 14 "Cancel"
;5 QM_Splitter 0x54000000 0x0 100 4 6 62 ""
;6 QM_Splitter 0x54030000 0x0 4 66 216 8 ""
;8 QM_Splitter 0x54030000 0x0 100 74 8 48 ""
;DIALOG EDITOR: "" 0x2030605 "*" "" "" ""

sel message
,DT_SetBackgroundColor(hDlg 0 0xB48246) ;;blue 70 130 180
,__GdiHandle-- hBrush=CreateSolidBrush(0xffff)
,case WM_COMMAND goto messages2
,case WM_CTLCOLORSTATIC ;;probably from a splitter
,sel GetDlgCtrlID(lParam)
,,;case 5 ;;do nothing, it's transparent by default
,,case 6 ret hBrush ;;horz splitter
,,case 8 ;;draw something, if you have function draw_on_splitter_proc from "Draw on control" examples
#ifdef draw_on_splitter_proc
,,RECT ru; GetClientRect lParam &ru
,,draw_on_splitter_proc lParam wParam ru 0
sel wParam
,case IDOK
ret 1
weird, example not working in installed or portable versions of QM editor. - splitters remain standard default color.
Will try later to put it into my specific code.
Maybe you have older splitters version...
Yes, updated now.
Resizable dialog, resizable controls, splitters
yes that was the problem. I just redownloaded from forum archive and works fine. Thanks!!!!, S

Forum Jump:

Users browsing this thread: 1 Guest(s)