| Home | Download | Forum | Bug Tracker

|  | 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