comparison dw.hpp @ 2962:e6072eb914ce

C++: Step 4 of the std::string transition. Remove C style string lambda support due to limitations of std::function. std::function due to its template definition cannot differentiate parameters. This causes std::function parameters to be indistiguishable despite different signatures. Use the C style function pointer instead if you want C style strings, not lambdas. Convert KeyPress lambda to use std::string, this was missed in the last commit.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Sat, 25 Feb 2023 04:25:21 +0000
parents b9bd130f438a
children 2d9521396112
comparison
equal deleted inserted replaced
2961:b9bd130f438a 2962:e6072eb914ce
701 private: 701 private:
702 bool ExposeConnected, ConfigureConnected, KeyPressConnected, ButtonPressConnected, ButtonReleaseConnected, MotionNotifyConnected; 702 bool ExposeConnected, ConfigureConnected, KeyPressConnected, ButtonPressConnected, ButtonReleaseConnected, MotionNotifyConnected;
703 #ifdef DW_LAMBDA 703 #ifdef DW_LAMBDA
704 std::function<int(DWExpose *)> _ConnectExpose; 704 std::function<int(DWExpose *)> _ConnectExpose;
705 std::function<int(int, int)> _ConnectConfigure; 705 std::function<int(int, int)> _ConnectConfigure;
706 std::function<int(char c, int, int, char *)> _ConnectCKeyPress;
707 std::function<int(char c, int, int, std::string)> _ConnectKeyPress; 706 std::function<int(char c, int, int, std::string)> _ConnectKeyPress;
708 std::function<int(int, int, int)> _ConnectButtonPress; 707 std::function<int(int, int, int)> _ConnectButtonPress;
709 std::function<int(int, int, int)> _ConnectButtonRelease; 708 std::function<int(int, int, int)> _ConnectButtonRelease;
710 std::function<int(int, int, int)> _ConnectMotionNotify; 709 std::function<int(int, int, int)> _ConnectMotionNotify;
711 #endif 710 #endif
718 int (*_ConnectMotionNotifyOld)(Render *, int x, int y, int buttonmask); 717 int (*_ConnectMotionNotifyOld)(Render *, int x, int y, int buttonmask);
719 void Setup() { 718 void Setup() {
720 #ifdef DW_LAMBDA 719 #ifdef DW_LAMBDA
721 _ConnectExpose = 0; 720 _ConnectExpose = 0;
722 _ConnectConfigure = 0; 721 _ConnectConfigure = 0;
723 _ConnectCKeyPress = 0;
724 _ConnectKeyPress = 0; 722 _ConnectKeyPress = 0;
725 _ConnectButtonPress = 0; 723 _ConnectButtonPress = 0;
726 _ConnectButtonRelease = 0; 724 _ConnectButtonRelease = 0;
727 _ConnectMotionNotify = 0; 725 _ConnectMotionNotify = 0;
728 #endif 726 #endif
790 return classptr->OnConfigure(width, height); } 788 return classptr->OnConfigure(width, height); }
791 static int _OnKeyPress(HWND window, char c, int vk, int state, void *data, char *utf8) { 789 static int _OnKeyPress(HWND window, char c, int vk, int state, void *data, char *utf8) {
792 Render *classptr = reinterpret_cast<Render *>(data); 790 Render *classptr = reinterpret_cast<Render *>(data);
793 std::string utf8string = utf8 ? std::string(utf8) : std::string(); 791 std::string utf8string = utf8 ? std::string(utf8) : std::string();
794 #ifdef DW_LAMBDA 792 #ifdef DW_LAMBDA
795 if(classptr->_ConnectCKeyPress) 793 if(classptr->_ConnectKeyPress)
796 return classptr->_ConnectCKeyPress(c, vk, state, utf8);
797 else if(classptr->_ConnectKeyPress)
798 return classptr->_ConnectKeyPress(c, vk, state, utf8string); 794 return classptr->_ConnectKeyPress(c, vk, state, utf8string);
799 #endif 795 #endif
800 if(classptr->_ConnectCKeyPressOld) 796 if(classptr->_ConnectCKeyPressOld)
801 return classptr->_ConnectCKeyPressOld(classptr, c, vk, state, utf8); 797 return classptr->_ConnectCKeyPressOld(classptr, c, vk, state, utf8);
802 else if(classptr->_ConnectKeyPressOld) 798 else if(classptr->_ConnectKeyPressOld)
896 dw_signal_connect(hwnd, DW_SIGNAL_CONFIGURE, DW_SIGNAL_FUNC(_OnConfigure), this); 892 dw_signal_connect(hwnd, DW_SIGNAL_CONFIGURE, DW_SIGNAL_FUNC(_OnConfigure), this);
897 ConfigureConnected = true; 893 ConfigureConnected = true;
898 } 894 }
899 } 895 }
900 #ifdef DW_LAMBDA 896 #ifdef DW_LAMBDA
901 void ConnectKeyPress(std::function<int(char, int, int, char *)> userfunc)
902 {
903 _ConnectCKeyPress = userfunc;
904 if(!KeyPressConnected) {
905 dw_signal_connect(hwnd, DW_SIGNAL_KEY_PRESS, DW_SIGNAL_FUNC(_OnKeyPress), this);
906 KeyPressConnected = true;
907 }
908 }
909 void ConnectKeyPress(std::function<int(char, int, int, std::string)> userfunc) 897 void ConnectKeyPress(std::function<int(char, int, int, std::string)> userfunc)
910 { 898 {
911 _ConnectKeyPress = userfunc; 899 _ConnectKeyPress = userfunc;
912 if(!KeyPressConnected) { 900 if(!KeyPressConnected) {
913 dw_signal_connect(hwnd, DW_SIGNAL_KEY_PRESS, DW_SIGNAL_FUNC(_OnKeyPress), this); 901 dw_signal_connect(hwnd, DW_SIGNAL_KEY_PRESS, DW_SIGNAL_FUNC(_OnKeyPress), this);
1108 class HTML : public Widget 1096 class HTML : public Widget
1109 { 1097 {
1110 private: 1098 private:
1111 bool ChangedConnected, ResultConnected; 1099 bool ChangedConnected, ResultConnected;
1112 #ifdef DW_LAMBDA 1100 #ifdef DW_LAMBDA
1113 std::function<int(int, char *)> _ConnectCChanged;
1114 std::function<int(int, char *, void *)> _ConnectCResult;
1115 std::function<int(int, std::string)> _ConnectChanged; 1101 std::function<int(int, std::string)> _ConnectChanged;
1116 std::function<int(int, std::string, void *)> _ConnectResult; 1102 std::function<int(int, std::string, void *)> _ConnectResult;
1117 #endif 1103 #endif
1118 int (*_ConnectCChangedOld)(HTML *, int status, char *url); 1104 int (*_ConnectCChangedOld)(HTML *, int status, char *url);
1119 int (*_ConnectCResultOld)(HTML *, int status, char *result, void *scriptdata); 1105 int (*_ConnectCResultOld)(HTML *, int status, char *result, void *scriptdata);
1120 int (*_ConnectChangedOld)(HTML *, int status, std::string url); 1106 int (*_ConnectChangedOld)(HTML *, int status, std::string url);
1121 int (*_ConnectResultOld)(HTML *, int status, std::string result, void *scriptdata); 1107 int (*_ConnectResultOld)(HTML *, int status, std::string result, void *scriptdata);
1122 void Setup() { 1108 void Setup() {
1123 #ifdef DW_LAMBDA 1109 #ifdef DW_LAMBDA
1124 _ConnectCChanged = 0;
1125 _ConnectCResult = 0;
1126 _ConnectChanged = 0; 1110 _ConnectChanged = 0;
1127 _ConnectResult = 0; 1111 _ConnectResult = 0;
1128 #endif 1112 #endif
1129 _ConnectCChangedOld = 0; 1113 _ConnectCChangedOld = 0;
1130 _ConnectCResultOld = 0; 1114 _ConnectCResultOld = 0;
1145 } 1129 }
1146 static int _OnChanged(HWND window, int status, char *url, void *data) { 1130 static int _OnChanged(HWND window, int status, char *url, void *data) {
1147 HTML *classptr = reinterpret_cast<HTML *>(data); 1131 HTML *classptr = reinterpret_cast<HTML *>(data);
1148 std::string utf8string = url ? std::string(url) : std::string(); 1132 std::string utf8string = url ? std::string(url) : std::string();
1149 #ifdef DW_LAMBDA 1133 #ifdef DW_LAMBDA
1150 if(classptr->_ConnectCChanged) 1134 if(classptr->_ConnectChanged)
1151 return classptr->_ConnectCChanged(status, url);
1152 else if(classptr->_ConnectChanged)
1153 return classptr->_ConnectChanged(status, utf8string); 1135 return classptr->_ConnectChanged(status, utf8string);
1154 #endif 1136 #endif
1155 if(classptr->_ConnectCChangedOld) 1137 if(classptr->_ConnectCChangedOld)
1156 return classptr->_ConnectCChangedOld(classptr, status, url); 1138 return classptr->_ConnectCChangedOld(classptr, status, url);
1157 else if(classptr->_ConnectChangedOld) 1139 else if(classptr->_ConnectChangedOld)
1159 return classptr->OnChanged(status, utf8string); } 1141 return classptr->OnChanged(status, utf8string); }
1160 static int _OnResult(HWND window, int status, char *result, void *scriptdata, void *data) { 1142 static int _OnResult(HWND window, int status, char *result, void *scriptdata, void *data) {
1161 HTML *classptr = reinterpret_cast<HTML *>(data); 1143 HTML *classptr = reinterpret_cast<HTML *>(data);
1162 std::string utf8string = result ? std::string(result) : std::string(); 1144 std::string utf8string = result ? std::string(result) : std::string();
1163 #ifdef DW_LAMBDA 1145 #ifdef DW_LAMBDA
1164 if(classptr->_ConnectCResult) 1146 if(classptr->_ConnectResult)
1165 return classptr->_ConnectResult(status, result, scriptdata);
1166 else if(classptr->_ConnectResult)
1167 return classptr->_ConnectResult(status, utf8string, scriptdata); 1147 return classptr->_ConnectResult(status, utf8string, scriptdata);
1168 #endif 1148 #endif
1169 if(classptr->_ConnectCResultOld) 1149 if(classptr->_ConnectCResultOld)
1170 return classptr->_ConnectCResultOld(classptr, status, result, scriptdata); 1150 return classptr->_ConnectCResultOld(classptr, status, result, scriptdata);
1171 else if(classptr->_ConnectResultOld) 1151 else if(classptr->_ConnectResultOld)
1185 int JavascriptRun(std::string script, void *scriptdata) { return dw_html_javascript_run(hwnd, script.c_str(), scriptdata); } 1165 int JavascriptRun(std::string script, void *scriptdata) { return dw_html_javascript_run(hwnd, script.c_str(), scriptdata); }
1186 int JavascriptRun(std::string script) { return dw_html_javascript_run(hwnd, script.c_str(), NULL); } 1166 int JavascriptRun(std::string script) { return dw_html_javascript_run(hwnd, script.c_str(), NULL); }
1187 int Raw(std::string buffer) { return dw_html_raw(hwnd, buffer.c_str()); } 1167 int Raw(std::string buffer) { return dw_html_raw(hwnd, buffer.c_str()); }
1188 int URL(std::string url) { return dw_html_url(hwnd, url.c_str()); } 1168 int URL(std::string url) { return dw_html_url(hwnd, url.c_str()); }
1189 #ifdef DW_LAMBDA 1169 #ifdef DW_LAMBDA
1190 void ConnectChangedC(std::function<int(int, char *)> userfunc)
1191 {
1192 _ConnectCChanged = userfunc;
1193 if(!ChangedConnected) {
1194 dw_signal_connect(hwnd, DW_SIGNAL_HTML_CHANGED, DW_SIGNAL_FUNC(_OnChanged), this);
1195 ChangedConnected = true;
1196 }
1197 }
1198 void ConnectChanged(std::function<int(int, std::string)> userfunc) 1170 void ConnectChanged(std::function<int(int, std::string)> userfunc)
1199 { 1171 {
1200 _ConnectChanged = userfunc; 1172 _ConnectChanged = userfunc;
1201 if(!ChangedConnected) { 1173 if(!ChangedConnected) {
1202 dw_signal_connect(hwnd, DW_SIGNAL_HTML_CHANGED, DW_SIGNAL_FUNC(_OnChanged), this); 1174 dw_signal_connect(hwnd, DW_SIGNAL_HTML_CHANGED, DW_SIGNAL_FUNC(_OnChanged), this);
1219 dw_signal_connect(hwnd, DW_SIGNAL_HTML_CHANGED, DW_SIGNAL_FUNC(_OnChanged), this); 1191 dw_signal_connect(hwnd, DW_SIGNAL_HTML_CHANGED, DW_SIGNAL_FUNC(_OnChanged), this);
1220 ChangedConnected = true; 1192 ChangedConnected = true;
1221 } 1193 }
1222 } 1194 }
1223 #ifdef DW_LAMBDA 1195 #ifdef DW_LAMBDA
1224 void ConnectResultC(std::function<int(int, char *, void *)> userfunc)
1225 {
1226 _ConnectCResult = userfunc;
1227 if(!ResultConnected) {
1228 dw_signal_connect(hwnd, DW_SIGNAL_HTML_RESULT, DW_SIGNAL_FUNC(_OnResult), this);
1229 ResultConnected = true;
1230 }
1231 }
1232 void ConnectResult(std::function<int(int, std::string, void *)> userfunc) 1196 void ConnectResult(std::function<int(int, std::string, void *)> userfunc)
1233 { 1197 {
1234 _ConnectResult = userfunc; 1198 _ConnectResult = userfunc;
1235 if(!ResultConnected) { 1199 if(!ResultConnected) {
1236 dw_signal_connect(hwnd, DW_SIGNAL_HTML_RESULT, DW_SIGNAL_FUNC(_OnResult), this); 1200 dw_signal_connect(hwnd, DW_SIGNAL_HTML_RESULT, DW_SIGNAL_FUNC(_OnResult), this);
1655 class ObjectView : virtual public Widget 1619 class ObjectView : virtual public Widget
1656 { 1620 {
1657 private: 1621 private:
1658 bool ItemSelectConnected, ItemContextConnected; 1622 bool ItemSelectConnected, ItemContextConnected;
1659 #ifdef DW_LAMBDA 1623 #ifdef DW_LAMBDA
1660 std::function<int(HTREEITEM, char *, void *)> _ConnectCItemSelect;
1661 std::function<int(char *, int, int, void *)> _ConnectCItemContext;
1662 std::function<int(HTREEITEM, std::string, void *)> _ConnectItemSelect; 1624 std::function<int(HTREEITEM, std::string, void *)> _ConnectItemSelect;
1663 std::function<int(std::string, int, int, void *)> _ConnectItemContext; 1625 std::function<int(std::string, int, int, void *)> _ConnectItemContext;
1664 #endif 1626 #endif
1665 int (*_ConnectCItemSelectOld)(ObjectView *, HTREEITEM, char *, void *); 1627 int (*_ConnectCItemSelectOld)(ObjectView *, HTREEITEM, char *, void *);
1666 int (*_ConnectCItemContextOld)(ObjectView *, char *, int, int, void *); 1628 int (*_ConnectCItemContextOld)(ObjectView *, char *, int, int, void *);
1668 int (*_ConnectItemContextOld)(ObjectView *, std::string, int, int, void *); 1630 int (*_ConnectItemContextOld)(ObjectView *, std::string, int, int, void *);
1669 static int _OnItemSelect(HWND window, HTREEITEM item, char *text, void *data, void *itemdata) { 1631 static int _OnItemSelect(HWND window, HTREEITEM item, char *text, void *data, void *itemdata) {
1670 ObjectView *classptr = reinterpret_cast<ObjectView *>(data); 1632 ObjectView *classptr = reinterpret_cast<ObjectView *>(data);
1671 std::string utf8string = text ? std::string(text) : std::string(); 1633 std::string utf8string = text ? std::string(text) : std::string();
1672 #ifdef DW_LAMBDA 1634 #ifdef DW_LAMBDA
1673 if(classptr->_ConnectCItemSelect) 1635 if(classptr->_ConnectItemSelect)
1674 return classptr->_ConnectCItemSelect(item, text, itemdata);
1675 else if(classptr->_ConnectItemSelect)
1676 return classptr->_ConnectItemSelect(item, utf8string, itemdata); 1636 return classptr->_ConnectItemSelect(item, utf8string, itemdata);
1677 #endif 1637 #endif
1678 if(classptr->_ConnectItemSelectOld) 1638 if(classptr->_ConnectItemSelectOld)
1679 return classptr->_ConnectItemSelectOld(classptr, item, text, itemdata); 1639 return classptr->_ConnectItemSelectOld(classptr, item, text, itemdata);
1680 else if(classptr->_ConnectItemSelectOld) 1640 else if(classptr->_ConnectItemSelectOld)
1683 } 1643 }
1684 static int _OnItemContext(HWND window, char *text, int x, int y, void *data, void *itemdata) { 1644 static int _OnItemContext(HWND window, char *text, int x, int y, void *data, void *itemdata) {
1685 ObjectView *classptr = reinterpret_cast<ObjectView *>(data); 1645 ObjectView *classptr = reinterpret_cast<ObjectView *>(data);
1686 std::string utf8string = text ? std::string(text) : std::string(); 1646 std::string utf8string = text ? std::string(text) : std::string();
1687 #ifdef DW_LAMBDA 1647 #ifdef DW_LAMBDA
1688 if(classptr->_ConnectCItemContext) 1648 if(classptr->_ConnectItemContext)
1689 return classptr->_ConnectCItemContext(text, x, y, itemdata);
1690 else if(classptr->_ConnectItemContext)
1691 return classptr->_ConnectItemContext(utf8string, x, y, itemdata); 1649 return classptr->_ConnectItemContext(utf8string, x, y, itemdata);
1692 #endif 1650 #endif
1693 if(classptr->_ConnectCItemContextOld) 1651 if(classptr->_ConnectCItemContextOld)
1694 return classptr->_ConnectCItemContextOld(classptr, text, x, y, itemdata); 1652 return classptr->_ConnectCItemContextOld(classptr, text, x, y, itemdata);
1695 else if(classptr->_ConnectItemContextOld) 1653 else if(classptr->_ConnectItemContextOld)
1697 return classptr->OnItemContext(utf8string, x, y, itemdata); 1655 return classptr->OnItemContext(utf8string, x, y, itemdata);
1698 } 1656 }
1699 protected: 1657 protected:
1700 void SetupObjectView() { 1658 void SetupObjectView() {
1701 #ifdef DW_LAMBDA 1659 #ifdef DW_LAMBDA
1702 _ConnectCItemSelect = 0;
1703 _ConnectCItemContext = 0;
1704 _ConnectItemSelect = 0; 1660 _ConnectItemSelect = 0;
1705 _ConnectItemContext = 0; 1661 _ConnectItemContext = 0;
1706 #endif 1662 #endif
1707 _ConnectCItemSelectOld = 0; 1663 _ConnectCItemSelectOld = 0;
1708 _ConnectCItemContextOld = 0; 1664 _ConnectCItemContextOld = 0;
1733 ItemContextConnected = false; 1689 ItemContextConnected = false;
1734 return FALSE; 1690 return FALSE;
1735 } 1691 }
1736 public: 1692 public:
1737 #ifdef DW_LAMBDA 1693 #ifdef DW_LAMBDA
1738 void ConnectItemSelectC(std::function<int(HTREEITEM, char *, void *)> userfunc)
1739 {
1740 _ConnectCItemSelect = userfunc;
1741 if(!ItemSelectConnected) {
1742 dw_signal_connect(hwnd, DW_SIGNAL_ITEM_SELECT, DW_SIGNAL_FUNC(_OnItemSelect), this);
1743 ItemSelectConnected = true;
1744 }
1745 }
1746 void ConnectItemSelect(std::function<int(HTREEITEM, std::string, void *)> userfunc) 1694 void ConnectItemSelect(std::function<int(HTREEITEM, std::string, void *)> userfunc)
1747 { 1695 {
1748 _ConnectItemSelect = userfunc; 1696 _ConnectItemSelect = userfunc;
1749 if(!ItemSelectConnected) { 1697 if(!ItemSelectConnected) {
1750 dw_signal_connect(hwnd, DW_SIGNAL_ITEM_SELECT, DW_SIGNAL_FUNC(_OnItemSelect), this); 1698 dw_signal_connect(hwnd, DW_SIGNAL_ITEM_SELECT, DW_SIGNAL_FUNC(_OnItemSelect), this);
1767 dw_signal_connect(hwnd, DW_SIGNAL_ITEM_SELECT, DW_SIGNAL_FUNC(_OnItemSelect), this); 1715 dw_signal_connect(hwnd, DW_SIGNAL_ITEM_SELECT, DW_SIGNAL_FUNC(_OnItemSelect), this);
1768 ItemSelectConnected = true; 1716 ItemSelectConnected = true;
1769 } 1717 }
1770 } 1718 }
1771 #ifdef DW_LAMBDA 1719 #ifdef DW_LAMBDA
1772 void ConnectItemContextC(std::function<int(char *, int, int, void *)> userfunc)
1773 {
1774 _ConnectCItemContext = userfunc;
1775 if(!ItemContextConnected) {
1776 dw_signal_connect(hwnd, DW_SIGNAL_ITEM_CONTEXT, DW_SIGNAL_FUNC(_OnItemContext), this);
1777 ItemContextConnected = true;
1778 }
1779 }
1780 void ConnectItemContext(std::function<int(std::string, int, int, void *)> userfunc) 1720 void ConnectItemContext(std::function<int(std::string, int, int, void *)> userfunc)
1781 { 1721 {
1782 _ConnectItemContext = userfunc; 1722 _ConnectItemContext = userfunc;
1783 if(!ItemContextConnected) { 1723 if(!ItemContextConnected) {
1784 dw_signal_connect(hwnd, DW_SIGNAL_ITEM_CONTEXT, DW_SIGNAL_FUNC(_OnItemContext), this); 1724 dw_signal_connect(hwnd, DW_SIGNAL_ITEM_CONTEXT, DW_SIGNAL_FUNC(_OnItemContext), this);
1807 class Containers : virtual public Focusable, virtual public ObjectView 1747 class Containers : virtual public Focusable, virtual public ObjectView
1808 { 1748 {
1809 private: 1749 private:
1810 bool ItemEnterConnected, ColumnClickConnected; 1750 bool ItemEnterConnected, ColumnClickConnected;
1811 #ifdef DW_LAMBDA 1751 #ifdef DW_LAMBDA
1812 std::function<int(char *, void *)> _ConnectCItemEnter;
1813 std::function<int(std::string, void *)> _ConnectItemEnter; 1752 std::function<int(std::string, void *)> _ConnectItemEnter;
1814 std::function<int(int)> _ConnectColumnClick; 1753 std::function<int(int)> _ConnectColumnClick;
1815 #endif 1754 #endif
1816 int (*_ConnectCItemEnterOld)(Containers *, char *, void *); 1755 int (*_ConnectCItemEnterOld)(Containers *, char *, void *);
1817 int (*_ConnectItemEnterOld)(Containers *, std::string, void *); 1756 int (*_ConnectItemEnterOld)(Containers *, std::string, void *);
1818 int (*_ConnectColumnClickOld)(Containers *, int); 1757 int (*_ConnectColumnClickOld)(Containers *, int);
1819 static int _OnItemEnter(HWND window, char *text, void *data, void *itemdata) { 1758 static int _OnItemEnter(HWND window, char *text, void *data, void *itemdata) {
1820 Containers *classptr = reinterpret_cast<Containers *>(data); 1759 Containers *classptr = reinterpret_cast<Containers *>(data);
1821 std::string utf8string = text ? std::string(text) : std::string(); 1760 std::string utf8string = text ? std::string(text) : std::string();
1822 #ifdef DW_LAMBDA 1761 #ifdef DW_LAMBDA
1823 if(classptr->_ConnectCItemEnter) 1762 if(classptr->_ConnectItemEnter)
1824 return classptr->_ConnectCItemEnter(text, itemdata);
1825 else if(classptr->_ConnectItemEnter)
1826 return classptr->_ConnectItemEnter(utf8string, itemdata); 1763 return classptr->_ConnectItemEnter(utf8string, itemdata);
1827 #endif 1764 #endif
1828 if(classptr->_ConnectCItemEnterOld) 1765 if(classptr->_ConnectCItemEnterOld)
1829 return classptr->_ConnectCItemEnterOld(classptr, text, itemdata); 1766 return classptr->_ConnectCItemEnterOld(classptr, text, itemdata);
1830 else if(classptr->_ConnectItemEnterOld) 1767 else if(classptr->_ConnectItemEnterOld)
1844 protected: 1781 protected:
1845 void *allocpointer; 1782 void *allocpointer;
1846 int allocrowcount; 1783 int allocrowcount;
1847 void SetupContainer() { 1784 void SetupContainer() {
1848 #ifdef DW_LAMBDA 1785 #ifdef DW_LAMBDA
1849 _ConnectCItemEnter = 0;
1850 _ConnectItemEnter = 0; 1786 _ConnectItemEnter = 0;
1851 _ConnectColumnClick = 0; 1787 _ConnectColumnClick = 0;
1852 #endif 1788 #endif
1853 _ConnectItemEnterOld = 0; 1789 _ConnectItemEnterOld = 0;
1854 _ConnectCItemEnterOld = 0; 1790 _ConnectCItemEnterOld = 0;
1909 void SetRowData(int row, void *data) { dw_container_set_row_data(allocpointer, row, data); } 1845 void SetRowData(int row, void *data) { dw_container_set_row_data(allocpointer, row, data); }
1910 void SetRowTitle(int row, const char *title) { dw_container_set_row_title(allocpointer, row, title); } 1846 void SetRowTitle(int row, const char *title) { dw_container_set_row_title(allocpointer, row, title); }
1911 void SetRowTitle(int row, const std::string title) { dw_container_set_row_title(allocpointer, row, title.c_str()); } 1847 void SetRowTitle(int row, const std::string title) { dw_container_set_row_title(allocpointer, row, title.c_str()); }
1912 void SetStripe(unsigned long oddcolor, unsigned long evencolor) { dw_container_set_stripe(hwnd, oddcolor, evencolor); } 1848 void SetStripe(unsigned long oddcolor, unsigned long evencolor) { dw_container_set_stripe(hwnd, oddcolor, evencolor); }
1913 #ifdef DW_LAMBDA 1849 #ifdef DW_LAMBDA
1914 void ConnectItemEnterC(std::function<int(char *, void *)> userfunc)
1915 {
1916 _ConnectCItemEnter = userfunc;
1917 if(!ItemEnterConnected) {
1918 dw_signal_connect(hwnd, DW_SIGNAL_ITEM_ENTER, DW_SIGNAL_FUNC(_OnItemEnter), this);
1919 ItemEnterConnected = true;
1920 }
1921 }
1922 void ConnectItemEnter(std::function<int(std::string, void *)> userfunc) 1850 void ConnectItemEnter(std::function<int(std::string, void *)> userfunc)
1923 { 1851 {
1924 _ConnectItemEnter = userfunc; 1852 _ConnectItemEnter = userfunc;
1925 if(!ItemEnterConnected) { 1853 if(!ItemEnterConnected) {
1926 dw_signal_connect(hwnd, DW_SIGNAL_ITEM_ENTER, DW_SIGNAL_FUNC(_OnItemEnter), this); 1854 dw_signal_connect(hwnd, DW_SIGNAL_ITEM_ENTER, DW_SIGNAL_FUNC(_OnItemEnter), this);