xj qian
2024-06-27 51faca7cff4ce6b848fcbd8f7fe881f6fc59b4f3
add xfile
已添加2个文件
已修改7个文件
476 ■■■■ 文件已修改
jrj/ext-jrj/ext-jrj.vcxproj 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/business/quote.enquiry.cpp 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/xframe/adt/xarray.hpp 128 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/xframe/kobject/kapp.hpp 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/xframe/win32/win.hpp 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/xframe/win32/xfile.hpp 186 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/xframe/wobject/xaserver.hpp 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/xframe/wobject/xint.hpp 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/xframe/wobject/xutil.hpp 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/ext-jrj/ext-jrj.vcxproj
@@ -169,6 +169,7 @@
    <ClInclude Include="..\project\viewobject\saleorder.view.hpp" />
    <ClInclude Include="..\project\viewobject\shoppingcart.view.hpp" />
    <ClInclude Include="..\project\viewobject\supplier.view.hpp" />
    <ClInclude Include="..\xframe\adt\xarray.hpp" />
    <ClInclude Include="..\xframe\kobject\kapp.hpp" />
    <ClInclude Include="..\xframe\kobject\kbase.hpp" />
    <ClInclude Include="..\xframe\kobject\kcachemgr.hpp" />
@@ -198,6 +199,8 @@
    <ClInclude Include="..\xframe\vbusiness\vframe\maint.vframe.vbusiness.hpp" />
    <ClInclude Include="..\xframe\vbusiness\vframe\responsewin.vframe.vbusiness.hpp" />
    <ClInclude Include="..\xframe\vbusiness\vutil\publiccode.vutil.vbusiness.hpp" />
    <ClInclude Include="..\xframe\win32\win.hpp" />
    <ClInclude Include="..\xframe\win32\xfile.hpp" />
    <ClInclude Include="..\xframe\wobject\xapp.hpp" />
    <ClInclude Include="..\xframe\wobject\xaserver.hpp" />
    <ClInclude Include="..\xframe\wobject\xaserverarg.hpp" />
@@ -252,7 +255,9 @@
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
    </ClCompile>
    <ClCompile Include="..\project\business\quote.enquiry.cpp" />
    <ClCompile Include="..\project\business\quote.enquiry.cpp">
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
    </ClCompile>
    <ClCompile Include="..\project\business\Quote3.list3.cpp">
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
    </ClCompile>
jrj/project/business/quote.enquiry.cpp
@@ -2188,7 +2188,7 @@
    }
    //焦点激活处理函数
    int OnSetFocus(ref TEvent evt, int param)
    int OnSetFocus(TEvent* evt, LPARAM param)
    {
        //重置工具条
        SetAgent();
@@ -2200,7 +2200,6 @@
        xml x = ViewObject::RetrieveData(L"/sale/data/TO/template/param", L"TemplateID", id);
        xml sheet ;
        sheet.setNativePointer(x.CreateInstance());
        sheet.loadXML(x.selectSingleNode(L"data/*").xml);
        dw_cell.LoadTemplate(sheet);
@@ -2257,30 +2256,6 @@
        return 1;
    }
    static stdcall int GetModuleFileName(int hModule, xstring lpFileName, int nSize) native from "kernel32.dll" alias "GetModuleFileNameW";
    static stdcall int PathRemoveFileSpec(xstring lpFileName) native from "shlwapi.dll" alias "PathRemoveFileSpecW";
    xstring GetModulePath()
    {
        xstring str = L"";
        str = str.space(255);
        GetModuleFileName(0, str, 250);
        PathRemoveFileSpec(str);
        return str;
    }
    xstring GetModuleTmpPath()
    {
        xstring str = L"";
        str = str.space(255);
        GetModuleFileName(0, str, 250);
        PathRemoveFileSpec(str);
        xstring tmp = str + L"\\Temp";
        xaserver::CreateDirectory(tmp);
        return tmp;
    }
    xstring UploadImage(xstring guid)
    {
        return UploadImage(guid, L"");
@@ -2290,12 +2265,12 @@
    {
        xstring name = guid + L".jpg";
        xstring str = name.mid(0, 2);
        str = str.upper();
        str = str.toUpper();
        int ret = 1;
        if (filename != L"")
            ret = xaserver::Upload(L"product" + str, name, filename, this.GetHWND(), L"", false);
            ret = xaserver::Upload(L"product" + str, name, filename, GetHWND(), L"", false);
        else
            ret = xaserver::Upload(L"product" + str, name, this.GetHWND(), L"", false);
            ret = xaserver::Upload(L"product" + str, name.c_str(), GetHWND(), L"", false);
        if (ret == -1) return L"";
        if (ret == 0)
        {
@@ -2315,7 +2290,7 @@
        }
        xutil::SmallImage(appPath+L"\\"+name,appPath+L"\\"+L"x_"+name,120,120);
        int ret_1 = xaserver::Upload(L"product"+str, L"x_"+name,appPath+L"\\x_"+name, this.GetHWND(),L"",false);
        int ret_1 = xaserver::Upload(L"product"+str, L"x_"+name,appPath+L"\\x_"+name, GetHWND(),L"",false);
        //xaserver::DeleteFile(appPath+L"x_"+name);
        //xaserver::DeleteFile(appPath+name);
        if(ret_1 != 1)
@@ -2331,12 +2306,12 @@
    {
        xstring name = guid + L".jpg";
        xstring str = name.mid(0, 2);
        str = str.upper();
        str = str.toUpper();
        int ret = 1;
        if (filename != L"")
            ret = xaserver::Upload(L"product" + str, name, filename, this.GetHWND(), L"", false);
            ret = xaserver::Upload(L"product" + str, name, filename, GetHWND(), L"", false);
        else
            ret = xaserver::Upload(L"product" + str, name, this.GetHWND(), L"", false);
            ret = xaserver::Upload(L"product" + str, name, GetHWND(), L"", false);
        if (ret == -1) return L"";
        if (ret == 0)
        {
@@ -2354,7 +2329,7 @@
        }
        xutil::SmallImage(appPath + L"\\" + name, appPath + L"\\" + L"x_" + name, 120, 120);
        int ret_1 = xaserver::Upload(L"product" + str, L"x_" + name, appPath + L"\\x_" + name, this.GetHWND(), L"", false);
        int ret_1 = xaserver::Upload(L"product" + str, L"x_" + name, appPath + L"\\x_" + name, GetHWND(), L"", false);
        //xaserver::DeleteFile(appPath+L"x_"+name);
        //xaserver::DeleteFile(appPath+name);
        if (ret_1 != 1)
@@ -2617,24 +2592,23 @@
        //        "JPEG æ–‡ä»¶(*.jpg)\0*.jpg;*.jpeg;*.png;*.gif;*.bmp\0全部文件(*.*)\0*.*\0",
        //        "jpg");        
        char[]  szFileName = new char[4096];
        char[]  szPath = new char[4096];
        wchar_t  szFileName[4096];
        wchar_t szPath[4096];
        szFileName[0] = 0;
        szPath[0] = 0;
        if (initFileName != L"")
        {
            int len = initFileName.length();
            char[] tmp = initFileName;
            const wchar_t* tmp = initFileName.c_str();
            for (int i = 0; i < len + 1; i++)
            {
                //szFileName[i] = tmp[i];
                szPath[i] = tmp[i];
            }
        }
        int     nFilterIndex = 1;
        ref OPENFILENAMEW ofn = new OPENFILENAMEW;
        OPENFILENAMEW ofn;
        ofn.lStructSize = 88;//sizeof(ofn);
        ofn.hwndOwner = 0;
@@ -3121,7 +3095,7 @@
        return 1;
    }
    int OnCellSelectChanged(ref TNotifyEvent evt, int p)
    int OnCellSelectChanged(TEvent*, LPARAM p)
    {
        /*ref DWNMHDR  hdr = trust(evt.pnmh as ref DWNMHDR);
        xstring colname=hdr.colname;
@@ -3132,7 +3106,7 @@
        return 1;
    }
    int OnItemChanged(ref TNotifyEvent evt, int p)
    int OnItemChanged(TEvent*, LPARAM p)
    {
        ref DWNMHDR  hdr = trust(evt.pnmh as ref DWNMHDR);
        xstring colname = hdr.colname;
@@ -3289,14 +3263,14 @@
        xstring res = L"/sale/data/productlibrary3/pref/picture/imagelistskuno";
        if (xurl::get(res, arg_pic.GetString(), xp) != 1)
        {
            trace(xp.GetXml());
            trace(xp.xml());
            return 1;
        }
        else
        {
            //alert(xp.GetXml());
            //alert(xp.xml());
            ClearImageTerm(row, L"customer-photo");
            //alert(xp.GetXml());
            //alert(xp.xml());
            KXMLDOMNodeList nlistp = xp.selectNodes(L"ImageList/image");
            int lenp = nlistp.length();
            int ip = 0;
@@ -3349,13 +3323,13 @@
        xstring res = L"/sale/data/ProductLibrary3/pref/picture/imagelistItemNo";
        if (xurl::get(res, arg_pic.GetString(), xp) != 1)
        {
            trace(xp.GetXml());
            trace(xp.xml());
            return 1;
        }
        else
        {
            ClearImageTerm(row, L"customer-photo");
            //alert(xp.GetXml());
            //alert(xp.xml());
            KXMLDOMNodeList nlistp = xp.selectNodes(L"ImageList/image");
            int lenp = nlistp.length();
            int ip = 0;
@@ -3735,7 +3709,7 @@
    xstring GetExchangeRate(xstring pcur, xstring pdate)
    {
        if (pcur.upper() == L"RMB") return L"1";
        if (pcur.toUpper() == L"RMB") return L"1";
        xstring exchangeRate = L"";
        if (exchangeRate == L"") {
            xml x = ViewObject::RetrieveData(L"/sale/data/GDN3/profit/param", L"item", L"cryrate");
@@ -3792,9 +3766,9 @@
        return 1;
    }
    int OnRowChanged(ref TNotifyEvent evt, int p)
    int OnRowChanged(TEvent* evt, LPARAM p)
    {
        ref DWNMHDR  hdr = trust(evt.pnmh as ref DWNMHDR);
        DWNMHDR&  hdr = *(DWNMHDR * )evt->notify.pnmh;
        int row = hdr.row;
        return OnQuoteLineChanged(row);
@@ -3803,7 +3777,7 @@
    int OnQuoteLineChanged(int row)
    {
        ximageview im = GetControl(L"im1");
        im.ResetEx();
        im.Reset();
        //xstring skuno = dw_goods.GetItemString(row,L"SKUNo");
        //OnShowImage(skuno,row);
        //im.Redraw();
@@ -3827,9 +3801,7 @@
        ximageview im = GetControl(L"im1");
        xml xp ;
        xp.setNativePointer(xml::CreateInstance());
        xaserverarg arg_pic ;
        arg_pic.setNativePointer(arg_pic.CreateInstance());
        arg_pic.AddArg(L"SKUNo", skuno);
        xstring res = L"/sale/data/ProductLibrary3/pref/picture/imagelistSKUNo";
@@ -3846,7 +3818,7 @@
        bool hasIamge = false;
        if (xurl::get(res, arg_pic.GetString(), xp) != 1)
        {
            trace(xp.GetXml());
            trace(xp.xml());
            return 1;
        }
        else
@@ -3869,18 +3841,18 @@
            res = L"/sale/data/ProductLibrary3/pref/picture/imagelistSKUNo";
            if (xurl::get(res, arg_pic.GetString(), xp) != 1)
            {
                trace(xp.GetXml());
                trace(xp.xml());
                return 1;
            }
            else
            {
                nlistp = xp.selectNodes(L"ImageList/image");
                lenp = nlistp.length();
                for (ip = 0; ip < lenp; ip++)
                KXMLDOMNodeList nlistp = xp.selectNodes(L"ImageList/image");
                long lenp = nlistp.length();
                for (int ip = 0; ip < lenp; ip++)
                {
                    xitem = nlistp.item(ip);
                    picname = xitem.selectSingleNode(L"PicPath").text();
                    goodno = xitem.selectSingleNode(L"GoodsNo").text();
                    KXMLDOMNode xitem = nlistp.item(ip);
                    xstring picname = xitem.selectSingleNode(L"PicPath").text();
                    xstring goodno = xitem.selectSingleNode(L"GoodsNo").text();
                    if (picname == L"/business/products/Thumbs//")
                        picname = L"/business/products/Thumbs/00/00000000-0000-0000-0000-000000000000.jpg";
                    im.AddImages(picname, goodno);
@@ -3920,7 +3892,7 @@
    int OnUpdateProcessed()
    {
        int ret = ProcessSendMessage(L"/task/quote/update-processed", taskid, L"", L"", false);
        win32::PostMessage(GetFrameWindow().GetHWND(), 0x401, L"xmRefreshTask", 0);
        PostMessage(GetFrameWindow().GetHWND(), 0x401, (WPARAM)L"xmRefreshTask", 0);
        return ret;
    }
@@ -3993,9 +3965,8 @@
        if (filename == L"" || saveas)
        {
            xaserverarg arg ;
            arg.AddArg(L"src", myurl);
            OpenWindow(L"dev:xpage[trade.document.saveas.vx]", cast(arg as int));
            OpenWindow(L"dev:xpage[trade.document.saveas.vx]", arg);
            if (arg.GetArgString(L"result") == L"ok")
            {
                sfilename = arg.GetArgString(L"filename");
@@ -4009,7 +3980,7 @@
        xstring sguid = publiccode::GetGuid();
        xstring sname = sguid;
        xstring str = sname.mid(0, 2);
        str = str.upper();
        str = str.toUpper();
        xstring suri = L"attachment" + str;
        int ret = xaserver::UploadData(suri, sguid + L".jpg", content);
        if (ret < 0)
@@ -4019,7 +3990,6 @@
        }
        xml x ;
        xaserverarg args ;
        args.setNativePointer(args.CreateInstance());
        args.AddArg(L"myurl", myurl);
@@ -4040,7 +4010,7 @@
        else
        {
            filename = sfilename;
            win32::SetWindowText(GetHWND(), L"报价文件:" + filename);
            SetWindowText(GetHWND(), L"报价文件:" + filename);
            alert(x.text());
        }
@@ -4049,11 +4019,11 @@
    int SendCtrlCmd(xcontrol xc, xstring cmd)
    {
        win32::SendMessage(xc.GetId(), 0x401, cmd, 0);
        SendMessage(xc.GetHWND(), 0x401, cmd, 0);
        return 1;
    }
    int OnCellClicked(ref TNotifyEvent evt, int p)
    int OnCellClicked(TEvent*, LPARAM p)
    {
        ref DWNMHDR dwhdr = cast(evt.pnmh as ref DWNMHDR);
        int row = dwhdr.row;
@@ -4259,7 +4229,7 @@
    }
    int OnCellClicked1(ref TNotifyEvent evt, int p)
    int OnCellClicked1(TEvent*, LPARAM p)
    {
        ref DWNMHDR dwhdr = cast(evt.pnmh as ref DWNMHDR);
        int row = dwhdr.row;
jrj/xframe/adt/xarray.hpp
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,128 @@
#pragma once
#include "system/base.hpp"
#include "wobject/xobject.hpp"
#include "wobject/xstring.hpp"
template<class T>
class xarray : public xobject
{
public:
    xarray(length_(0), capacity_(0),itemms(nullptr){
    }
public:
    xarray*push_back(T t)
    {
        sure_space();
        items[length_] = t;
        ++length_;
        return this;
    }
    xarray* pop_back()
    {
        if (length() > 0)
            erase(length() - 1);
        return this;
    }
    xarray* erase(int index)
    {
        if (index < 0 || index > length_ - 1)
        {
            //throw("...");
            return this;
        }
        //move data
        for (int i = index; i < length_ - 1; i++)items[i] = items[i + 1];
        --length_;
        return this;
    }
    xarray* insert_before(int index, T t)
    {
        sure_space();
        if (index < 0)
        {
            for (int i = 0; i < length_ - 1; i++)items[i] = items[i + 1];
            items[0] = t;
            return this;
        }
        if (index >= length_)
        {
            items[length_] = t;
            ++length_;
        }
        return this;
    }
    xarray* insert_after(int index, T t)
    {
        return insert_before(index + 1, t);
    }
    T back()
    {
        if (length_)
            return items[length_ - 1];
        return 0;
    }
    T front()
    {
        if (length_)
            return items[0];
        return 0;
    }
    int length()
    {
        return length_;
    }
    T item(int index)
    {
        if (index >= 0 && index < length_) return items[index];
        return 0;
    }
    int find(T t)
    {
        for (int i = 0; i < length_; i++)
        {
            if (items[i] == t) return i;
        }
        return -1;
    }
private:
    bool sure_space()
    {
        if (length_ == capacity_)
        {
            if (!items)
            {
                items = new T[2];
                capacity_ = 2;
            }
            else
            {
                capacity_ = capacity_ * 2;
                T* temp = new T[capacity_];
                //可以优化为拷贝操作
                for (int i = 0; i < length_; ++i)
                {
                    temp[i] = items[i];
                }
                delete items;
                items = temp;
            }
        }
        return true;
    }
private:
    T* items;
    int length_;
    int capacity_;
};
jrj/xframe/kobject/kapp.hpp
@@ -30,5 +30,6 @@
        static int trace(LPCTSTR pstr);
    public:
        int Run();
    };
}}
jrj/xframe/win32/win.hpp
@@ -29,12 +29,6 @@
#define WINAPI   __stdcall
#define SendMessage SendMessageW
#define PostMessage PostMessageW
#define GetWindowLong GetWindowLongW
#define SetWindowLong SetWindowLongW
#define MessageBox    MessageBoxW
extern "C"
{
    void WINAPI SysFreeString(BSTR str);//OleAut32.dll
@@ -111,9 +105,20 @@
    
    int WINAPI GetTempPathW(int NAME_LEN,string & OutPath) ;//native from "kernel32.dll" alias "GetTempPathW";
    int WINAPI GetModuleHandleW(string lpModuleName) ;//native from "kernel32.dll" alias "GetModuleHandleW";
    int WINAPI GetModuleFileName(int hModule ,string & lpFileName ,int nSize ) ;//native from "kernel32.dll" alias "GetModuleFileName";
    int WINAPI GetModuleFileNameW(int hModule ,string lpFileName, int nSize);//native from "kernel32.dll" alias "GetModuleFileNameW";
    void WINAPI GetLocalTime(SYSTEMTIME& lpSystemTime) ;//native from "kernel32.dll" alias "GetLocalTime";
    int WINAPI PathRemoveFileSpecW(xstring lpFileName);// native from "shlwapi.dll" alias "PathRemoveFileSpecW";
}
#define SendMessage SendMessageW
#define PostMessage PostMessageW
#define GetWindowLong GetWindowLongW
#define SetWindowLong SetWindowLongW
#define MessageBox    MessageBoxW
#define GetModuleFileName GetModuleFileNameW
#define PathRemoveFileSpec PathRemoveFileSpecW
#define SetWindowText SetWindowTextW
#define GetWindowText GetWindowTextW
#if 0
namespace win32
@@ -193,5 +198,6 @@
    int GetModuleHandleW(string lpModuleName) ;//native from "kernel32.dll" alias "GetModuleHandleW";
    int GetModuleFileName(int hModule ,string & lpFileName ,int nSize ) ;//native from "kernel32.dll" alias "GetModuleFileName";
    void GetLocalTime(SYSTEMTIME& lpSystemTime) ;//native from "kernel32.dll" alias "GetLocalTime";
}
#endif
jrj/xframe/win32/xfile.hpp
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,186 @@
#pragma once
#include "system/base.hpp"
#include "win.hpp"
#define CALLBACK    __stdcall
#define MAX_PATH    260
typedef unsigned short WORD;
typedef unsigned int UINT;
typedef char CHAR;
typedef unsigned char BYTE;
typedef wchar_t WCHAR;
typedef void* HANDLE;
typedef const char* LPCSTR;
typedef void* LPVOID;
typedef DWORD* LPDWORD;
typedef const void* LPCVOID;
typedef void* LPSECURITY_ATTRIBUTES;
typedef UINT_PTR(CALLBACK* LPOFNHOOKPROC) (HWND, UINT, WPARAM, LPARAM);
struct OPENFILENAMEW
{
    DWORD        lStructSize;
    HWND         hwndOwner;
    HINSTANCE    hInstance;
    LPCWSTR      lpstrFilter;
    LPWSTR       lpstrCustomFilter;
    DWORD        nMaxCustFilter;
    DWORD        nFilterIndex;
    LPWSTR       lpstrFile;
    DWORD        nMaxFile;
    LPWSTR       lpstrFileTitle;
    DWORD        nMaxFileTitle;
    LPCWSTR      lpstrInitialDir;
    LPCWSTR      lpstrTitle;
    DWORD        Flags;
    WORD         nFileOffset;
    WORD         nFileExtension;
    LPCWSTR      lpstrDefExt;
    LPARAM       lCustData;
    LPOFNHOOKPROC lpfnHook;
    LPCWSTR      lpTemplateName;
    void* pvReserved;
    DWORD        dwReserved;
    DWORD        FlagsEx;
};
//FILETIME结构持有的64位无符号的文件的日期和时间值。头文件: WINDEF.H
struct FILETIME
{
    int dwLowDateTime; // ä½Ž 32 ä½
    int dwHighDateTime; // é«˜ 32 ä½
};
#if 0
struct fileinfo : public xstruct
{
    char[128] szFileTitle; //文件的标题名
    int dwFileAttributes; //文件的属性
    FILETIME ftCreationTime; //文件的创建时间
    FILETIME ftLastAccessTime; //文件的最后访问时间
    FILETIME ftLastWriteTime; //文件的最后修改时间
    int nFileSizeHigh; //文件大小的高位双字
    int nFileSizeLow; //文件大小的低位双字
    int dwReserved0; //保留,为0
    int dwReserved1; //保留,为0
};
#endif
typedef struct _WIN32_FIND_DATAW {
    DWORD dwFileAttributes;
    FILETIME ftCreationTime;
    FILETIME ftLastAccessTime;
    FILETIME ftLastWriteTime;
    DWORD nFileSizeHigh;
    DWORD nFileSizeLow;
    DWORD dwReserved0;
    DWORD dwReserved1;
    WCHAR  cFileName[MAX_PATH];
    WCHAR  cAlternateFileName[14];
} WIN32_FIND_DATAW;
typedef struct _OVERLAPPED {
    ULONG_PTR Internal;
    ULONG_PTR InternalHigh;
    union {
        struct {
            DWORD Offset;
            DWORD OffsetHigh;
        } DUMMYSTRUCTNAME;
        LPVOID Pointer;
    } DUMMYUNIONNAME;
    HANDLE  hEvent;
} OVERLAPPED, * LPOVERLAPPED;
#define OFS_MAXPATHNAME 128
typedef struct _OFSTRUCT {
    BYTE cBytes;
    BYTE fFixedDisk;
    WORD nErrCode;
    WORD Reserved1;
    WORD Reserved2;
    CHAR szPathName[OFS_MAXPATHNAME];
} OFSTRUCT;
extern "C"
{
    bool  WINAPI GetSaveFileNameW(OPENFILENAMEW &);//native from "comdlg32.dll" alias "GetSaveFileNameW";
    bool  WINAPI GetOpenFileNameW(OPENFILENAMEW&);//native from "comdlg32.dll" alias "GetOpenFileNameW";
    HANDLE WINAPI FindFirstFileW(const WCHAR * lpFileName, WIN32_FIND_DATAW&  lpFindFileData); //native from "kernel32.dll" alias "FindFirstFileW";    //根据文件名查找文件,一旦不再需要,应该用FindClose函数关闭这个句柄
    HANDLE WINAPI FindNextFileW(HANDLE hFindFile, WIN32_FIND_DATAW&  lpFindFileData); //native from "kernel32.dll" alias "FindNextFileW";    //继续查找FindFirstFile函数搜索后的文件 ,HANDLE hFindFile搜索的文件句柄 å‡½æ•°æ‰§è¡Œçš„æ—¶å€™æœç´¢çš„æ˜¯æ­¤å¥æŸ„的下一文件。非零表示成功,零表示失败。如不再有与指定条件相符的文件,会将GetLastError设置成ERROR_NO_MORE_FILES
    bool  WINAPI FindClose(HANDLE hFindFile); //native from "kernel32.dll" alias "FindClose";    //关闭由FindFirstFile函数创建的一个搜索句柄。返回非零表示成功,零表示失败。会设置GetLastError
    int  WINAPI CreateFileW(LPCWSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile); //native from "kernel32.dll" alias "CreateFileW";
    int  WINAPI  OpenFile(LPCSTR lpFileName, OFSTRUCT lpReOpenBuff, UINT wStyle); //native from "kernel32.dll" alias "OpenFile";
    int  WINAPI SetFilePointer(HANDLE hFile, LONG lDistanceToMove, LONG* lpDistanceToMoveHigh, DWORD dwMoveMethod); //native from "kernel32.dll" alias "SetFilePointer";
    int  WINAPI ReadFile(HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped); //native from "kernel32.dll" alias "ReadFile";
    int  WINAPI WriteFile(HANDLE hFile, LPCVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped); //native from "kernel32.dll" alias "ReadFile";
    int  WINAPI CloseHandle(HANDLE hFile); //native from "kernel32.dll" alias "CloseHandle";
    int  WINAPI GetFileSize(HANDLE hFile, int lpFileSizeHigh); //native from "kernel32.dll" alias "GetFileSize";
    int  WINAPI GetKeyState(HANDLE nVirtKey); //native from "user32.dll" alias "GetKeyState";
}
class xfile
{
    bool  WINAPI GetSaveFileName(OPENFILENAMEW& OpenFileName)
    {
        return GetSaveFileNameW(OpenFileName);
    }
    bool  WINAPI GetOpenFileName(OPENFILENAMEW& SaveFileName)
    {
        return GetOpenFileName(SaveFileName);
    }
    HANDLE WINAPI FindFirstFile(const WCHAR* lpFileName, WIN32_FIND_DATAW& lpFindFileData)
    {
        return FindFirstFileW(lpFileName, lpFindFileData);
    }
    HANDLE WINAPI FindNextFile(HANDLE hFindFile, WIN32_FIND_DATAW& lpFindFileData)
    {
        return FindNextFileW(hFindFile, lpFindFileData);
    }
    bool  WINAPI FindClose(HANDLE hFindFile)
    {
        return FindClose(hFindFile);
    }
    int  WINAPI CreateFile(LPCWSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile)
    {
        return CreateFileW(lpFileName, dwDesiredAccess, dwShareMode, lpSecurityAttributes, dwCreationDisposition, dwFlagsAndAttributes, hTemplateFile);
    }
    int  WINAPI  OpenFile(LPCSTR lpFileName, OFSTRUCT lpReOpenBuff, UINT wStyle)
    {
        return OpenFile(lpFileName, lpReOpenBuff, wStyle);
    }
    int  WINAPI SetFilePointer(HANDLE hFile, LONG lDistanceToMove, LONG* lpDistanceToMoveHigh, DWORD dwMoveMethod)
    {
        return SetFilePointer(hFile, lDistanceToMove, lpDistanceToMoveHigh, dwMoveMethod);
    }
    int  WINAPI ReadFile(HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped)
    {
        return ReadFile(hFile, lpBuffer, nNumberOfBytesToRead, lpNumberOfBytesRead, lpOverlapped);
    }
    int  WINAPI WriteFile(HANDLE hFile, LPCVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped)
    {
        return WriteFile(hFile, lpBuffer, nNumberOfBytesToRead, lpNumberOfBytesRead, lpOverlapped);
    }
    int  WINAPI CloseHandle(HANDLE hFile)
    {
        return  CloseHandle(hFile);
    }
    int  WINAPI GetFileSize(HANDLE hFile, int lpFileSizeHigh)
    {
        return GetFileSize(hFile, lpFileSizeHigh);
    }
    int  WINAPI GetKeyState(HANDLE nVirtKey)
    {
        return GetKeyState(nVirtKey);
    }
};
jrj/xframe/wobject/xaserver.hpp
@@ -170,9 +170,9 @@
        return kxaserver::UploadEx((LPTSTR)pUri, (LPTSTR)pName,m_hWnd, (LPTSTR)pSource,bCompress);
    }
    static int Upload(LPTSTR pUri,LPTSTR pName,HWND m_hWnd,LPTSTR pSource=NULL,BOOL bCompress=false)
    static int Upload(LPCTSTR pUri,LPCTSTR pName,HWND m_hWnd,LPCTSTR pSource=NULL,BOOL bCompress=false)
    {
        return kxaserver::Upload(pUri,pName,m_hWnd,pSource,bCompress);
        return kxaserver::Upload((LPTSTR)pUri,(LPTSTR)pName,m_hWnd, (LPTSTR)pSource,bCompress);
    }
    static int Upload(LPCTSTR pUri,LPCTSTR pName,LPCTSTR pPath,HWND m_hWnd,LPCTSTR pSource=NULL,BOOL bCompress=false)
@@ -188,11 +188,11 @@
    {
        return kxaserver::UploadFile((LPTSTR)pUri,(LPTSTR)pName,m_hWnd,(LPTSTR)pSource,bCompress);
    }
    static int __DeleteFile(LPTSTR pName)
    static int DeleteFile(LPTSTR pName)
    {
        return kxaserver::__DeleteFile(pName);
    }
    static int __CreateDirectory(LPCTSTR pName)
    static int CreateDirectory(LPCTSTR pName)
    {
        return kxaserver::__CreateDirectory((LPTSTR)pName);
    }
jrj/xframe/wobject/xint.hpp
@@ -18,5 +18,5 @@
public:
    operator int() { return value; }
    double toDouble() { return (double)value; }
    xstring toString() { return (xstring(value); }
    xstring toString() { return xstring(value); }
};
jrj/xframe/wobject/xutil.hpp
@@ -53,4 +53,20 @@
        return Hxsoft::XUtil::FormatDecimalString(str, format, bfree);
    }
public:
    static xstring GetModulePath()
    {
        wchar_t buf[255];
        GetModuleFileName(0, buf, 255);
        PathRemoveFileSpec(buf);
        return xstring(buf);
    }
    static xstring GetModuleTmpPath()
    {
        xstring tmp = GetModulePath() + L"\\Temp";
        xaserver::CreateDirectory(tmp);
        return tmp;
    }
};