DCX - Dialog Control Xtension
v1.4.0
DCX
This DLL lets you add new controls to mIRC dialogs as well as change other features like the visual style, position etc...
DCX does not support mIRC controls (NOT EVEN mIRC TABS), nor anything related to mIRC normal dialogs except it's menus. DCX does not work like MDX so please read the manual and see dcx.mrc and dcx_tools.mrc for examples.
XPopup (special mIRC menus) need to be patched to work on mIRC v6.2! Custom menus still work normally.
The DLL creates the controls directly on the mIRC dialog and you use clone functions defined by /xdid and $xdid which behave like the regular /did and $did to interact with the controls.

The event handling in the DLL is supported by a callback alias supplied by the user when the dialog is marked before adding DCX controls. The callback alias is called from within the DLL to ask for info (if you want to modify the default behavior in the DLL thus the "callback" type) and will supply the user with the events and parameters of these events.

Every function in this DLL returns a value if used with the $dll identifier. D_OK [function]: [message] if successful, D_ERROR [function]: [message] otherwise.

Note: Mandatory parameters are expressed in [SQUARE] brackets and optional parameters in (ROUNDED) brackets.
Note: We strongly suggest you load the dcx_tools.mrc file included in the zip as it contains the necessary /xdialog, /xdid, /xdock, /xtray, /xstatusbar, /xtreebar and /xmenubar aliases and identifiers needed to use the DLL.
Note: Function calls, styles, and references to anything DCX related are all case sensitive!
GDI+
For advanced support for images (such as extra file formats and drawing routines), Microsoft has released a library called GDI+. This is included in Windows XP, however older versions of Windows may not have this.

Use $dcx(IsUsingGDI) to check whether or not you have GDI+ support on your computer. If you do not, you can download it here.

Callback Alias Events
Overview
Every DCX Control fires events upon user action on the control. These events are sent to an alias specified when the dialog is Marked.

Why are the events not sent like regular on *:DIALOG: events?
Well for one thing, mIRC events are linear and static in the way that you cannot return any value to the event manager, to modify the default behavior of the event. Using callback support with an alias enables this type of interaction.

Callback Event Data
Format: [NAME] [EVENT] [ID] [PARAM]
Parameters:
NAME $1 = Name of the dialog that the event came from.
EVENT $2 = Name of the event (eg. sclick, dclick, ...)
ID $3 = ID of the control that fired the event.
PARAM $4- = Additional information, event specific (usually $null, except specified otherwise in documentation)
 
Note.
Some control events support return values to change their default behaviour. When returning special values during certain events, such as nosize for sizing, interact with the DLL and modify the default event behavior. The events that support a return value will have a description of what the return value does when returned.
Latest Changes
If you notice any inconsistancies or errors with the documentation, please put a post on the forum on this thread!

v1.4.0
  • New features
    1. added DCXML
    2. added /xtreebar to modify mIRCs treebar
    3. added /xstatusbar to dock a statusbar into mIRC's main window
    4. added XMenuBar to modify mIRCs menubar
    5. added a dialog callback called 'zlayershow'
    6. added /xdid -V for listview which scrolls list to make an item visible
    7. added /xdid -P for (rich)edit to paste clipboard content
    8. added +o flag for /xdock -b to use the old style treebar docking
    9. added /xdialog -P to use xpopup commands on dialog menus
    10. added +t flag to /xdid -i for image control to tile the image
    11. added /xdid -w for stacker to add images to internal imagelist
    12. added /xdid -y for stacker which clears the internal image list
    13. added /xdid -o for image control to offset picture
    14. added general 'noformat' style to disable support for mIRC formatted text in some controls
    15. added /xdid +k -1 for statusbar to reset color
    16. added +f flag to /xdid –t for statusbar to display formatted mIRC text
    17. added +c flag to /xdid –t for statusbar to create child controls
    18. added text support to line control
    19. added /xdid -a for text control to append text
    20. icon loading supports +a flag to show associated filetype icon if icon fails to load from specified file
    21. added animate styles to /xdid -h and /xdid –s
    22. /xdid -R +f can now be combined with the +R flag so image is resized to control size before applying region
    23. added 'alpha' support to treeview
    24. added 'alpha' support to trackbar
    25. added $xdid().isloaded property to directshow to determine if a file is loaded
    26. added +b flag to /xdock -n to disable scrollbars
    27. added $xdid().fname for directshow to get loaded filename
    28. added $xdid().fname for image to get loaded filename
    29. added 'closable' style for tab control to add X button on tab items
    30. added 'gradient' style for tab for gradient item background
    31. added 'closetab' event for tab control when the close button is clicked
    32. added +a flag to /xdid -a for directshow which specifies audio only
    33. added 'noheadersort' style to listview
    34. added /xpopup -R rounded style and ability to set transparency level
    35. added $xpopup().isrounded
    36. added $xpopup().alpha
    37. added $dcx(PickIcon, index filename) to open an icon selector on XP+
    38. added $xdid().wname for docked @window control to retrieve window name
    39. added 'SelectedText' colour (index 11) to xpopup menus
    40. added +r flag for /xdid -C to set border colour
    41. added +b flag for /xdid -R to set control alpha blending level
    42. added +v flag for /xdialog -b to set vista styled dialog (2k+) (WARNING: uses extremely high processing power on older machines)
    43. /xdialog -t now allows setting of alpha value and transparent colour
    44. added /xdialog -V to adjust the vista aero glass area
    45. added $dcx(ActiveWindow) to retrieve properties of the currently active window within operating system
    46. added /xdid -v for tab control which moves an item to a new position
    47. added /xdid -l for edit to change readonly state
    48. added $xdid().isreadonly to edit control
    49. added xdid -r for text control to clear text
    50. added 'returndefault' style to ColorDialog
    51. added 'draglist' style to list control
    52. added callbacks itemdragbegin, itemdragcancel, itemdrag, itemdragfinish to list control
    53. added 'dragline' style to list control
    54. added support for a background image via /xdid -G for treeview
    55. added 'selected' and 'deselected' events to listview
    56. added 'selchange' event to treeview
    57. added 'showsel' and 'noshowsel' to /xdock -F +s styles (now moved to /xtreebar +s)
    58. added 'sizing' event to tab control
    59. added /dcx WindowProps +r to simulate a right click
    60. added $xtreebar().item to retrieve text from mIRC Treebar
    61. changed statusbar /xdid -l to accept percentage values as valid widths. values without the % symbol are considered fix widths
    62. added 'noauto' style to statusbar
    63. added 'noauto' style to rebar
    64. allowed divier to host all control types
    65. added 'showsel' style to edit
    66. allowed statusbar to host all control types
    67. added 'keydown' event to listview
    68. added general style 'hidden' to all controls except mdialog and mwindow
    69. added 'alpha' style to tab
    70. added /xdid -y to enable/disable keydown events for button being held down
    71. added listview /xdid -W This command lets you change the viewing mode
    72. added overlay icon support to treeview and listview
    73. added $xdid(listview).columnorder to get the order of the columns
    74. added listview +m flag to /xdid -n to allow manual width specification for all widths at once
    75. added dialog callback 'isverbose' which is sent as soon as a dialog is marked
    76. added listview /xdid -o to allow user to change column order
    77. added VALUE to sclick, rclick and mousebar as they were in docs (but not included in code)
    78. when space is pressed and checkboxes enabled, stateclick event will be triggered
    79. 'nospace' is accepted as a return value for 'keydown' to prevent the user from using the spacebar to change checkbox values
    80. added $xdid(tab).mouseitem
    81. added $xdid(toolbar).dropdownpoint
    82. added $xdid().textcolor
    83. added $xdid().textbgcolor
    84. added $xdid().bgcolor
    85. added ability to load from hash tables for listview via /xdid -a
    86. added ability to load from hash tables for treeview via /xdid -a
    87. added ability to load from hash tables and files for list via /xdid -A
    88. added 'multicol' style which allows a multi column list
    89. added 'hsbar' style to list which enabled the horizontal scrollbar
    90. added list /xdid -m command to configure 'multicol'
    91. added /xdialog -S
    92. added mIRC formatted text support to list
    93. added 'noformat' style to disable mIRC text formatting to list
    94. added $xdid(list).find support
    95. added comboex 'hscroll' style which enables the horizontal scroll bar
    96. changed /xpopup -s to support an optional hwnd argument that allows the popup to be opened relative to a specific window
    97. treeview - added /xdid -S to save contents to file
    98. directshow - added $xdid().state
    99. general - added /xdid -C +g/G flags to set gradients
    100. added hgradient and vgradient styles to various controls
    101. added /xtreebar -T to enable DCX controlled drawing of the mIRC TreeBar
    102. added /xtreebar -c to change TreeBar colors
    103. added /xtreebar -w to change TreeBar icons
    104. added infotips style to xtreebar
    105. added xtreebar styles balloon and noballoon (see note)
    106. changed /xdid to support `/xdid [cmd] id-id [options]` and `/xdid [cmd] id,id-id [options]` just like mIRC does with /did
    107. added /xstatusbar -f
    108. added `check` style and `checkchange` event to box
    109. added /xdialog -S to resize client area
    110. added 'check' style and 'checkchange' event to box
    111. added /xdialog -S
    112. added /xpopup -M
    113. added $xpopup().marked
    114. added $xdid().selected to listview
    115. added events: close (calendar hidden), open (calendar shown), change (date/time changed) to datetimepicker
    116. added event 'showtip' to trackbar
    117. added +f flag for dcxLoadIcon() functions (which affects many controls) to allow loading of filetype icon
    118. added BrowseDialog
  • Syntax changes
    1. updated dcx_tools.mrc to include /xstatusbar, /xtreebar and /xmenubar aliases. please update your scripts!
    2. moved statusbar and treeview commands from /xdock to /xstatusbar and /xtreebar
    3. changed stacker /xdid -a to support image indexes
    4. changed listview /xdid -a to include OVERLAY, COLOR and BGCOLOR (for subitems)
    5. changed listview /xdid -j to include COLOR and BGCOLOR (optional parameters)
    6. changes to icon loading commands such as /xdid -w to support icon flags which affect most controls
    7. changed /xpopup -i to support flags
    8. /xtray now supports (and hence requires) icon flags
    9. changed $xdock(mIRC) switchBarSize, toolBarSize and treeBarSize to return 'x y w h' instead of just 'w h'
    10. changed statusbar /xdid -l to take widths instead of border offsets
    11. moved /xdock -G to /dcx GhostDrag
    12. changed $xstatusbar properties; 'isStatusBar' to 'visible', 'statusText' to 'text', 'statusParts' to 'parts' and 'statusTooltip' to 'tooltip'
    13. modified (rich)edit /xdid -S to make END parameter optional (to change caretpos)
    14. mwindow now accepts HWND as well as @window name for docking
    15. the 'changing' callback event for dialogs now include sizing, moving or both to determine which event occurred and the dialog sizes.
    16. /dcx xSignal changed to support optional flags +dst (xdock, xstatusbar, xtray)
    17. changed treeview and listview /xdid -w to allow setting an icon as an overlay icon. READ NOTES!
    18. listview /xdid -l now supports optional parameter OVERLAY
    19. changed [N] to be an optional parameter in $xdid(listview).hwidth so all widths are returned
    20. $xdid(lv).text parameter NSUB is now 1-based index
    21. $xdid(lv).icon parameter NSUB is now 1-based index
    22. $xdid(lv).seltext parameter NSUB is now 1-based index
    23. $xdid(lv).seltext NSUB is now optional, returns first column by default
    24. listview /xdid -n parameter COL is now 1-based index
    25. listview /xdid -v parameter COL is now 1-based index
    26. modified treeview /xdid -j to support overlays
    27. added header ID to listview 'trackbegin' event
    28. switched EVENT and DCXStatusBar parameters in XStatusBar signals
    29. dialog 'close' event has been broken up into 'close' and 'scclose' to provide better control
    30. made $xdid(listview, N, NSUB).text NSUB parameter optional (returns first column by default)
    31. listview events stateclick/sclick/dclick/rclick/rdclick/hover/selected/deselected SUBITEM index is now 1-based indexes
    32. listview event labelbegin now provides N and NSUB
    33. colorcombo /xdid -c now accepts 0 to clear selection (thanks andy for idea)
    34. moved VALUE param to the end of events (no syntax changes required)
    35. OpenDialog and SaveDialog now also return the full pathname
  • Fixes and changes
    1. added check for correct flags prefix '+' in image control xdid -i
    2. added /xdid -Z as a temporary fix until the -Z listview problem is fixed
    3. changed WM_CTLCOLOR message parsing so they work correctly when a background brush is not set (fixed /xdid -C bug)
    4. changed AdjustMDIRect() to reserve space for docked dialogs only if they are visible. This has a side effect in that dialogs docked within the init event never have the visible flag set so show up wrong, This is fixed by using a timer
    5. changed /xdialog -x to send WM_CLOSE instead of using DestroyWindow()
    6. changed /xdid -T to use ListView_SetInfoTip()
    7. added fix for 1px images being stretched
    8. changed $xdid().text to use a 1-based index for parameter N
    9. fixed directshow $xdid().currentpos
    10. changed directshow /xdid -a to InvalidateRect() after loading media
    11. fixed listview bold/underline/etc flags being misapplied to subitems
    12. fixed /xdid -a stacker check for numtok
    13. image fixed background updating when transparent.
    14. fixed /dcx WindowProps check for -FLAG to +FLAG
    15. fixed the box border style when no text is supplied
    16. changed listview /xdid -a to check for nPos < 0 rather than == -1
    17. changed stacker WM_DRAWITEM to only set back mode to TRANSPARENT when doing non-formatted text rendering
    18. changed statusbar /xdid -t to check for an invalid part and give an error
    19. changed statusbar /xdid -v to give an error when an invalid part is supplied
    20. changed mdialog to set back to OrigID in destroy, instead of setting to ID
    21. /xdid -h and /xdid -s now update CLA immediately
    22. changed GetHwndFromString() to allow supplying an HWND (allows mdialog/mwindow to dock via the hwnd)
    23. changed /xdialog -d to remove the control from the internal list when its an embedded dialog/window
    24. changed object delete code to set parent differently (this fixes most but not all of the undocking problems)
    25. changed /xdid -J to use LoadImage(IMAGE_CURSOR) and get a non-shared cursor handle (this allows us to delete the cursor and fixed the graphics corruption bug)
    26. changed /xdid -J to check if file exists
    27. changed /xdialog -q to check file exists
    28. changed WM_SETCURSOR code to check if the cursor to set is the same as the current before trying to set
    29. changed pager /xdid -d to remove mdialog or mwindow control from the internal list
    30. changed edit /xdid -j to set the ES_PASSWORD style before getting the char, allowing the XP style to be used instead of always setting to *
    31. small change to some xpopup if's to use a TString compare instead of doing a gettok as well
    32. added a buffer delete to IsFile() to cover the case where the search fails after having found the file the first time
    33. changed /xpopup -b to check a file exists and give an error if it doesnt
    34. changed /xpopup -b to accept 'none' or $null as a file name to remove current image
    35. changed /xpopup -i to check a file exists and give an error if it doesnt
    36. changed $xpopup().style to support 'vertical' and 'verticalrev' styles
    37. changed dcxLoadIcon() to use GDI+ when +P is supplied. this allows it to load any GDI+ supported image format as an icon
    38. changed dcxLoadBitmap() to use GDI+ when it can to load the image. this allows all bitmap loading commands to load any GDI+ supported format
    39. fixed incorrect coordinates of toolbar dropdown
    40. changed ChangeHwndIcon() to avoid doing things twice when small and large icons are the same
    41. changed /xpopup -b to trim() the filename
    42. fixed rebar wasn't returning the results from child controls
    43. changed directshow /xdid -a to check for a min of 4 args
    44. added a check for at least 4 args in subitems to listview /xdid -a
    45. changed listview /xdid -t to use the autoSize() function
    46. added check for directx 9 to directshow /xdid -a
    47. fixed trackbar thumb image rendering when selected
    48. changed /xdialog -j to only redraw the whole dialog if an ID isnt specified
    49. changed /xdock -A to halt on error
    50. fixed bug where button text would be forgotten when other buttons were deleted
    51. all dcx controls automatically redraw themselves upon theme change
    52. fixed /xdock -u requiring flags
    53. added background color drawing to panel via /xdid -C
    54. added directshow $xdid().volume to get current volume
    55. added directshow /xdid -V to set volume
    56. added directshow events rbdown, rbup and rclick
    57. fixed xpopup bug in DrawItemCheckBox() where pen was deleted without first being removed from HDC
    58. fixed duplicate sclick event when clicking on an unselected tab
    59. fixed treeview bug when moving an item to an empty parent
    60. fixed listview $xdid().pbar to work correctly
    61. added code to fix listview font changes per subitem
    62. added code to make sure listview has focus before doing a label edit. No longer need to force focus first
    63. changed ghost drag to use the set alpha level after a drag instead of 255
    64. changed button background drawing a little
    65. changed pbar/image background drawing to only do parents background when transparent
    66. fixed tab bug where incorrect button ID was shown in sclick event
    67. fixed xpopup menu corruption when MDI client (channel) window is maximized then restored
    68. modified checkbox so correct $xdid().state value can be used during sclick event
    69. changed /xdialog -x to only send WM_CLOSE to modal dialogs
    70. added WM_CLOSE check for escape being pressed. Fixes divider being destroyed bug
    71. fixed listview pbars within items scrolling oddly when horizontal scroll is used
    72. changed /xdialog -t alpha and /xdialog -t transparentcolor to accept 'none'
    73. fixed bug with /xtray -i loading the wrong icon index
    74. changed /xdid -U to remove focus from control correctly
    75. changed how the panel and box controls are registered, which fixes the 'no tooltips' and 'label edit' bugs
    76. changed dcxSignal boolean into a finegrained struct
    77. changed mIRCSignalDCX() to require a boolean parameter
    78. changed SystemTimeToMircTime() to use mIRCevalEX()
    79. xtray and xstatusbar signals are now sent by default, but xdock signals are still disabled
    80. fixed calendar 'select' callback for single select
    81. fixed calendar $xdid().value returning 0 for single select
    82. added spaces between names in Version and changed '&' to 'and'
    83. added initImageList() for listview to make icon adding code cleaner
    84. added token count checking to /xdid -j
    85. ColorDialog, OpenDialog, SaveDialog, FontDialog and MsgBox. They no longer support modeless owners due to FindOwner()
    86. fixed /xdid -a so it adds to end if N out of range (thanks andy)
    87. fixed $xdid(listview).sel from appending unecessary comma at the end of list
    88. fixed /xdid -Z, but only for report view
    89. /xpopup -R +a 255 no longer causes a minor flicker when it tries to set opacity even when not supposed to
    90. fixed isverbose bug, missing ','
    91. fixed a small delete bug in listview xdid -o
    92. changed /xdid -c/-d/-o to take item number 0 as meaning the last item in list
    93. changed activateSelectedTab() to not activate or redraw an inactive tab when sizing
    94. changed ExecuteLayout() to use SWP_NOACTIVATE | SWP_NOREDRAW | SWP_NOOWNERZORDER
    95. changed getFont() to return an HFONT and to use the GetWindowFont() macro
    96. changed getAnimateStyles() to check for a valid + flags char and to use a switch() statement
    97. changed listview/treeview regex search to allow for multiple matches to pattern
    98. fixed mIRC_DrawText() not vertically centering text when DT_VCENTER was used
    99. changed mIRC_DrawText() to reset font weight to original weight on a ctrl+o
    100. added check to DrawDialogBackground() for temp hdc being NULL
    101. changed treeview item select code to stop bkg image being skewed when an item is expanded
    102. changed /xdid Invalid ID error to reflect that it is an xdid error
    103. changed treeview drawing a little when transparent. Now only sets noredraw when WS_EX_TRANSPARENT
    104. treeview - changed /xdid -a to mask out the dcx flags as these were messing up the overlay and state icons.
    105. treeview - changed parsePath() to return the item handle instead of TVI_xxx values (needed for xml saving).
    106. dialog - added workaround for richedit not redrawing correctly in buffered redraw (WM_SIZE)
    107. xdock - now supports treebar class in mIRC v6.30
    108. text - fixed redraw bug when control is enabled/disabled and formatted text is being used.
    109. xdock - changed AdjustRect() to correctly position treeview within treebar when statusbar is on.
    110. xtreebar - fixed style `ident` to be `indent`
    111. box - fixed mem leak in $xdid().inbox
    112. statusbar/xstatusbar - added check to -l command to stop the % parts adding up to > 100%
    113. toolbar - fixed /xdid -q bug where the command id was used but the TBIF_BYINDEX flag was specified.
    114. toolbar - changed /xdid -c and -i to use the TBIF_BYINDEX flag.
    115. xtreebar - added check for valid - char in switch.
    116. xtreebar - improved the handling of a non-winsdk compile.
    117. xtreebar - added an enum for all the /xtreebar -s styles.
    118. xtreebar - changed invalid style error to return the style in question.
    119. xtreebar - changed /xtreebar -c to check for a valid + char in flags.
    120. xtreebar - changed the image list we create in /xtreebar -w to use the icon sizes in the default list instead of 16x16 (this is still the default if the sizes cant be found)
    121. xpopup - changed /xpopup -l to accept `default` in place of an RGB value
    122. xpopup - changed $xpopup() to support the mirc and mircbar menus.
    123. xpopup - changed /xpopup -p to accept `default` as a colour value.
    124. xpopup - changed XPopupMenu::DrawGradient() to reduce the width by `dy` just like it reduces the height. This stops the right hand border being drawn over.
    125. xpopup - fixed bug where $xpopup().ismenu would always return $false
    126. dialog - fixed a bug in parseComControlRequestEX() where p_Control wasnt checked for NULL.
    127. listview - changed $xdid().mouseitem to return the subitem as well.
    128. edit - changed text handling code to support wide chars.
    129. xpopup - added monitor offset to menus opened by xpopup -s (requires testing)
    130. toolbar - fixed /xdid -c for first button.
    131. richedit - fixed link event not triggering
    132. richedit - fixed crash on link event
    133. richedit - fixed crash for $xdid().text on single line (need to add multi line number range check)
    134. richedit - added line number checks to $xdid(N).text to ensure it is within a valid range (0 < N < line count)
    135. xpopup - changed /xpopup -s to adjust menu position on the assumption that the x & y are relative to the client rect when an hwnd is supplied.
    136. ipaddress - commented out unecessary /xdid -r code
    137. (rich)edit - added code to /xdid -S to move caret to selected text
    138. button redraws after icon is set
    139. fixed tooltip hwnd wasnt correctly initialized to NULL
    140. changed CreateHDCBuffer() to copy the Pen, Brush, Layout & Font too
    141. added getting of the GetThemeColor() function from uxtheme
    142. button/text/ipaddress - changed the handling of `tooltips` style to report an error if tooltips havent been enabled for the dialog
    143. text - changed /xdid -t to use InvalidateParentRect()
  • DCX Project
    1. added VS2008 project files
    2. removed commented code
    3. added TGetWindowText() function which gets the window text as a TString
    4. fix possible memleak with treeview setImageList()
    5. moved some mIRC HWND's into mIRCLink
    6. changed $dcx(GetSystemColor), $dcx(ColorDialog), $dcx(FontDialog) and $dcx(GetTaskbarPos) to avoid an unneeded copy to set the return value
    7. made parseListviewExStyles() and createImageList() static functions
    8. added dcxDock class which handles behaviour
    9. changed UltraDock to use new dcxDock class
    10. added TreebarDock using dcxDock class, which takes the same flags as UltraDock
    11. changed /xdock -b to use the new TreebarDock by default
    12. moved the drawing code for images to DrawBMPImage() and DrawGDIImage()
    13. updated dcx_tools.mrc /xdock alias to pass along $2-
    14. added DrawItemImage() for stacker to render the items image
    15. added mIRC_DrawText() function which draws a mIRC string using mIRC control codes
    16. changed IsFile() to do a file search before saying it can't access a file (allows it to find files in the system PATH)
    17. moved a whole bunch of functions out of misc.cpp and into mircFunctions.cpp or windowFunctions.cpp
    18. changed dcx_tools.mrc /return calls to /returnex
    19. added defines to TString such as SPACE, TAB, COMMA
    20. changed all controls to have an improved parseInfoRequest() that uses a TString prop instead of doing lots of gettoks
    21. changed some to_num() calls to to_int() when the number was typed as an int
    22. changed the $xpopup().style to use a switch statement instead of the ifs
    23. fixed statusbar $xdid().tooltip using gettok(3) when it should have been gettok(4)
    24. changed DrawParentsBackground() to only use dhwnd if it is not null
    25. changed WM_CTLCOLOR messages to set the background mode as TRANSPARENT and return a HOLLOW_BRUSH when the control hass WS_EX_TRANSPARENT set. this improves the look of some controls abit (exp radio or check)
    26. changed box to use a TString object from right after GetWindowText()
    27. changed to be always transparent
    28. moved DCXML out of dialog into its own section
    29. moved some defines to before the includes in defines.h to allow testing out the _SECURE_SCL 0 in the release builds
    30. toolbar changed to use MapWindowPoints() instead of ClientToScreen() and ScreenToClient()
    31. added NULL check to unregistreDefaultWindowProc()
    32. fixed memory leak in BitmapRegion()
    33. uncommented file access check from ChangeHwndIcon()
    34. changed some ifs in BitmapRegion() to make the meaning clear
    35. added a RGN_DATA count check before final create region
    36. fixed memory leak in background bitmap drawing
    37. changed all cursor code as needed to delete the LoadImage() cursor.
    38. fixed a small memory leak in BitmapRegion() when CreateDIBSection() fails.
    39. changed dcxLoadIcon() and ChangeHwndIcon() to take a flags argument
    40. Initialized some stacker vars to NULL
    41. changed radio WM_PAINT to set the text colours as set with xdid -C
    42. changed check WM_PAINT to set the text colours as set with xdid -C
    43. changed $xpopup().style to use a switch() instead of lots of ifs
    44. changed parseTrackFlags() to use a switch() instead of lost of ifs
    45. changed updateLayout() to return true/false to tell if it does anything or not
    46. changed button drawing code to check HDC is non-NULL before drawing bitmap
    47. fixed small memory leak in button bitmap drawing
    48. made getAnimateStyles() public
    49. added resizeBitmap() function. this resizes the supplied bitmap to matched the supplied RECT. if the resize works the old bitmap is deleted and the new one returned, otherwise the old bitmap is returned
    50. changed isPatched() function to be a const function
    51. added GetDXVersion() via getdxver.cpp. this is a function supplied by MS in its tutorials for getting the DirectX version. (dll needs to link with version.lib now)
    52. changed LoadDLL() to check for DirectX9 and set a variable if its found
    53. changed IsUsingDirectX function to check for DirectX version, function now replies with either the dx version or $false if no dx was found
    54. fixed small possible memory leak in trackbar custom drawing
    55. added showError() function to replace all other error display functions
    56. changed some error return codes to be 0 (halt)
    57. changed WM_HELP event to set itself as handled
    58. changed updateParentCtrl() to be a little bit faster when parent is dialog
    59. added CommonMessage() function to DcxControl class to handle WM_xxx messages that are common to all controls, like WM_HELP. DLL about 10k smaller
    60. changed SetupAlphaBlend() to pass on the client rect to DrawParentsBackground()
    61. changed to use TBSTYLE_xxx
    62. added WM_PRINTCLIENT to all controls, needed for AnimateWindow() and new transparency/alpha code
    63. changed DrawParentsBackground() to work in a manner similar to Vista's DrawThemeParentBackgroundEx()
    64. added getting DrawThemeParentBackgroundEx() from uxtheme.dll on Vista
    65. streamlined updateParentCtrl() function for new parent rendering method
    66. added DrawThemeParentBackgroundEx() usage on Vista to DrawParentsBackground()
    67. removed an unneeded updateParentCtrl() call in button control
    68. changed stacker item drawing code to move the right hand edge within the border
    69. added code to free uxtheme.dll on dll unload
    70. updated CreateGrayscaleIcon() to new code from The Code Project that supports 32bpp
    71. added InvalidateParentRect() which invalidates a controls area on its parent
    72. Tstring changed some compare operators to be constants
    73. Tstring changed the char[] operator to be const
    74. added DCX_USE_WINSDK to defines.h as a way to disable code dependant on the Windows SDK (Vista)
    75. fixed copyright from 2006 to 2006-2007
    76. added some comment sections to defines.h (getting real messy!)
    77. DLL now gets GetThemeBackgroundRegion() and GetWindowTheme() function pointers from uxtheme.dll
    78. added IsVistaStyle() function
    79. changed button background drawing to only be done within the WM_PAINT event
    80. added mIRCevalEX() which takes a formatted eval string
    81. changed themed drawing to Open/CloseThemeData() instead of doing GetWindowTheme() to help maintain the correct region
    82. streamlined listview/treeview sortItemsEx() and matchItemText()
    83. added SetupOSCompatibility()/FreeOSCompatibility() functions to handle getting function pointers
    84. changed AnimateWindow()/FlashWindowEx()/InSendMessageEx()/GetWindowInfo() calls to be function pointers. hopefully this should fix the win98 compatibility problems
    85. added getting DwmIsCompositionEnabled() function pointer. it is used to determine if user is on on Vista and if Aero is enabled
    86. added WINVER >= 0x600 checks to includes for theme stuff when compiling as Vista
    87. added WM_DWMCOMPOSITIONCHANGED define
    88. updated shadow code to match latest v03 from code project
    89. now disables shadows when on Vista and Aero is enabled
    90. lots of little changes/fixes for things only noticed with the Intel compiler
    91. made error messages look consistent across project
    92. created new dcx_demo.mrc that uses DCXML and showcases most of the controls
    93. added CreateHDCBuffer()/DeleteHDCBuffer() to create a temp HDC for buffered drawing
    94. changed some image SelectObject() calls to macros for the types
    95. most controls now use GDI+ to draw where possible
    96. added comment for CTLF_ALLOW_DOCK
    97. moved $shell alias from dcx_tools.mrc to dcx.mrc (which has a bunch of broken demos anyways)
    98. changed all SetWindowLong(.. GWL_WNDPROC,..) calls to be SetWindowLongPtr()
    99. added test code to listview NM_CLICK to allow selecting subitems (NEEDS TESTING, SUBJECT TO CHANGE/REMOVAL)
    100. added listview LVN_GETINFOTIP message handling to set tooltips
    101. changed treeview /xdid -w to only gettok the flags once
    102. added listview /xdid -r comment
    103. added SetVerbose() to dialog
    104. added IsVerbose() to dialog
    105. added error checking to treeview TNV_GETINFOTIP and TVN_SELCHANGED
    106. added note about this->getExStyle() in listview mode at top of source file
    107. listview grid style now redraws properly when scrolling
    108. changed default colour values to CLR_NONE
    109. added m_clrBackground var for bkg colour (colour of m_hBackBrush)
    110. added file access error to /xdid -J
    111. added file access error to /xdialog -q
    112. changed file access error report to return the file name too for directshow, stacker, treeview and image
    113. added invalid item error reports to listview /xdid -B/-c/-d/-j/-k/-l/-v/-T
    114. added redrawBufferedWindow() function to redraw a dialog without flicker (atm not for use by child controls, may fix/change this)
    115. changed WM_SIZE to use redrawBufferedWindow() instead of redrawWindow()
    116. added check for WS_EX_COMPOSITED to redrawBufferedWindow()
    117. added notes about redrawBufferedWindow() and Vista style/Composited
    118. changed mIRCeval() and mIRCevalEX() to take a maxlen var which contains the size of the result buffer
    119. changed tstring numtok() to return 0 when string is empty, instead of 1
    120. made getAnimateStyles() arg a const
    121. changed box and panel controls to use CS_PARENTDC
    122. changed LayoutManager::updateLayout() to return a BOOL
    123. changed drawing a little
    124. changed box/panel CLA to only force a redraw on wm_size when it actually does something
    125. changed CreateHDCBuffer() to take a const rect arg
    126. changed dshow properties enum
    127. added DCX_USE_BOOST define to defines.h to enable using the Boost libraries for regex features
    128. direct show - disabled the long-double conversion warnings
    129. treeview - changed the values of all the dcx TVIS_xxx defines to take them out of the range of the state and overlay icons.
    130. divider - included AggressiveOptimize.h
    131. xdock - added DcxDock::status_getTextLength() to return an items text length.
    132. xdock - changed some cmd args into constants
    133. xstatusbar - changed the part set/get text cmds to use an allocated buffer of the right size, instead of a static size.
    134. general - changed DrawCtrlBackground() to draw a gradient using the colours set by /xdid -C when the control has either the hgradient or vgradient style.
    135. box - changed to use DrawCtrlBackground() instead of FillBkg()
    136. general - changed some CLR_NONE refrences to CLR_INVALID
    137. general - changed DrawCtrlBackground() to FillRect() with COLOR_3DFACE when controls disabled.
    138. text - improved drawing a little, now uses COLOR_GRAYTEXT when control is disabled.
    139. tstring - added a new constructor which takes a buffer size to allocate.
    140. general - changed timeout check to check for != 1 instead of == 0
    141. general - misc macro usage changes.
    142. general - made some TString function args consts.
    143. general - moved DirectX checking out of the LoadDLL() function to speed up loading. check is now moved into a DXSetup() function which is called by $dcx(IsUsingDirectX) or when a file is loaded into a directshow control and DX9 hasnt already been found.
    144. xtreebar - changed /xtreebar command to always do a RedrawWindow() at the end.
    145. general - changed the xpopup class setup to use the already defined WNDCLASSEX
    146. general - changed the xpopup owner window to be of type HWND_MESSAGE on XP+
    147. xpopup - added XPopupMenu::setDefaultColor() to allow resetting a specified colour to its default.
    148. general - added macro dcxRegisterClass() to register most of the dcx classes
    149. TString - changed TString.to_wchr() to support utf8 encoding.
    150. general - changed mIRC_DrawText() to support utf8 encoded text.
    151. general - added getting DrawThemeEdge() function pointer from uxtheme.dll
    152. general - changed DcxControl::controlFactory() and all controls to throw an exception when unable to create the window.
    153. general - changed DrawCtrlBackground() to draw themed background (trying to fix some drawing bugs whem themed, may reverse this if its not helping)
    154. xdock - added function UnDockAll(). Its only called during cleanup atm.
    155. moved declaration of VectorOfXPopupMenu to top of file
    156. datetimepicker - updated link for msdn docs
    157. toolbar - removed some commented debug code.
    158. treeview - $xdid().text (& others i expect) were unable to get the first item. This was caused by correctTargetItem() returning FALSE when TVI_ROOT was passed.
    159. xpopup - getMenuByName() can now search special menus (can be turned off by boolean parameter)
    160. trackbar - option was undefined when not using winsdk.
    161. tstring - added comment about deprecated function in TString.sprintf()
    162. xpopup - changed parseTrackFlags() to take a const arg.
    163. changed /xpopup -x to use a switch() instead of a series of ifs
    164. changed $xpopup().exstyle to return all the styles instead of just one.
    165. shortened $xpopup().isrounded
    166. changed XSwitchFlags to be a class, and cleaned up the flag switches in code
    167. added comments to code when /xdid -r has no code (to say it was to prevent invalid flag message)
  • Documentation
    1. fixed errors in dcxdoc
    2. reworded stuff
    3. cleaned up some arrays so they look more consistant
    4. fixed docs to work with php5 when short_open_tag is Off
    5. updated dcxvsmdx page
    6. fixed year of copyright to be dynamically generated by php (andy)
    7. removed a duplicate dcx_inc.php in /doc
    8. updated license files to 2007
    9. removed v1.4 comment (no such version yet)
    10. added writeDcxLoadIcon() to handle documentation for controls which use dcxLoadIcon
    11. added array_insert()
    12. fixed description for tab control
    13. fixed description of /xdialog -b +o
    14. fixed descriptions for /xdid -f CHARSET
    15. added a note for listview /xdid -Z
    16. fixed tutorial example missing a close-brace in xpopup page
    17. removed unecessary parameters in /xtray -d
    18. removed 'alpha' from events
    19. changed global style message to exlude embedded dialog/window controls
    20. added a note to comboEx styles to state the height is required for the dropdown
    21. uncommented multiple examples for $dcx(ColorDialog)
    22. moved some args to be arranged in alphabetical order
    23. fixed some broken wiki tags
    24. added xtreebar.php and xstatusbar.php
    25. removed "selstart" from statusbar properties (copy paste remnant)
    26. fixed grammar and reworded writing to be easier to understand on xdock page
    27. removed alot of unnecessary array declarations in $xdock properties
    28. added a note for all docking commands about dialogs within the INIT event
    29. fixed incorrect table tagging in credits section
    30. added notes about docking during dialog INIT in all /xdock docking functions
    31. moved part of image /xdid -o description to notes
    32. moved change log below callback section on index page
    33. renamed VALUE to PARAM on index page
    34. fixed a bug in /format_xcmd_header which caused examples with '0' values to be ignored
    35. updated 'owner' style description/notes for ColorDialog, OpenDialog, SaveDialog, FontDialog and MsgBox. They no longer support modeless owners because of FindOwner()
    36. updated return value to $null for OpenDialog, SaveDialog and FontDialog
    37. fixed description for ICON in listview /xdid -l
    38. fixed description for 'notrack' in listview trackbegin
    39. added diagonal examples to /xdialog -a, /xdid -h and /xdid -s
    40. added operating system note to /xdialog -a, /xdid -h and /xdid -s
    41. fixed section heading in xpopup page for Special menus and Xpopup item path
    42. fixed description for /xpopup -b only supporting BMP when GDI+ is not available
    43. fixed description for /xpopup -d, as it also removes menus with items in it
    44. fixed edit keyup and keydown events to include example
    45. fixed keyup typo
    46. cleaned /xdid -Z for richedit notes array
    47. updated list of controls available for /xdialog -c
    48. updated list of controls which box, divider, pager, panel, rebar and statusbar support
    49. changed the format which box, divider, pager, panel, rebar and statusbar list supported controls
    50. a list of these controls can be found at http://dcx.scriptsdb.org/controls.xls
    51. updated main page PARAM = $4-
    52. removed /xdid -l NSUB being 0-based index when it isnt
    53. added comment to 'editlabel' style in listview
    54. changed note for listview grid style
    55. removed +h copy paste remnant from note in listview /xdid -t (thanks hkr)
    56. fixed xdialog 'close' details and added 'scclose' events
    57. reworded parts of XTray Signals section
    58. added notes to dialog (embedded) control page and xdialog about closing docked dialogs within the close event
    59. added notes to dialog (embedded) control page and /xdialog about closing docked dialogs within the close event
    60. edited /xdialog -g comment about BMP files
    61. fixed stacker /xdid -a example and parameters
    62. added example for listview /xdid -j
    63. fixed listview seltext/pbar/keydown example
    64. commented out box checkchange event
    65. added error checking to see if examples exist when a command is set
    66. updated format_parameters() so it doesnt accept '0' as '__args'
    67. fixed ALOT of things in the docs such as missing parameters, outdated examples, inconsistancies with examples (big thanks to andy for spotting em out)
    68. moved directshow /xdid -V so its in alphabetical order
    69. removed a few redundant notes
    70. added missing examples for many events on numerous control pages
    71. fixed C:\mIRC\ error not displaying on a few pages, simply changed it to C:/mIRC/
    72. added note to listview labelbegin event
    73. reworded some events for scroll and trackbar
    74. added some notes for 'dl_progress' for webctrl
    75. renamed IS_ENABLED to ENABLED for webctrl events
    76. updated /xdid -Z on /xdid page
    77. removed /xdid -Z on listview page
    78. removed duplicate entry for /xpopup -R
    79. removed unnecessary MENU declaration from /xpopup -R and useless note
    80. added operating system requirement to /xpopup -R +a
    81. fixed typo with trackbar tooltips style
    82. added a wiki tag [os]
    83. changed output html for changes.htm a bit so its not all in 1 line
    84. changed `&amp;` to `and` in changes.htm
    85. added dcxml documentation
    86. documented `check` and `checkchange` features in box
    87. fixed /xdid -m tabstop stuff for list
    88. fixed /xdid -R descriptions for +f
    89. updated dcx_inc.php comment for array_insert()
    90. updated dcx_inc.php comment for array_insert()
    91. fixed list /xdid -m tabstop stuff
    92. fixed /xdid -R descriptions for +f
    93. listview /xdid -j, fixed STATE/+FLAGS inconsistancy
    94. toolbar /xdid -a fixed incomplete wiki tag
    95. fixed section labelling for dcx vs mdx and CLA pages
    96. changed 'Index' to 'Home' in left menu
    97. added hkr to helpers in Credits
    98. removed useless "cell text is optional" notes from statusbar -v and -t commands
    99. cleaned up /xdid -y for statusbar
    100. added some margin space between left menu and main content
    101. put some padding for links in left menu so it has more of a ladder hierarchy
    102. removed translated docs
    103. removed additional div in SECTION label so css can have more effect on text
    104. fixed SECTION_INTRO on treeview page
    105. dcxdoc_print_description() now accepts null as $caption
    106. fixed SECTION_GENERAL problem with tutorials page
    107. added new line break to dialog notes
    108. fixed extremely stupid ie7 case insensitive anchor bug (eg. /xdid -T would link to /xdid -t)
    109. updated comment for dcxLoadIcon() flag +a
    110. added dcxLoadIcon() flags to stacker /xdid -w
    111. fixed grammar mistakes on Open/Save/Color/Font/Msg dialogs
Credits
Lead Developer ClickHeRe
Supporting Developers
(in chronological order)
hixxy
twig*
Mpdreamz
HAPM
Ook
 
Documentation twig*
Andy
Mpdreamz
 
Additional libraries  
CWndShadowx Copyright (c) 2006 Perry Zhu
Treebar.dll NaquadaServ
 
MDX vs DCX Mpdreamz
Demo Script elizio
General Testing
(and forum helpers!)
dJabba
PYERO
dunkelzahn
TheShadowOne
zipster
bl0x
darkrift
The_Mega_ZZTer
Duplex
evasion
hkr
 
Tutorials j0x's DCX Tutorials (French)
DCX Forum: Help: CLA
DCX Forum: CLA :(
Mpdreamz's Cell Layout Algorithm Tutorial
EinsteinXXL's CLA Tutorial (German)
 
Translations
Dutch Mpdreamz
Finnish Mkz
French dunkelzahn
German Duplex
Hebrew seec77
Italian Still need someone!
Malaysian da^hype
Portuguese (Brazil) Henrique
Portuguese (Portugal) Theorem
Spanish PaTaGoN
Swedish Rixxon
 
Website http://dcx.scriptsdb.org
Forums
 
Support #scriptsdb.org @ Undernet
#genscripts @ AmeriChat
Contact © 2005-2007 Last Updated: 25th December, 07

Valid XHTML 1.0 Transitional Valid CSS!