xj qian
2024-12-11 d912c0e116080cf2583fc276fde2c530b9f8f956
update
已修改11个文件
627 ■■■■ 文件已修改
jrj/ext-jrj/ext-jrj.vcxproj 56 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/xframe/devloper/XDevEditDbmap.cpp 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/xframe/devloper/XDevEditXAction.cpp 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/xframe/devloper/XDevEditXApp.cpp 73 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/xframe/devloper/XDevEditXDV.cpp 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/xframe/devloper/XDevEditXFile.cpp 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/xframe/devloper/XDevEditXML.cpp 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/xframe/devloper/XDevEditXMSSQL.cpp 42 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/xframe/devloper/XDevEditXRuler.cpp 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/xframe/kobject/kreport.hpp 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/xframe/kobject/kxml.hpp 386 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/ext-jrj/ext-jrj.vcxproj
@@ -1176,60 +1176,60 @@
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild>
    </ClCompile>
    <ClCompile Include="..\xframe\devloper\XDevEditDbmap.cpp">
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild>
    </ClCompile>
    <ClCompile Include="..\xframe\devloper\XDevEditXAction.cpp">
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild>
    </ClCompile>
    <ClCompile Include="..\xframe\devloper\XDevEditXApp.cpp">
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild>
    </ClCompile>
    <ClCompile Include="..\xframe\devloper\XDevEditXDV.cpp">
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild>
    </ClCompile>
    <ClCompile Include="..\xframe\devloper\XDevEditXFile.cpp">
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild>
    </ClCompile>
    <ClCompile Include="..\xframe\devloper\XDevEditFlow.cpp">
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild>
    </ClCompile>
    <ClCompile Include="..\xframe\devloper\XDevEditHtml.cpp">
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild>
    </ClCompile>
    <ClCompile Include="..\xframe\devloper\XDevEditXLayer.cpp">
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild>
    </ClCompile>
    <ClCompile Include="..\xframe\devloper\XDevEditXML.cpp">
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild>
    </ClCompile>
    <ClCompile Include="..\xframe\devloper\XDevEditXMSSQL.cpp">
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild>
    </ClCompile>
    <ClCompile Include="..\xframe\devloper\XDevEditXOffice.cpp">
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild>
    </ClCompile>
    <ClCompile Include="..\xframe\devloper\XDevEditXPage.cpp">
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild>
    </ClCompile>
    <ClCompile Include="..\xframe\devloper\XDevEditXQuery.cpp">
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild>
    </ClCompile>
    <ClCompile Include="..\xframe\devloper\XDevEditXRuler.cpp">
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild>
    </ClCompile>
    <ClCompile Include="..\xframe\devloper\XDevEditXWKDlg.cpp">
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
jrj/xframe/devloper/XDevEditDbmap.cpp
@@ -5,13 +5,14 @@
#include <xcontrol/xtreeview.hpp>
#include <xcontrol/xlayersheet.hpp>
#include <xcontrol/xsedit.hpp>
#include "XDevEditPage.hpp"
using xml = KXMLDOMDocument;
class export XDevEditDbmap : public xwin
class export XDevEditDbmap : public XDevEditPage
{
    public:
    XDevEditDbmap(void* implPtr, HWND hWnd) :xwin(implPtr, hWnd) {}
    XDevEditDbmap(void* implPtr, HWND hWnd) :XDevEditPage(implPtr, hWnd) {}
public:
    static XDevEditDbmap* CreateInstance(void* implPtr, void* hWnd)
    {
@@ -172,7 +173,7 @@
            xml x;
            if (!x.loadXML(content))
            {
                KXMLDOMParseError pError = x.parseError;
                KXMLDOMParseError pError = x.parseError();
                if (pError)
                {
                    xstring str = pError.srcText();
@@ -197,8 +198,8 @@
            xstring sType = OnGetType();
            if (sType ==L"xml.xsd")
            {
                xstring sError;
                x.ValidSchema(content, &sError);
                BSTR sError;
                x.ValidSchema(content.c_str(), sError);
                trace(sError);
            }
        }
@@ -237,7 +238,7 @@
        if (content ==L"") return -1;
        xwin w = GetFrameWindow();
        xtreeview tv_folder = w.GetControl(L"DevExplorer");
        HTREEITEM hItem = GetWinParam();
        HTREEITEM hItem = (HTREEITEM)GetWinParam();
        KXMLDOMElement e = tv_folder.GetItemData(hItem);
        //trace(e.xml);
        xstring str = e.getAttribute(L"type");
@@ -261,7 +262,7 @@
        xstring aurl =L"";
        if (n)
        {
            xstring tmp =L"" + n.text();
            xstring tmp =n.text();
            aurl =L"/sale/" + xtype +L"/" + tmp +L"/" + content;
        }
        else
@@ -296,6 +297,7 @@
        //获取焦点事件,用于重置工具条
        AttachEvent(L"WM_SETFOCUS", (FEvent)&XDevEditDbmap::OnSetFocus);
        //AttachEvent(L"content",L"WM_LBUTTONDOWN", (FEvent)&XDeveloper::OnLButtonDown);
        return 1;
    }
    int OnInitial()
jrj/xframe/devloper/XDevEditXAction.cpp
@@ -7,12 +7,13 @@
#include <xcontrol/xdwgrid.hpp>
#include <xcontrol/xsedit.hpp>
#include <xcontrol/xcombobox.hpp>
#include "XDevEditPage.hpp"
using xml = KXMLDOMDocument;
class export XDevEditAction : public xwin
class export XDevEditAction : public XDevEditPage
{
    public:
    XDevEditAction(void* implPtr, HWND hWnd) :xwin(implPtr, hWnd) {}
    XDevEditAction(void* implPtr, HWND hWnd) :XDevEditPage(implPtr, hWnd) {}
public:
    static XDevEditAction* CreateInstance(void* implPtr, void* hWnd)
    {
@@ -68,7 +69,7 @@
            xstring v = e1.getAttribute(L"source");
            xc.SetText(L"" + v);
            xc = GetControl(L"linkname");
            xstring v = e1.getAttribute(L"link");
            v = e1.getAttribute(L"link");
            xc.SetText(L"" + v);
            KXMLDOMElement e2 = e.selectSingleNode(L"paras");
@@ -176,6 +177,8 @@
        AttachEvent(L"WM_XCOMMAND", (FEvent) & XDevEditAction::OnXCommand);
        //获取焦点事件,用于重置工具条
        AttachEvent(L"WM_SETFOCUS", (FEvent)&XDevEditAction::OnSetFocus);
        return 1;
    }
    int OnInitial()
jrj/xframe/devloper/XDevEditXApp.cpp
@@ -74,6 +74,8 @@
            xstring p = L"<box name='image_view' width='22'><xtoolbutton caption='' image='" + xstring(j) + L"'/></box>";
            SetAgentNode(anode,p);
        }
        return 1;
    }
    int onClare()
@@ -125,13 +127,15 @@
        SendMessage(xc.GetHWND(), 0x014E, 0, 0);
        OnCombSelChanged();
        return 1;
    }
    xstring getTVData(HTREEITEM hitem)
    {
        xstring result = L"";
        HTREEITEM citem = tv_folder.GetChildItem(hitem);
        while (citem > 0)
        while (citem)
        {
            xstring str = (wchar_t*)tv_folder.GetItemData(citem);
            xstring name = str.mid(1,str.find(L" ",0));
@@ -170,7 +174,7 @@
        {
            int index = s.toInt();
            HTREEITEM h = tv_folder.GetChildItem(hitem);
            while (h > 0)
            while (h)
            {
                xstring p = (wchar_t*)tv_folder.GetItemData(h);
                xml x ;
@@ -205,6 +209,7 @@
            copyNode(citem,h);
            citem = tv_folder.GetNextItem(citem);
        }
        return 1;
    }
    //命令发布函数
@@ -420,44 +425,46 @@
            }
        }
        xc = GetControl(L"image");
        xstring str = e.getAttribute(L"image");
        str = e.getAttribute(L"image");
        //xc.SetText(L""+str);
        SendMessage(xc.GetHWND(), 0x014E, str.toInt(), 0);
        xc = GetControl(L"index");
        xstring str = e.getAttribute(L"index");
        str = e.getAttribute(L"index");
        xc.SetText(L"" + str);
        xc = GetControl(L"code");
        xstring str = e.getAttribute(L"code");
        str = e.getAttribute(L"code");
        xc.SetText(L"" + str);
        xc = GetControl(L"name");
        xstring str = e.getAttribute(L"name");
        str = e.getAttribute(L"name");
        xc.SetText(L"" + str);
        xc = GetControl(L"status");
        xstring str = e.getAttribute(L"status");
        str = e.getAttribute(L"status");
        xc.SetText(L"" + str);
        OnCombSelChanged();
        return 1;
    }
    int OnTreeSelChanged(ref TNotifyEvent evt,int param)
    int OnTreeSelChanged(TEvent* evt,LPARAM param)
    {
        ref NMTREEVIEW nmtv = evt.pnmh;
        int hitem = nmtv.itemNew.hItem;
        NMTREEVIEW& nmtv = *(NMTREEVIEW*)evt->notify.pnmh;
        HTREEITEM hitem = nmtv.itemNew.hItem;
        onClare();
        m_mode = L"new";
        if (hitem == tv_folder.GetRootItem()) return 0;
        //IXMLDOMElement e = tv_folder.GetItemData(hitem);
        //trace(e.xml);
        param p = tv_folder.GetItemData(hitem);
        xstring p = (wchar_t*)tv_folder.GetItemData(hitem);
        xml x ;
        x.loadXML(L"" + xstring(p));
        IXMLDOMElement e = x.documentElement;
        m_type = e.tagName;
        x.loadXML(p);
        KXMLDOMElement e = x.documentElement();
        m_type = e.tagName();
        if (m_type == L"file")
            OnCmdDispatch(L"NewFile");
        else
@@ -469,12 +476,14 @@
    int OnAttachEvent()
    {
        //绑定工具条点击事件
        AttachEvent(L"WM_XCOMMAND",OnXCommand);
        AttachEvent(L"WM_XCOMMAND", (FEvent)&XDevEditXApp::OnXCommand);
        //获取焦点事件,用于重置工具条
        AttachEvent(L"WM_SETFOCUS",OnSetFocus);
        AttachEvent(L"image", L"CBN_SELCHANGE",OnCombSelChanged);
        AttachEvent(L"tv_folder", L"TVN_ENDDRAG",OnTreeDrag);
        AttachEvent(L"tv_folder", L"TVN_SELCHANGED",OnTreeSelChanged);
        AttachEvent(L"WM_SETFOCUS", (FEvent)&XDevEditXApp::OnSetFocus);
        AttachEvent(L"image", L"CBN_SELCHANGE", (FEvent)&XDevEditXApp::OnCombSelChanged);
        AttachEvent(L"tv_folder", L"TVN_ENDDRAG", (FEvent)&XDevEditXApp::OnTreeDrag);
        AttachEvent(L"tv_folder", L"TVN_SELCHANGED", (FEvent)&XDevEditXApp::OnTreeSelChanged);
        return 1;
    }
    int OnInitial()
@@ -487,7 +496,7 @@
        int i;
        for (i = 0; i < 35; i++)
        {
            SendMessage(xc.GetHWND(), 0x0143, 0, i.toString());
            SendMessage(xc.GetHWND(), 0x0143, 0, (LPARAM)xstring(i).c_str());
            //param p=i.toString();
            //SendMessage(xc.GetHWND(), 0x0151, i, p);
        }
@@ -496,21 +505,19 @@
        return 1;
    }
    int OnTreeAdd(int hitem, IXMLDOMElement e)
    int OnTreeAdd(HTREEITEM hitem, KXMLDOMElement e)
    {
        auto list = e.selectNodes(L"*");
        int i;
        int s = list.length;
        int s = list.length();
        for (i = 0; i < s; i++)
        {
            IXMLDOMElement ele = list.item(i);
            KXMLDOMElement ele = list.item(i);
            xstring name = ele.getAttribute(L"caption");
            xstring image = ele.getAttribute(L"image");
            image = L"" + image;
            xstring data = ele.xml;
            xstring data = ele.xml();
            data = data.mid(0,data.find(L">",1)) + L"/>";
            param p = data;
            int j = tv_folder.InsertChildItem(hitem,name,p,image.toInt());
            HTREEITEM j = tv_folder.InsertChildItem(hitem,name.c_str(), (LPARAM)data.c_str(true), image.toInt());
            OnTreeAdd(j,ele);
        }
        return 1;
@@ -529,13 +536,13 @@
        OnCmdDispatch(L"NewFolder");
        m_mode = L"new";
        if (!GetParam()) return 1;
        if (!GetWinParam()) return 1;
        xwin w = GetFrameWindow();
        xtree tv = w.GetControl(L"DevExplorer");
        int hItem = GetParam();
        IXMLDOMElement e = tv.GetItemData(hItem);
        xtreeview tv = w.GetControl(L"DevExplorer");
        HTREEITEM hItem = (HTREEITEM)GetWinParam();
        KXMLDOMElement e = tv.GetItemData(hItem);
        xstring name = e.getAttribute(L"caption");
        int root = tv_folder.InsertItem(L"" + name,e,17);
        HTREEITEM root = tv_folder.InsertItem(name.c_str(), e, 17);
        xstring content = GetData();
        if (content != L"")
        {
@@ -543,7 +550,7 @@
            xml x ;
            if (x.loadXML(content))
            {
                OnTreeAdd(root,x.documentElement);
                OnTreeAdd(root,x.documentElement());
                tv_folder.ExpandItemEx(root);
            }
        }
jrj/xframe/devloper/XDevEditXDV.cpp
@@ -7,12 +7,13 @@
#include <xcontrol/xdwgrid.hpp>
#include <xcontrol/xsedit.hpp>
#include <xcontrol/xcombobox.hpp>
#include "XDevEditPage.hpp"
using xml = KXMLDOMDocument;
class export XDevEditXDV : public xwin
class export XDevEditXDV : public XDevEditPage
{
    public:
    XDevEditXDV(void* implPtr, HWND hWnd) :xwin(implPtr, hWnd) {}
    XDevEditXDV(void* implPtr, HWND hWnd) :XDevEditPage(implPtr, hWnd) {}
public:
    static XDevEditXDV* CreateInstance(void* implPtr, void* hWnd)
    {
@@ -86,7 +87,7 @@
            xml x;
            if (!x.loadXML(content))
            {
                KXMLDOMParseError pError = x.parseError;
                KXMLDOMParseError pError = x.parseError();
                if (pError)
                {
                    xstring str = pError.srcText();
@@ -111,8 +112,8 @@
            xstring sType = OnGetType();
            if (sType == L"xml.xsd")
            {
                xstring sError;
                x.ValidSchema(content, &sError);
                BSTR sError;
                x.ValidSchema((const wchar_t*)content.c_str(), sError);
                trace(sError);
            }
            xutil::RestoreCursor(hCursor);
@@ -142,6 +143,8 @@
        AttachEvent(L"WM_XCOMMAND",(FEvent)&XDevEditXDV::OnXCommand);
        //获取焦点事件,用于重置工具条
        AttachEvent(L"WM_SETFOCUS", (FEvent)&XDevEditXDV::OnSetFocus);
        return 1;
    }
    /*
jrj/xframe/devloper/XDevEditXFile.cpp
@@ -181,8 +181,8 @@
            xstring sType = OnGetType();
            if (sType == L"xml.xsd")
            {
                xstring sError;
                x.ValidSchema(content, &sError);
                BSTR sError= nullptr;
                x.ValidSchema((const wchar_t* )content.c_str(), sError);
                trace(sError);
            }
        }
@@ -211,7 +211,7 @@
                                        else if (sType == L"xml.xsd")
                                        {
                                            xml doc;
                                            x.GetSchemaXml(content,doc);
                                            x.GetSchemaXml((LPTSTR)content.c_str(), doc);
                                            //trace(doc.xml());
                                            auto e = doc.selectSingleNode(L"root/schema");
                                            if (e) {
@@ -244,7 +244,7 @@
        {
            HTREEITEM hP2Item = 0;
            HTREEITEM hDomainItem = 0;
            if (tv_folder.GetParentItem(hItem) <= 0)
            if (!tv_folder.GetParentItem(hItem))
            {
                hDomainItem = hItem;
            }
@@ -302,7 +302,7 @@
    {
        xstring xsd = GetXSD(L"" + filename);
        xml x;
        x.GetSchemaXml(xsd,x);
        x.GetSchemaXml((LPTSTR)xsd.c_str(), x);
        trace(x.xml());
        /*            xml x = new xml;
@@ -337,6 +337,8 @@
        //获取焦点事件,用于重置工具条
        AttachEvent(L"WM_SETFOCUS", (FEvent)&XDevEditXFile::OnSetFocus);
        AttachEvent(L"xreport",L"DWV_DOUBLECLICKED", (FEvent)&XDevEditXFile::OnDoubleClicked);
        return 1;
    }
    int LoadData()
jrj/xframe/devloper/XDevEditXML.cpp
@@ -7,12 +7,13 @@
#include <xcontrol/xdwgrid.hpp>
#include <xcontrol/xsedit.hpp>
#include <xcontrol/xcombobox.hpp>
#include "XDevEditPage.hpp"
using xml = KXMLDOMDocument;
class export XDevEditXML : public xwin
class export XDevEditXML : public XDevEditPage
{
    public:
    XDevEditXML(void* implPtr, HWND hWnd) :xwin(implPtr, hWnd) {}
    XDevEditXML(void* implPtr, HWND hWnd) :XDevEditPage(implPtr, hWnd) {}
public:
    static XDevEditXML* CreateInstance(void* implPtr, void* hWnd)
    {
@@ -129,8 +130,8 @@
        xstring sType = OnGetType();
        if (sType == L"xml.xsd")
        {
            xstring sError;
            x.ValidSchema(content, &sError);
            BSTR sError;
            x.ValidSchema(content.c_str(), sError);
            trace(sError);
        }
    }
@@ -227,6 +228,8 @@
    //获取焦点事件,用于重置工具条
    AttachEvent(L"WM_SETFOCUS", (FEvent)&XDevEditXML::OnSetFocus);
    //AttachEvent(L"content",L"WM_LBUTTONDOWN", ,(FEvent)&XDevEditXML::OnLButtonDown);
    return 1;
}
int OnInitial()
jrj/xframe/devloper/XDevEditXMSSQL.cpp
@@ -53,7 +53,7 @@
    xstring getLink(HTREEITEM item)
    {
        HTREEITEM p = tv_db.GetParentItem(item);
        while (tv_db.GetParentItem(p) > 0)
        while (tv_db.GetParentItem(p))
        {
            item = tv_db.GetParentItem(item);
            p = tv_db.GetParentItem(item);
@@ -139,7 +139,7 @@
    int onShow()
    {
        while (tv_db.GetRootItem() > 0)
        while (tv_db.GetRootItem())
            tv_db.DeleteItem(tv_db.GetRootItem());
        xsedit xs = GetControl(L"xcontent");
        xstring content;
@@ -158,13 +158,13 @@
            xstring name = ele.getAttribute(L"name");
            xstring link = ele.getAttribute(L"link");
            HTREEITEM k = tv_db.InsertChildItem(root,L"" + name,L"" + link,15);
            HTREEITEM j = tv_db.InsertChildItem(k,L"表",L"table",22);
            HTREEITEM j = tv_db.InsertChildItem(k,L"表",(LPARAM)L"table",22);
            tv_db.SetItemChild1(j,1);
            j = tv_db.InsertChildItem(k,L"视图",L"view",23);
            j = tv_db.InsertChildItem(k,L"视图", (LPARAM)L"view",23);
            tv_db.SetItemChild1(j,1);
            j = tv_db.InsertChildItem(k,L"存储过程",L"procedure",24);
            j = tv_db.InsertChildItem(k,L"存储过程", (LPARAM)L"procedure",24);
            tv_db.SetItemChild1(j,1);
            j = tv_db.InsertChildItem(k,L"自定义函数",L"function",25);
            j = tv_db.InsertChildItem(k,L"自定义函数", (LPARAM)L"function",25);
            tv_db.SetItemChild1(j,1);
        }
        tv_db.ExpandItem(root);
@@ -227,7 +227,7 @@
        }
        else if (comdid == L"xmQuery")
        {
            xstring guid = win32::GetGuid();
            xstring guid = publiccode::GetGuid();
            xstring caption = L"Query_" + guid.mid(1,8);
            if (OnOpen(caption,L"query") == 0) return 0;
            xsedit xs = GetControl(L"sql_" + caption);
@@ -302,7 +302,7 @@
    {
        NMTREEVIEW& nmtv = *(NMTREEVIEW*)evt->notify.pnmh;
        HTREEITEM item = nmtv.itemNew.hItem;
        if (tv_db.GetChildItem(item) > 0) return 0;
        if (tv_db.GetChildItem(item)) return 0;
        OnTreeExpand(item);
        return 1;
    }
@@ -331,13 +331,13 @@
    {
        tv_db.ExpandItemEx(item);
        HTREEITEM gitem = tv_db.GetChildItem(item);
        while (gitem > 0)
        while (gitem)
        {
            xstring data = L"" + tv_db.GetItemData(gitem);
            if (data.left(6) != L"group@") break;
            gitem = tv_db.GetNextItem(gitem);
        }
        xstring guid = win32::GetGuid();
        xstring guid = publiccode::GetGuid();
        if (OnGroupAction(guid,L"",L"group.update") != 1) return 0;
        HTREEITEM j = tv_db.InsertItem(item,gitem,L"",L"group@" + guid,25);
        tv_db.ItemEdit(j);
@@ -370,7 +370,7 @@
    int OnRefresh(HTREEITEM item)
    {
        while (tv_db.GetChildItem(item) > 0)
        while (tv_db.GetChildItem(item))
            tv_db.DeleteItem(tv_db.GetChildItem(item));
        OnTreeExpand(item);
        return 1;
@@ -498,7 +498,7 @@
            OnDesign(caption);
        else if (popup == L"新建表")
        {
            xstring guid = win32::GetGuid();
            xstring guid = publiccode::GetGuid();
            xstring text = L"Table_" + guid.mid(1,8);
            OnDesign(text);
        }
@@ -558,17 +558,19 @@
    int OnAttachEvent()
    {
        //绑定工具条点击事件
        AttachEvent(L"WM_XCOMMAND",(FEvent)XDevEditXMSSQL::OnXCommand);
        AttachEvent(L"WM_XCOMMAND",(FEvent)&XDevEditXMSSQL::OnXCommand);
        //获取焦点事件,用于重置工具条
        AttachEvent(L"WM_SETFOCUS", (FEvent)XDevEditXMSSQL::OnSetFocus);
        AttachEvent(L"WM_SETFOCUS", (FEvent)&XDevEditXMSSQL::OnSetFocus);
        //获得树的展开事件
        AttachEvent(L"tv_db", L"TVN_ITEMEXPANDING", (FEvent)XDevEditXMSSQL::OnTreeExpanding);
        AttachEvent(L"tv_db", L"TVN_ITEMEXPANDING", (FEvent)&XDevEditXMSSQL::OnTreeExpanding);
        //获得树的选择事件
        //AttachEvent(L"tv_db", L"TVN_SELCHANGED",(FEvent)XDevEditXMSSQL::OnTreeSelChanged);
        AttachEvent(L"tv_db", L"TVN_RCLICK", (FEvent)XDevEditXMSSQL::OnTreeRClick);
        AttachEvent(L"tv_db", L"TVN_BEGINDRAG", (FEvent)XDevEditXMSSQL::OnTreeBeginDrag);
        AttachEvent(L"tv_db", L"TVN_ENDDRAG", (FEvent)XDevEditXMSSQL::OnTreeEndDrag);
        AttachEvent(L"tv_db", L"TVN_ENDLABELEDIT", (FEvent)XDevEditXMSSQL::OnTreeEndEdit);
        //AttachEvent(L"tv_db", L"TVN_SELCHANGED",(FEvent)&XDevEditXMSSQL::OnTreeSelChanged);
        AttachEvent(L"tv_db", L"TVN_RCLICK", (FEvent)&XDevEditXMSSQL::OnTreeRClick);
        AttachEvent(L"tv_db", L"TVN_BEGINDRAG", (FEvent)&XDevEditXMSSQL::OnTreeBeginDrag);
        AttachEvent(L"tv_db", L"TVN_ENDDRAG", (FEvent)&XDevEditXMSSQL::OnTreeEndDrag);
        AttachEvent(L"tv_db", L"TVN_ENDLABELEDIT", (FEvent)&XDevEditXMSSQL::OnTreeEndEdit);
        return 1;
    }
    int LoadData()
jrj/xframe/devloper/XDevEditXRuler.cpp
@@ -141,6 +141,8 @@
        AttachEvent(L"WM_XCOMMAND", (FEvent)&XDevEditXRuler::OnXCommand);
        //获取焦点事件,用于重置工具条
        AttachEvent(L"WM_SETFOCUS", (FEvent)&XDevEditXRuler::OnSetFocus);
        return 1;
    }
    int OnInitial()
jrj/xframe/kobject/kreport.hpp
@@ -1,13 +1,14 @@
#pragma once
#include "kcontrol.hpp"
#include "kdwview.hpp"
namespace Hxsoft{ namespace XFrame{ namespace XOffice {namespace XReport
{
    class IXReport : public IXFControl
    class IXReport : public IDwView //public IXFControl
    {
    public:
        enum RowStatus{rs_new=0,rs_newmodified,rs_datamodified,rs_datanotmodified};
        enum DWBuffer{dbuf_normal=0,dbuf_filter,dbuf_delete};
        //enum RowStatus{rs_new=0,rs_newmodified,rs_datamodified,rs_datanotmodified};
        //enum DWBuffer{dbuf_normal=0,dbuf_filter,dbuf_delete};
    public:
        int GetRow_();
jrj/xframe/kobject/kxml.hpp
@@ -1,6 +1,8 @@
#pragma once
typedef wchar_t* BSTR ;
#if 1
namespace Hxsoft {    namespace XFrame
{
    class KXMLDOMNode;
@@ -14,6 +16,8 @@
    class KXMLDOMProcessingInstruction;
    class KXMLDOMNodeList;
    class KXMLDOMParseError;
    class KXMLDOMParseError;
    class KXMLDOMSchemaCollection;
    enum  KDOMNodeType
    {
@@ -212,6 +216,13 @@
        wchar_t* transformNode(KXMLDOMNode);
        KXMLDOMNode transformNodeToObject(KXMLDOMNode);
    public:
        KXMLDOMParseError parseError();
    public:
        KXMLDOMSchemaCollection namespaces();
        KXMLDOMSchemaCollection schemas();
        bool setSchemas(KXMLDOMSchemaCollection collection);
        KXMLDOMParseError validate();
        //bool validateNode();
    public:
@@ -226,6 +237,12 @@
        {
            if (documentElement())removeChild(documentElement());
        }
    public:
        static bool ValidSchema(const wchar_t* pSchema, BSTR& errText);
        static bool ValidSchema(KXMLDOMDocument xml, KXMLDOMDocument schema, BSTR& errText);
    public:
        static int GetSchemaXml(LPTSTR pSchema, KXMLDOMDocument& x);
    };
    class KXMLDOMAttribute : public KXMLDOMNode
@@ -275,6 +292,38 @@
        KXMLDOMDocumentFragment(void* impl) :KXMLDOMNode(impl) {}
    };
    class  KXMLDOMParseError : public KXMLDOMNode
    {
    public:
        KXMLDOMParseError(KXMLDOMNode& v);
        KXMLDOMParseError(void* impl) :KXMLDOMNode(impl) {}
    public:
        int errorCode();
        int filepos();
        int line();
        int linepos();
        BSTR reason();
        BSTR srcText();
        BSTR url();
    };
    class  KXMLDOMSchemaCollection
    {
    public:
    protected:
        void* impl;
    public:
        KXMLDOMSchemaCollection(void* impl);
        KXMLDOMSchemaCollection();
        KXMLDOMSchemaCollection(LPARAM p);
        ~KXMLDOMSchemaCollection();
    public:
        KXMLDOMSchemaCollection(const KXMLDOMSchemaCollection& rhs);
        const KXMLDOMSchemaCollection& operator =(const KXMLDOMSchemaCollection& rhs);
    public:
        void* getImpl();
    };
}}
@@ -283,7 +332,10 @@
using KXMLDOMNode=Hxsoft::XFrame::KXMLDOMNode;
using KXMLDOMElement=Hxsoft::XFrame::KXMLDOMElement;
using KXMLDOMNodeList = Hxsoft::XFrame::KXMLDOMNodeList;
using KXMLDOMParseError = Hxsoft::XFrame::KXMLDOMParseError;
using KXMLDOMSchemaCollection = Hxsoft::XFrame::KXMLDOMSchemaCollection;
/*
class KXMLDOMParseError : public KXMLDOMNode
{
public:
@@ -298,7 +350,7 @@
    BSTR srcText();
    BSTR url();
};
*/
class KXMLDOMElementPtr
{
private:
@@ -315,3 +367,335 @@
    KXMLDOMElement* operator -> () { return m_pElement; }
};
#endif
#if 0
namespace Hxsoft {
    namespace XFrame
    {
        class KXMLDOMNode;
        class KXMLDOMAttribute;
        class KXMLDOMElement;
        class KXMLDOMCDATASection;
        class KXMLDOMDocumentFragment;
        class KXMLDOMComment;
        class KXMLDOMEntityReference;
        class KXMLDOMTextNode;
        class KXMLDOMProcessingInstruction;
        class KXMLDOMNodeList;
        class KXMLDOMParseError;
        class KXMLDOMSchemaCollection;
        enum  KDOMNodeType
        {
            KNODE_INVALID = 0,
            KNODE_ELEMENT = (KNODE_INVALID + 1),
            KNODE_ATTRIBUTE = (KNODE_ELEMENT + 1),
            KNODE_TEXT = (KNODE_ATTRIBUTE + 1),
            KNODE_CDATA_SECTION = (KNODE_TEXT + 1),
            KNODE_ENTITY_REFERENCE = (KNODE_CDATA_SECTION + 1),
            KNODE_ENTITY = (KNODE_ENTITY_REFERENCE + 1),
            KNODE_PROCESSING_INSTRUCTION = (KNODE_ENTITY + 1),
            KNODE_COMMENT = (KNODE_PROCESSING_INSTRUCTION + 1),
            KNODE_DOCUMENT = (KNODE_COMMENT + 1),
            KNODE_DOCUMENT_TYPE = (KNODE_DOCUMENT + 1),
            KNODE_DOCUMENT_FRAGMENT = (KNODE_DOCUMENT_TYPE + 1),
            KNODE_NOTATION = (KNODE_DOCUMENT_FRAGMENT + 1)
        };
        class  KXMLDOMNodeList
        {
        public:
            long length();
            bool length(long&);
            bool length(long*);
            bool get_length(long* v) { return length(v); }
            KXMLDOMNode item(int index);
            bool item(int index, KXMLDOMNode& node);
            bool item(int index, KXMLDOMNode* node);
            bool get_item(int index, KXMLDOMNode* node) { return item(index, node); }
        private:
            void* impl;
        public:
            void* getImpl();
        public:
            KXMLDOMNodeList(void* impl);
            KXMLDOMNodeList() :impl(nullptr) {}
            ~KXMLDOMNodeList();
        public:
            operator bool() { return impl ? true : false; }
        public:
            KXMLDOMNodeList(const KXMLDOMNodeList& rhs);
            const KXMLDOMNodeList& operator =(const KXMLDOMNodeList& rhs);
        };
        class KXMLDOMElement;
        class KXMLDOMAttribute;
        class KXMLDOMDocument;
        class  KXMLDOMNode {
        public:
            //    attributes
            //        baseName
            KXMLDOMNodeList childNodes();
            //    dataType
            //    definition
            KXMLDOMNode    firstChild();
            KXMLDOMNode    lastChild();
            //    namespaceURI
            //    namespaceURI
            KXMLDOMNode    nextSibling();
            const wchar_t* nodeName();
            KDOMNodeType    nodeType();
            KDOMNodeType    get_nodeType() { return nodeType(); }
            //    nodeTypedValue
            //    nodeTypeString
            //    nodeValue
            KXMLDOMDocument    ownerDocument();
            KXMLDOMNode    parentNode();
            //    parsed
            //    prefix
            KXMLDOMNode    previousSibling();
            //    specified
            const wchar_t* tagName();
            const wchar_t* text();
            const wchar_t* xml();
            bool get_tagName(BSTR& str);
            bool get_text(BSTR& str);
            bool get_xml(BSTR& str);
            bool get_tagName(BSTR* str) { return get_tagName(*str); }
            bool get_text(BSTR* str) { return get_text(*str); }
            bool get_xml(BSTR* str) { return get_xml(*str); }
            bool settext(const wchar_t* txt);
            bool put_text(const wchar_t* txt) { return settext(txt); }
            bool    appendChild(KXMLDOMNode);
            KXMLDOMNode    cloneNode(bool);
            wchar_t* getAttribute(const wchar_t* name);
            void getAttribute(const wchar_t* name, void* vt);
            KXMLDOMAttribute    getAttributeNode(const wchar_t* name);
            KXMLDOMNodeList    getElementsByTagName(const wchar_t* name);
            bool    hasChildNodes();
            bool    insertBefore(KXMLDOMNode newnode, KXMLDOMNode at);
            void    normalize();
            bool    removeAttribute(const wchar_t* name);
            bool    removeAttributeNode(KXMLDOMNode attr);
            bool    removeChild(KXMLDOMNode val);
            bool    replaceChild(KXMLDOMNode newChild, KXMLDOMNode oldChild);
            KXMLDOMNodeList    selectNodes(const wchar_t*);
            KXMLDOMNode    selectSingleNode(const wchar_t*);
            bool selectNodes(const wchar_t*, KXMLDOMNodeList& pNodeList);
            bool selectSingleNode(const wchar_t*, KXMLDOMNode& pNode);
            bool selectNodes(const wchar_t*, KXMLDOMNodeList* pNodeList);
            bool selectSingleNode(const wchar_t*, KXMLDOMNode* pNode);
            void    setAttribute(const wchar_t* name, const wchar_t* value);
            void    setAttribute(const wchar_t* name, long val);
            void    setAttribute(const wchar_t* name, int val);
            void    setAttribute(const wchar_t* name, double val);
            wchar_t* transformNode(KXMLDOMNode stylesheet);
            KXMLDOMNode    transformNodeToObject(KXMLDOMNode);
        protected:
            void* impl;
        public:
            KXMLDOMNode(void* impl);
            KXMLDOMNode() :KXMLDOMNode(nullptr) {}
            ~KXMLDOMNode();
            KXMLDOMNode(LPARAM p) :KXMLDOMNode((void*)p) {
                AddRef();
            }
        public:
            KXMLDOMNode(const KXMLDOMNode& rhs);
            const KXMLDOMNode& operator =(const KXMLDOMNode& rhs);
        public:
            operator bool() { return impl ? true : false; }
        public:
            void* getImpl();
        public:
            unsigned long AddRef();
            unsigned long Release();
        public:
            bool operator !=(KXMLDOMNode& rhs) { return rhs.getImpl() != getImpl(); }
            bool operator ==(KXMLDOMNode& rhs) { return rhs.getImpl() == getImpl(); }
        };
        class  KXMLDOMElement : public KXMLDOMNode
        {
        public:
            KXMLDOMElement(KXMLDOMNode v);
            KXMLDOMElement(void* impl) :KXMLDOMNode(impl) {}
            KXMLDOMElement() :KXMLDOMNode() {}
        public:
            KXMLDOMElement(LPARAM p) :KXMLDOMNode(p) {}
        };
        class  KXMLDOMAttribute : public KXMLDOMNode
        {
        public:
            KXMLDOMAttribute(KXMLDOMNode& v);
            KXMLDOMAttribute(void* impl) :KXMLDOMNode(impl) {}
        };
        class  KXMLDOMCDATASection : public KXMLDOMNode
        {
        public:
            KXMLDOMCDATASection(KXMLDOMNode& v);
            KXMLDOMCDATASection(void* impl) :KXMLDOMNode(impl) {}
        };
        class  KXMLDOMDocument : public KXMLDOMNode
        {
        public:
            bool operator !()
            {
                return !impl || !documentElement();
            }
        public:
            const wchar_t* text();
            const wchar_t* url();
            const wchar_t* xml();
            KXMLDOMElement documentElement();
            bool documentElement(KXMLDOMElement* pDoc);
            bool get_documentElement(KXMLDOMElement* pDoc) { return documentElement(pDoc); }
        public:
            KXMLDOMParseError parseError();
        public:
            bool appendChild(KXMLDOMNode);
            KXMLDOMAttribute createAttribute(const wchar_t*);
            KXMLDOMCDATASection createCDATASection(const wchar_t*);
            KXMLDOMComment createComment(const wchar_t*);
            KXMLDOMDocumentFragment createDocumentFragment();
            KXMLDOMElement createElement(const wchar_t*);
            bool createElement(const wchar_t*, KXMLDOMElement* ele);
            KXMLDOMEntityReference createEntityReference(const wchar_t*);
            KXMLDOMNode createNode(KDOMNodeType ty, const wchar_t* name, const wchar_t* ns);
            KXMLDOMProcessingInstruction createProcessingInstruction(const wchar_t* target, const wchar_t* data);
            KXMLDOMTextNode createTextNode(const wchar_t*);
            KXMLDOMNodeList getElementsByTagName(const wchar_t*);
            wchar_t* getProperty(const wchar_t*);
            bool setProperty(const wchar_t* prop, const wchar_t* val);
            bool setProperty(const wchar_t* prop, bool val);
            bool hasChildNodes();
            bool importNode(KXMLDOMNode);
            bool insertBefore(KXMLDOMNode newnode, KXMLDOMNode at);
            bool load(const wchar_t*);
            bool loadXML(const wchar_t*);
            KXMLDOMNode nodeFromID(const wchar_t*);
            bool removeChild(KXMLDOMNode);
            bool replaceChild(KXMLDOMNode newChild, KXMLDOMNode oldChild);
            bool save(const wchar_t*);
            KXMLDOMNodeList selectNodes(const wchar_t*);
            KXMLDOMNode selectSingleNode(const wchar_t*);
            bool selectNodes(const wchar_t*, KXMLDOMNodeList& pNodeList);
            bool selectSingleNode(const wchar_t*, KXMLDOMNode& pNode);
            bool selectNodes(const wchar_t*, KXMLDOMNodeList* pNodeList);
            bool selectSingleNode(const wchar_t*, KXMLDOMNode* pNode);
            wchar_t* transformNode(KXMLDOMNode);
            KXMLDOMNode transformNodeToObject(KXMLDOMNode);
        public:
            KXMLDOMSchemaCollection namespaces();
            KXMLDOMSchemaCollection schemas();
            bool setSchemas(KXMLDOMSchemaCollection collection);
            KXMLDOMParseError validate();
            //bool validateNode();
        public:
            KXMLDOMDocument(void* impl);
            KXMLDOMDocument();
            ~KXMLDOMDocument();
        public:
            const KXMLDOMDocument& operator =(const KXMLDOMDocument& rhs);
            KXMLDOMDocument(const KXMLDOMDocument& rhs);
        public:
            void Reset()
            {
                if (documentElement())removeChild(documentElement());
            }
        public:
            static bool ValidSchema(const wchar_t* pSchema, BSTR& errText);
            static bool ValidSchema(KXMLDOMDocument xml, KXMLDOMDocument schema, BSTR& errText);
        public:
            static int GetSchemaXml(LPTSTR pSchema, KXMLDOMDocument& x);
        };
        class  KXMLDOMComment : public KXMLDOMNode
        {
        public:
            KXMLDOMComment(KXMLDOMNode& v);
            KXMLDOMComment(void* impl) :KXMLDOMNode(impl) {}
        };
        class  KXMLDOMEntityReference : public KXMLDOMNode
        {
        public:
            KXMLDOMEntityReference(KXMLDOMNode& v);
            KXMLDOMEntityReference(void* impl) :KXMLDOMNode(impl) {}
        };
        class  KXMLDOMTextNode : public KXMLDOMNode
        {
        public:
            KXMLDOMTextNode(KXMLDOMNode& v);
            KXMLDOMTextNode(void* impl) :KXMLDOMNode(impl) {}
        };
        class  KXMLDOMProcessingInstruction : public KXMLDOMNode
        {
        public:
            KXMLDOMProcessingInstruction(KXMLDOMNode& v);
            KXMLDOMProcessingInstruction(void* impl) :KXMLDOMNode(impl) {}
        };
        class  KXMLDOMDocumentFragment : public KXMLDOMNode
        {
        public:
            KXMLDOMDocumentFragment(KXMLDOMNode& v);
            KXMLDOMDocumentFragment(void* impl) :KXMLDOMNode(impl) {}
        };
        class  KXMLDOMParseError : public KXMLDOMNode
        {
        public:
            KXMLDOMParseError(KXMLDOMNode& v);
            KXMLDOMParseError(void* impl) :KXMLDOMNode(impl) {}
        public:
            int errorCode();
            int filepos();
            int line();
            int linepos();
            BSTR reason();
            BSTR srcText();
            BSTR url();
        };
        class  KXMLDOMSchemaCollection
        {
        public:
        protected:
            void* impl;
        public:
            KXMLDOMSchemaCollection(void* impl);
            KXMLDOMSchemaCollection();
            KXMLDOMSchemaCollection(LPARAM p);
            ~KXMLDOMSchemaCollection();
        public:
            KXMLDOMSchemaCollection(const KXMLDOMSchemaCollection& rhs);
            const KXMLDOMSchemaCollection& operator =(const KXMLDOMSchemaCollection& rhs);
        public:
            void* getImpl();
        };
    }
}
using KXMLDOMDocument = Hxsoft::XFrame::KXMLDOMDocument;
using KXMLDOMNode = Hxsoft::XFrame::KXMLDOMNode;
using KXMLDOMElement = Hxsoft::XFrame::KXMLDOMElement;
using KXMLDOMNodeList = Hxsoft::XFrame::KXMLDOMNodeList;
using KXMLDOMParseError = Hxsoft::XFrame::KXMLDOMParseError;
using KXMLDOMSchemaCollection = Hxsoft::XFrame::KXMLDOMSchemaCollection;
#endif