1、materialDlg.h文件

// MateriaManagementDlg.h : 头文件
//#pragma once
#include "afxcmn.h"
#include <vector>
#include "sqlite3.h"
#include "afxwin.h"
#include "afxshelltreectrl.h"
#include "afxshelllistctrl.h"
#include <vector>// CMateriaManagementDlg 对话框
class CMateriaManagementDlg : public CDialogEx
{
// 构造
public:CMateriaManagementDlg(CWnd* pParent = NULL);    // 标准构造函数struct sqlSelect{CString proid;CString imagePosition;};
public:std::vector<sqlSelect> selVec;CString treeSel;CString fullPath;
// 对话框数据enum { IDD = IDD_MATERIAMANAGEMENT_DIALOG };protected:virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持// 实现
protected:HICON m_hIcon;// 生成的消息映射函数virtual BOOL OnInitDialog();afx_msg void OnSysCommand(UINT nID, LPARAM lParam);afx_msg void OnPaint();afx_msg HCURSOR OnQueryDragIcon();DECLARE_MESSAGE_MAP()
public:CTreeCtrl m_webTree;CImageList m_imageList;afx_msg void OnTvnSelchangedWebTree(NMHDR *pNMHDR, LRESULT *pResult);//std::wstring Utf82Unicode(const std::string& utf8string);char* U2G(const char* utf8);char* G2U(const char* gb2312);afx_msg void OnStnClickedStaticPng();afx_msg void OnStnClickedStaticPng1();afx_msg void OnStnClickedStaticMaterialText1();afx_msg void OnStnClickedStaticMaterialText8();void OnShowProPreviewImage(const CString strImagePath);void OnDrawBackGroundColor(CWnd *pWnd);void  CMateriaManagementDlg::showProducts();afx_msg void OnBnClickedButton1();void showLeaveProducts();void  clearPciture(int clearNum);afx_msg void OnBnClickedButton2();void deleteMaterial(CString &id);void deletedLoad();afx_msg void OnBnClickedButton3();afx_msg void OnBnClickedButton4();afx_msg void OnBnClickedButton5();afx_msg void OnBnClickedButton6();afx_msg void OnBnClickedButton7();afx_msg void OnBnClickedButton8();afx_msg void OnBnClickedButton9();afx_msg void OnBnClickedButton10();afx_msg void OnStnClickedStaticMaterialText3();afx_msg void OnEnChangeItemSelEdit();sqlite3* ConnectDatabase(const char* path);                    //返回数据库链接指针afx_msg void OnBnClickedButton11();afx_msg void OnCbnSelchangeCombo1();CComboBox m_prostyle;afx_msg void OnBnClickedButton12();afx_msg void OnEnChangeProId();afx_msg void OnEnChangeProName();afx_msg void OnEnChangeEdit3();afx_msg void OnTvnSelchangedMfcshelltree1(NMHDR *pNMHDR, LRESULT *pResult);CMFCShellTreeCtrl m_tree;afx_msg void OnEnChangeEditObj();afx_msg void OnEnChangeEdit2();afx_msg void OnCbnSelchangeCombo2();CComboBox m_comboWeb;afx_msg void OnLvnItemchangedMfcshelllist1(NMHDR *pNMHDR, LRESULT *pResult);afx_msg void OnEnChangeEdit1();std::vector<const std::string> RecureDir(const std::string &full_path);afx_msg void OnEnChangeCompanyCode();afx_msg void OnEnChangeCopyStatus();CString  SelectTable(const std::string &selMaxID);std::string Convert(CString & select);void InsertMatrialInfo();bool DirDelete(CString &directory);CString Query(const std::string &selMaxID);/*表ProductInfo**************************************************************************************************/CString  m_proid;                                           //已赋值       CString  m_proname;                                         //已赋值CString     m_pronodeid;                                       //已赋值CString     m_prenodeid;                                       //已赋值CString  m_nodelayerid;                                        //已赋值CString  m_procorlor;                                      //已赋值CString  m_material;                                       //已赋值CString  m_style;                                          //已赋值CString  m_proremark;                                      //已赋值CString  m_proprice;                                       //已赋值CString  m_pronumber;                                      //已赋值CString  m_prolinkurl;                                     //已赋值               CString  m_proseller;                                       //已赋值CString  m_topimageview;                                   //已赋值CString  m_preimageview;                                   //已赋值CString  m_prozippath;                                     //已赋值CString  m_proobjpath;                                     //已赋值CString  m_proisdeleted;                                   //已赋值CString  m_proupdatetime;                                  //已赋值/*表MaterialInfo**************************************************************************************************/CString  m_materialid;                                   //已赋值CString  m_materialname;                               //已赋值CString  m_materialnodeid;                             //已赋值CString  m_materialstyle;                              //已赋值CString  m_materialimagepath;                          //已赋值CString  m_materialdeleted;                                //已赋值CString  m_updatetime;                                 //已赋值CString  m_materialsizex;                              //已赋值CString  m_materialsizey;                              //已赋值CString  m_materialprice;                              //已赋值   afx_msg void OnEnChangeInsertStatus();
};

2、materialDlg.cpp实现文件

// MateriaManagementDlg.cpp : 实现文件
//#include "stdafx.h"
#include "MateriaManagement.h"
#include "MateriaManagementDlg.h"
#include "afxdialogex.h"
#include "sqlite3.h"
#include <iostream>
#include <vector>
#include "SQLiteHelper.h"
#include <algorithm>
#include <iostream>
#include <io.h>
#include <stdio.h>
#include <stdlib.h>
#include <boost/filesystem.hpp>
#include <boost/lexical_cast.hpp>
#include <Shlwapi.h>
#pragma comment(lib,"Shlwapi.lib")#ifdef _DEBUG
#define new DEBUG_NEW
#endif// 用于应用程序“关于”菜单项的 CAboutDlg 对话框
char* AnsiToUTF_8(WCHAR szStr[])
{// WCHAR szStr[] = _T("中国");int u8Len = WideCharToMultiByte(CP_UTF8, NULL, szStr, wcslen(szStr), NULL, 0, NULL, NULL);char * szU8 = new char[u8Len + 1];WideCharToMultiByte(CP_UTF8, NULL, szStr, wcslen(szStr), szU8, u8Len, NULL, NULL);szU8[u8Len] = '\0';printf(szU8);return szU8;
}
wchar_t* CharToWchar(const char* c)
{wchar_t* m_wchar = NULL;int len = MultiByteToWideChar(CP_ACP, 0, c, strlen(c), NULL, 0);m_wchar = new wchar_t[len + 1];MultiByteToWideChar(CP_ACP, 0, c, strlen(c), m_wchar, len);m_wchar[len] = '\0';return m_wchar;
}
wchar_t* StringTWchar(const std::string& s)
{const char* p = s.c_str();return CharToWchar(p);
}
CString utilDataDir(CString sub_path)
{WCHAR pFileName[1024];GetModuleFileName(NULL, pFileName, 1024);//housedesign/bin/debug/housedesign.exeCString fullPath(pFileName);// housedesign/bin/releaseint p0 = fullPath.ReverseFind('\\');int p1 = fullPath.ReverseFind('\/');int p = (std::max)(p0, p1);fullPath = fullPath.Mid(0, p);//  housedesign/binp0 = fullPath.ReverseFind('\\');p1 = fullPath.ReverseFind('\/');p = (std::max)(p0, p1);fullPath = fullPath.Mid(0, p);//  housedesignp0 = fullPath.ReverseFind('\\');p1 = fullPath.ReverseFind('\/');p = (std::max)(p0, p1);fullPath = fullPath.Mid(0, p);//  housedesign/data/fullPath = fullPath + CString("\\MateriaManagement\\MateriaManagement\\data\\");//  housedesign/data/sub_pathfullPath = fullPath + sub_path;return fullPath;
}
CString utilDataBaseDir(CString database_path_name)
{return utilDataDir(CString(_T("database\\")) + database_path_name);
}
//Unicode 转 Utf8
char* Unicode2Utf8(const std::wstring& widestring)
{int utf8size = ::WideCharToMultiByte(CP_UTF8, 0, widestring.c_str(), -1, NULL, 0, NULL, NULL);if (utf8size == 0){throw std::exception("Error in conversion.");}//std::vector<char> resultstring(utf8size);char *szUtf8 = new char[utf8size + 1];memset(szUtf8, 0, utf8size + 1);int convresult = ::WideCharToMultiByte(CP_UTF8, 0, widestring.c_str(), -1, szUtf8/*&resultstring[0]*/, utf8size, NULL, NULL);if (convresult != utf8size){throw std::exception("La falla!");}szUtf8[utf8size] = '\0';//return std::string(szUtf8/*&resultstring[0]*/);return szUtf8;
}
CString utilProductDir(CString product_path_name)
{return utilDataDir(CString(_T("products\\")) + product_path_name);
}
/*******************************************************以上都是加的函数********************************/
class CAboutDlg : public CDialogEx
{
public:CAboutDlg();// 对话框数据enum { IDD = IDD_ABOUTBOX };protected:virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持// 实现
protected:DECLARE_MESSAGE_MAP()
};CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD)
{
}void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{CDialogEx::DoDataExchange(pDX);
}BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)
END_MESSAGE_MAP()// CMateriaManagementDlg 对话框CMateriaManagementDlg::CMateriaManagementDlg(CWnd* pParent /*=NULL*/): CDialogEx(CMateriaManagementDlg::IDD, pParent)
{m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}void CMateriaManagementDlg::DoDataExchange(CDataExchange* pDX)
{CDialogEx::DoDataExchange(pDX);DDX_Control(pDX, IDC_WEB_TREE, m_webTree);DDX_Control(pDX, IDC_COMBO1, m_prostyle);DDX_Control(pDX, IDC_MFCSHELLTREE1, m_tree);DDX_Control(pDX, IDC_COMBO2, m_comboWeb);
}BEGIN_MESSAGE_MAP(CMateriaManagementDlg, CDialogEx)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_NOTIFY(TVN_SELCHANGED, IDC_WEB_TREE, &CMateriaManagementDlg::OnTvnSelchangedWebTree)
//  ON_STN_CLICKED(IDC_STATIC_PNG, &CMateriaManagementDlg::OnStnClickedStaticPng)ON_STN_CLICKED(IDC_STATIC_PNG1, &CMateriaManagementDlg::OnStnClickedStaticPng1)ON_STN_CLICKED(IDC_STATIC_MATERIAL_TEXT1, &CMateriaManagementDlg::OnStnClickedStaticMaterialText1)ON_STN_CLICKED(IDC_STATIC_MATERIAL_TEXT8, &CMateriaManagementDlg::OnStnClickedStaticMaterialText8)ON_BN_CLICKED(IDC_BUTTON1, &CMateriaManagementDlg::OnBnClickedButton1)ON_BN_CLICKED(IDC_BUTTON2, &CMateriaManagementDlg::OnBnClickedButton2)ON_BN_CLICKED(IDC_BUTTON3, &CMateriaManagementDlg::OnBnClickedButton3)ON_BN_CLICKED(IDC_BUTTON4, &CMateriaManagementDlg::OnBnClickedButton4)ON_BN_CLICKED(IDC_BUTTON5, &CMateriaManagementDlg::OnBnClickedButton5)ON_BN_CLICKED(IDC_BUTTON6, &CMateriaManagementDlg::OnBnClickedButton6)ON_BN_CLICKED(IDC_BUTTON7, &CMateriaManagementDlg::OnBnClickedButton7)ON_BN_CLICKED(IDC_BUTTON8, &CMateriaManagementDlg::OnBnClickedButton8)ON_BN_CLICKED(IDC_BUTTON9, &CMateriaManagementDlg::OnBnClickedButton9)ON_BN_CLICKED(IDC_BUTTON10, &CMateriaManagementDlg::OnBnClickedButton10)ON_STN_CLICKED(IDC_STATIC_MATERIAL_TEXT3, &CMateriaManagementDlg::OnStnClickedStaticMaterialText3)ON_EN_CHANGE(IDC_ITEM_SEL_EDIT, &CMateriaManagementDlg::OnEnChangeItemSelEdit)ON_BN_CLICKED(IDC_BUTTON11, &CMateriaManagementDlg::OnBnClickedButton11)ON_CBN_SELCHANGE(IDC_COMBO1, &CMateriaManagementDlg::OnCbnSelchangeCombo1)ON_BN_CLICKED(IDC_BUTTON12, &CMateriaManagementDlg::OnBnClickedButton12)ON_EN_CHANGE(IDC_PRO_NAME, &CMateriaManagementDlg::OnEnChangeProName)ON_EN_CHANGE(IDC_EDIT3, &CMateriaManagementDlg::OnEnChangeEdit3)ON_NOTIFY(TVN_SELCHANGED, IDC_MFCSHELLTREE1, &CMateriaManagementDlg::OnTvnSelchangedMfcshelltree1)ON_EN_CHANGE(IDC_EDIT_OBJ, &CMateriaManagementDlg::OnEnChangeEditObj)ON_EN_CHANGE(IDC_EDIT2, &CMateriaManagementDlg::OnEnChangeEdit2)ON_CBN_SELCHANGE(IDC_COMBO2, &CMateriaManagementDlg::OnCbnSelchangeCombo2)ON_EN_CHANGE(IDC_EDIT1, &CMateriaManagementDlg::OnEnChangeEdit1)ON_EN_CHANGE(IDC_COMPANY_CODE, &CMateriaManagementDlg::OnEnChangeCompanyCode)ON_EN_CHANGE(IDC_COPY_STATUS, &CMateriaManagementDlg::OnEnChangeCopyStatus)ON_EN_CHANGE(IDC_INSERT_STATUS, &CMateriaManagementDlg::OnEnChangeInsertStatus)
END_MESSAGE_MAP()// CMateriaManagementDlg 消息处理程序BOOL CMateriaManagementDlg::OnInitDialog()
{CDialogEx::OnInitDialog();// 将“关于...”菜单项添加到系统菜单中。// IDM_ABOUTBOX 必须在系统命令范围内。ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);CMenu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != NULL){BOOL bNameValid;CString strAboutMenu;bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);ASSERT(bNameValid);if (!strAboutMenu.IsEmpty()){pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);}}// 设置此对话框的图标。  当应用程序主窗口不是对话框时,框架将自动//  执行此操作SetIcon(m_hIcon, TRUE);           // 设置大图标SetIcon(m_hIcon, FALSE);        // 设置小图标ShowWindow(SW_MINIMIZE);// TODO:  在此添加额外的初始化代码m_tree.SetFlags((SHCONTF)(SHCONTF_FOLDERS | SHCONTF_NONFOLDERS));     //mfc shelltree control显示所有形式的文件// 将“关于...”菜单项添加到系统菜单中。// IDM_ABOUTBOX 必须在系统命令范围内。/**************/HICON hIcon[4];      // 图标句柄数组   HTREEITEM hRoot;     // 树的根节点的句柄   HTREEITEM hBigItem; // 可表示任一分类节点的句柄   HTREEITEM hMiddle;  // 可表示任一文章节点的句柄  HTREEITEM hSmallItem;  // 可表示任一文章节点的句柄 // 加载三个图标,并将它们的句柄保存到数组   hIcon[0] = theApp.LoadIcon(IDI_WEB_ICON);hIcon[1] = theApp.LoadIcon(IDI_CATALOG_ICON);hIcon[2] = theApp.LoadIcon(IDI_ARTICLE_ICON);hIcon[3] = theApp.LoadIcon(IDI_ICON1);// 创建图像序列CImageList对象   m_imageList.Create(32, 32, ILC_COLOR32, 3, 3);// 将三个图标添加到图像序列   for (int i = 0; i<4; i++){m_imageList.Add(hIcon[i]);}// 为树形控件设置图像序列   m_webTree.SetImageList(&m_imageList, TVSIL_NORMAL);// 插入根节点   hRoot = m_webTree.InsertItem(_T("小瓦匠产品库"), 0, 0);// 在根节点下插入子节点   hBigItem = m_webTree.InsertItem(_T("卧房家具"), 1, 1, hRoot, TVI_LAST);  m_webTree.SetItemData(hBigItem, 1);hMiddle = m_webTree.InsertItem(_T("床组合"), 2, 2, hBigItem, TVI_LAST);  m_webTree.SetItemData(hMiddle, 2); hSmallItem = m_webTree.InsertItem(_T("组合床"), 3, 3, hMiddle, TVI_LAST);m_webTree.SetItemData(hSmallItem, 3);hSmallItem = m_webTree.InsertItem(_T("床头柜"), 3, 3, hMiddle, TVI_LAST);m_webTree.SetItemData(hSmallItem, 4);hMiddle = m_webTree.InsertItem(_T("电视柜"), 2, 2, hBigItem, TVI_LAST); m_webTree.SetItemData(hMiddle, 5);hMiddle = m_webTree.InsertItem(_T("衣柜组合"), 2, 2, hBigItem, TVI_LAST); m_webTree.SetItemData(hMiddle, 6);hSmallItem = m_webTree.InsertItem(_T("趟门衣柜"), 3, 3, hMiddle, TVI_LAST);m_webTree.SetItemData(hSmallItem, 7);hSmallItem = m_webTree.InsertItem(_T("掩门衣柜"), 3, 3, hMiddle, TVI_LAST);m_webTree.SetItemData(hSmallItem, 8);hMiddle = m_webTree.InsertItem(_T("妆台组合"), 2, 2, hBigItem, TVI_LAST);m_webTree.SetItemData(hMiddle, 9);hMiddle = m_webTree.InsertItem(_T("其他组合"), 2, 2, hBigItem, TVI_LAST);m_webTree.SetItemData(hMiddle, 10);// 在根节点下插入第二个子节点   hBigItem = m_webTree.InsertItem(_T("客餐厅家具"), 1, 1, hRoot, TVI_LAST); m_webTree.SetItemData(hBigItem, 11);hMiddle = m_webTree.InsertItem(_T("沙发"), 2, 2, hBigItem, TVI_LAST);m_webTree.SetItemData(hMiddle, 12);hSmallItem = m_webTree.InsertItem(_T("组合沙发"), 3, 3, hMiddle, TVI_LAST);m_webTree.SetItemData(hSmallItem, 13);hSmallItem = m_webTree.InsertItem(_T("简易沙发"), 3, 3, hMiddle, TVI_LAST);m_webTree.SetItemData(hSmallItem, 14);hSmallItem = m_webTree.InsertItem(_T("靠垫"), 3, 3, hMiddle, TVI_LAST);m_webTree.SetItemData(hSmallItem, 15);hSmallItem = m_webTree.InsertItem(_T("茶几"), 3, 3, hMiddle, TVI_LAST);m_webTree.SetItemData(hSmallItem, 16);hMiddle = m_webTree.InsertItem(_T("电视柜"), 2, 2, hBigItem, TVI_LAST);m_webTree.SetItemData(hMiddle, 17);hMiddle = m_webTree.InsertItem(_T("隔断"), 2, 2, hBigItem, TVI_LAST);m_webTree.SetItemData(hMiddle, 18);hMiddle = m_webTree.InsertItem(_T("餐桌"), 2, 2, hBigItem, TVI_LAST);m_webTree.SetItemData(hMiddle, 19);hMiddle = m_webTree.InsertItem(_T("餐边柜"), 2, 2, hBigItem, TVI_LAST);m_webTree.SetItemData(hMiddle, 20);hMiddle = m_webTree.InsertItem(_T("客餐厅其他"), 2, 2, hBigItem, TVI_LAST);m_webTree.SetItemData(hMiddle, 21);hMiddle = m_webTree.InsertItem(_T("酒柜"), 2, 2, hBigItem, TVI_LAST);m_webTree.SetItemData(hMiddle, 22);hMiddle = m_webTree.InsertItem(_T("茶几"), 2, 2, hBigItem, TVI_LAST);m_webTree.SetItemData(hMiddle, 23);hMiddle = m_webTree.InsertItem(_T("椅子"), 2, 2, hBigItem, TVI_LAST);m_webTree.SetItemData(hMiddle, 24);hMiddle = m_webTree.InsertItem(_T("餐椅"), 2, 2, hBigItem, TVI_LAST);m_webTree.SetItemData(hMiddle, 25);hMiddle = m_webTree.InsertItem(_T("凳子"), 2, 2, hBigItem, TVI_LAST);m_webTree.SetItemData(hMiddle, 26);hMiddle = m_webTree.InsertItem(_T("壁炉"), 2, 2, hBigItem, TVI_LAST);m_webTree.SetItemData(hMiddle, 27);hMiddle = m_webTree.InsertItem(_T("鞋柜"), 2, 2, hBigItem, TVI_LAST);m_webTree.SetItemData(hMiddle, 28);hBigItem = m_webTree.InsertItem(_T("书房家具"), 1, 1, hRoot, TVI_LAST); m_webTree.SetItemData(hBigItem, 29);hMiddle = m_webTree.InsertItem(_T("书房组合"), 2, 2, hBigItem, TVI_LAST);m_webTree.SetItemData(hMiddle, 30);hMiddle = m_webTree.InsertItem(_T("书柜"), 2, 2, hBigItem, TVI_LAST);m_webTree.SetItemData(hMiddle, 31);hMiddle = m_webTree.InsertItem(_T("书桌"), 2, 2, hBigItem, TVI_LAST);m_webTree.SetItemData(hMiddle, 32);hBigItem = m_webTree.InsertItem(_T("小孩房家具"), 1, 1, hRoot, TVI_LAST);   m_webTree.SetItemData(hBigItem, 33);hMiddle = m_webTree.InsertItem(_T("儿童床头"), 2, 2, hBigItem, TVI_LAST);m_webTree.SetItemData(hMiddle, 34);hMiddle = m_webTree.InsertItem(_T("儿童书桌"), 2, 2, hBigItem, TVI_LAST);m_webTree.SetItemData(hMiddle, 35);hMiddle = m_webTree.InsertItem(_T("儿童衣柜"), 2, 2, hBigItem, TVI_LAST);m_webTree.SetItemData(hMiddle, 36);hBigItem = m_webTree.InsertItem(_T("厨房"), 1, 1, hRoot, TVI_LAST); m_webTree.SetItemData(hBigItem, 37);hMiddle = m_webTree.InsertItem(_T("橱柜"), 2, 2, hBigItem, TVI_LAST);m_webTree.SetItemData(hMiddle, 38);hMiddle = m_webTree.InsertItem(_T("水池"), 2, 2, hBigItem, TVI_LAST);m_webTree.SetItemData(hMiddle, 39);hMiddle = m_webTree.InsertItem(_T("厨房小件"), 2, 2, hBigItem, TVI_LAST);m_webTree.SetItemData(hMiddle, 40);hBigItem = m_webTree.InsertItem(_T("卫生间"), 1, 1, hRoot, TVI_LAST);m_webTree.SetItemData(hBigItem, 41);hMiddle = m_webTree.InsertItem(_T("淋浴房"), 2, 2, hBigItem, TVI_LAST);m_webTree.SetItemData(hMiddle, 42);hMiddle = m_webTree.InsertItem(_T("马桶"), 2, 2, hBigItem, TVI_LAST);m_webTree.SetItemData(hMiddle, 43);hMiddle = m_webTree.InsertItem(_T("洗漱池"), 2, 2, hBigItem, TVI_LAST);m_webTree.SetItemData(hMiddle, 44);hMiddle = m_webTree.InsertItem(_T("浴缸"), 2, 2, hBigItem, TVI_LAST);m_webTree.SetItemData(hMiddle, 45);hMiddle = m_webTree.InsertItem(_T("拖把池"), 2, 2, hBigItem, TVI_LAST);m_webTree.SetItemData(hMiddle, 46);hMiddle = m_webTree.InsertItem(_T("浴巾架"), 2, 2, hBigItem, TVI_LAST);m_webTree.SetItemData(hMiddle, 47);hBigItem = m_webTree.InsertItem(_T("装饰物"), 1, 1, hRoot, TVI_LAST);   m_webTree.SetItemData(hBigItem, 48);hMiddle = m_webTree.InsertItem(_T("装饰品"), 2, 2, hBigItem, TVI_LAST);m_webTree.SetItemData(hMiddle, 49);hMiddle = m_webTree.InsertItem(_T("衣物"), 2, 2, hBigItem, TVI_LAST);m_webTree.SetItemData(hMiddle, 50);hMiddle = m_webTree.InsertItem(_T("灯具"), 2, 2, hBigItem, TVI_LAST);m_webTree.SetItemData(hMiddle, 51);hSmallItem = m_webTree.InsertItem(_T("台灯"), 3, 3, hMiddle, TVI_LAST);m_webTree.SetItemData(hSmallItem, 52);hSmallItem = m_webTree.InsertItem(_T("吊灯"), 3, 3, hMiddle, TVI_LAST);m_webTree.SetItemData(hSmallItem, 53);hSmallItem = m_webTree.InsertItem(_T("壁灯"), 3, 3, hMiddle, TVI_LAST);m_webTree.SetItemData(hSmallItem, 54);hSmallItem = m_webTree.InsertItem(_T("筒灯"), 3, 3, hMiddle, TVI_LAST);m_webTree.SetItemData(hSmallItem, 55);hSmallItem = m_webTree.InsertItem(_T("吸顶灯"), 3, 3, hMiddle, TVI_LAST);m_webTree.SetItemData(hSmallItem, 56);hSmallItem = m_webTree.InsertItem(_T("厨房吊灯"), 3, 3, hMiddle, TVI_LAST);m_webTree.SetItemData(hSmallItem, 57);hSmallItem = m_webTree.InsertItem(_T("其他"), 3, 3, hMiddle, TVI_LAST);m_webTree.SetItemData(hSmallItem, 58);hMiddle = m_webTree.InsertItem(_T("书籍"), 2, 2, hBigItem, TVI_LAST);m_webTree.SetItemData(hMiddle, 59);hMiddle = m_webTree.InsertItem(_T("地毯"), 2, 2, hBigItem, TVI_LAST);m_webTree.SetItemData(hMiddle, 60);hMiddle = m_webTree.InsertItem(_T("电器"), 2, 2, hBigItem, TVI_LAST);m_webTree.SetItemData(hMiddle, 61);hBigItem = m_webTree.InsertItem(_T("其他"), 1, 1, hRoot, TVI_LAST);  m_webTree.SetItemData(hBigItem, 62);hMiddle = m_webTree.InsertItem(_T("吊顶"), 2, 2, hBigItem, TVI_LAST);m_webTree.SetItemData(hMiddle, 63);hMiddle = m_webTree.InsertItem(_T("壁画"), 2, 2, hBigItem, TVI_LAST);m_webTree.SetItemData(hMiddle, 64);hMiddle = m_webTree.InsertItem(_T("背景墙"), 2, 2, hBigItem, TVI_LAST);m_webTree.SetItemData(hMiddle, 65);hMiddle = m_webTree.InsertItem(_T("窗帘"), 2, 2, hBigItem, TVI_LAST);m_webTree.SetItemData(hMiddle, 65);/********************/m_prostyle.AddString(_T("欧式"));m_prostyle.AddString(_T("现代简约"));m_prostyle.AddString(_T("田园"));m_prostyle.AddString(_T("美式"));m_prostyle.AddString(_T("其他"));m_prostyle.InsertString(1, _T("中式"));m_prostyle.SetCurSel(0);SetDlgItemText(IDC_EDIT_PRO_STYLE, _T("pro_style"));m_proremark = "不详";m_nodelayerid = "null";m_procorlor = "不详";m_material = "";m_prolinkurl = "";m_proseller = "";m_proisdeleted = "0";m_proupdatetime = "";//time_t t = time(0);//char tmp[64];//strftime(tmp, sizeof(tmp), "%Y-%m-%d %X", localtime(&t));//m_proupdatetime = tmp;m_pronodeid = "null";m_prenodeid = "null";                       //HouseDesign搜索分类的标志m_prozippath = "null";/***********************/m_comboWeb.AddString(_T("床组合"));m_comboWeb.AddString(_T("床"));m_comboWeb.AddString(_T("床头柜"));m_comboWeb.AddString(_T("衣柜"));m_comboWeb.AddString(_T("整体衣柜"));m_comboWeb.AddString(_T("电视柜"));m_comboWeb.AddString(_T("其他"));m_comboWeb.AddString(_T("沙发"));m_comboWeb.AddString(_T("组合沙发"));m_comboWeb.AddString(_T("简易沙发"));m_comboWeb.AddString(_T("茶几"));m_comboWeb.AddString(_T("隔断"));m_comboWeb.AddString(_T("鞋柜"));m_comboWeb.AddString(_T("客厅其他"));m_comboWeb.AddString(_T("餐桌"));m_comboWeb.AddString(_T("餐椅"));m_comboWeb.AddString(_T("酒柜"));m_comboWeb.AddString(_T("书柜"));m_comboWeb.AddString(_T("书桌"));m_comboWeb.AddString(_T("椅子"));m_comboWeb.AddString(_T("橱柜"));m_comboWeb.AddString(_T("小件"));m_comboWeb.AddString(_T("沐浴房"));m_comboWeb.AddString(_T("浴缸"));m_comboWeb.AddString(_T("马桶"));m_comboWeb.AddString(_T("洗漱池"));m_comboWeb.AddString(_T("卫生间其他"));m_comboWeb.AddString(_T("吊灯"));m_comboWeb.AddString(_T("吸顶灯"));m_comboWeb.AddString(_T("台灯"));m_comboWeb.AddString(_T("壁灯"));m_comboWeb.AddString(_T("筒灯"));m_comboWeb.AddString(_T("灯具其他"));m_comboWeb.AddString(_T("吊顶"));m_comboWeb.AddString(_T("壁画"));m_comboWeb.AddString(_T("背景墙"));m_comboWeb.AddString(_T("窗帘"));m_comboWeb.AddString(_T("地毯"));m_comboWeb.AddString(_T("装饰品"));// 默认选择第一项   m_comboWeb.SetCurSel(0);/*********************素材管理模块*/m_materialstyle = "";m_materialdeleted = "0";m_materialsizex = "800";m_materialsizey = "800";return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
}void CMateriaManagementDlg::OnSysCommand(UINT nID, LPARAM lParam)
{if ((nID & 0xFFF0) == IDM_ABOUTBOX){CAboutDlg dlgAbout;dlgAbout.DoModal();}else{CDialogEx::OnSysCommand(nID, lParam);}
}
void CMateriaManagementDlg::OnPaint()
{if (IsIconic()){CPaintDC dc(this); // 用于绘制的设备上下文SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);// 使图标在工作区矩形中居中int cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;// 绘制图标dc.DrawIcon(x, y, m_hIcon);}else{CDialogEx::OnPaint();}
}//当用户拖动最小化窗口时系统调用此函数取得光标
//显示。
HCURSOR CMateriaManagementDlg::OnQueryDragIcon()
{return static_cast<HCURSOR>(m_hIcon);
}
char* CMateriaManagementDlg::U2G(const char* utf8)
{int len = MultiByteToWideChar(CP_UTF8, 0, utf8, -1, NULL, 0);wchar_t* wstr = new wchar_t[len + 1];memset(wstr, 0, len + 1);MultiByteToWideChar(CP_UTF8, 0, utf8, -1, wstr, len);len = WideCharToMultiByte(CP_ACP, 0, wstr, -1, NULL, 0, NULL, NULL);char* str = new char[len + 1];memset(str, 0, len + 1);WideCharToMultiByte(CP_ACP, 0, wstr, -1, str, len, NULL, NULL);if (wstr) delete[] wstr;return str;
}
char* CMateriaManagementDlg::G2U(const char* gb2312)
{int len = MultiByteToWideChar(CP_ACP, 0, gb2312, -1, NULL, 0);wchar_t* wstr = new wchar_t[len + 1];memset(wstr, 0, len + 1);MultiByteToWideChar(CP_ACP, 0, gb2312, -1, wstr, len);len = WideCharToMultiByte(CP_UTF8, 0, wstr, -1, NULL, 0, NULL, NULL);char* str = new char[len + 1];memset(str, 0, len + 1);WideCharToMultiByte(CP_UTF8, 0, wstr, -1, str, len, NULL, NULL);if (wstr) delete[] wstr;return str;
}void CMateriaManagementDlg::OnTvnSelchangedWebTree(NMHDR *pNMHDR, LRESULT *pResult)
{LPNMTREEVIEW pNMTreeView = reinterpret_cast<LPNMTREEVIEW>(pNMHDR);// TODO:  在此添加控件通知处理程序代码*pResult = 0;treeSel; // 树节点的标签文本字符串  \// 获取当前选中节点的句柄   HTREEITEM hItem = m_webTree.GetSelectedItem();// 获取选中节点的标签文本字符串   treeSel = m_webTree.GetItemText(hItem);// 将字符串显示到编辑框中   SetDlgItemText(IDC_ITEM_SEL_EDIT, treeSel);
//  SetDlgItemText(IDC_PRO_NAME, treeSel);sqlite3 *db;int result;char **dbResult;int nRow, nColumn;std::string rtnSql;char *errmsg = NULL;int index;int i, j;const char *tail = NULL;char* csql = NULL;USES_CONVERSION;CString cselect = _T("select pro_id ,preview_image_path from ProductInfo  where pro_name like '") + treeSel + _T("%' order by pro_id");csql = W2A(cselect);char *ll = G2U(csql);std::string strsql = ll;std::string value;sqlSelect sqlselect;CString cstr_DataBasePath = utilDataBaseDir(_T("HouseDesignDB.db"));std::wstring unic_DataBasePath = cstr_DataBasePath.GetString();const char* path = Unicode2Utf8(unic_DataBasePath);db = ConnectDatabase(path);if (db != NULL);{int  counter = 0;selVec.clear();result = sqlite3_get_table(db, strsql.c_str(), &dbResult, &nRow, &nColumn, &errmsg);if (SQLITE_OK == result){index = nColumn;for (i = 0; i < nRow; i++){for (j = 0; j < nColumn; j++){if (counter % 2 == 0){sqlselect.proid = (CString)dbResult[index];}else if (counter % 2 != 0){sqlselect.imagePosition = (CString)dbResult[index];}counter++;++index; // dbResult 的字段值是连续的,从第0索引到第 nColumn - 1索引都是字段名称,从第 nColumn 索引开始,后面都是字段值,它把一个二维的表(传统的行列表示法)用一个扁平的形式来表示}if (sqlselect.imagePosition.GetLength()>20)            {int n = sqlselect.imagePosition.Find(_T("/"));int n_length = sqlselect.imagePosition.Delete(0, n + 1);CString temp = sqlselect.imagePosition.Right(n_length);CString image_path = utilProductDir(_T("File\\") + temp);USES_CONVERSION;std::string path(W2A(image_path));if (_access(path.c_str(), 0) == -1) std::cout << "Path is not exist." << std::endl;elseselVec.push_back(sqlselect);}}if (nRow < 9){showProducts();clearPciture(nRow);}elseshowProducts();sqlite3_free_table(dbResult);//关闭数据库sqlite3_close(db);}}}
void CMateriaManagementDlg::OnStnClickedStaticPng1()
{// TODO:  在此添加控件通知处理程序代码}
void CMateriaManagementDlg::OnStnClickedStaticMaterialText1()
{// TODO:  在此添加控件通知处理程序代码
}void CMateriaManagementDlg::OnStnClickedStaticMaterialText8()
{// TODO:  在此添加控件通知处理程序代码
}
void CMateriaManagementDlg::OnDrawBackGroundColor(CWnd *pWnd)
{CRect rect;if (!pWnd)return;pWnd->GetClientRect(&rect);//rect为控件的大小。CDC *pDc = NULL;pDc = pWnd->GetDC();//获取picture的DC //设置变量,当再次点击读入图片的时候,执行并将框格内用背景颜色刷一遍,达到隐藏的目的。CRect rect1(rect.left + 1, rect.top + 1, rect.Width() - 2, rect.Height() - 2);DWORD dw = GetSysColor(COLOR_BTNFACE);CBrush br(dw);pDc->FillRect(rect1, &br);::SetStretchBltMode(pDc->m_hDC, HALFTONE);::SetBrushOrgEx(pDc->m_hDC, 0, 0, NULL);ReleaseDC(pDc);
}
void CMateriaManagementDlg::OnShowProPreviewImage(const CString strImagePath)
{int pro_index=0;if (strImagePath.IsEmpty())return;CImage image;_TCHAR module_file_name[FILENAME_MAX];GetModuleFileName(NULL, module_file_name, FILENAME_MAX);CString file_path = utilProductDir(strImagePath);/*module_file_name*/;/*file_path = file_path.Left(file_path.ReverseFind(_T('\\')));file_path = file_path.Left(file_path.ReverseFind(_T('\\')));file_path = file_path.Left(file_path.ReverseFind(_T('\\')));file_path += strImagePath;*/CFileFind file_find;if (!file_find.FindFile(file_path))return;//image.Load(file_path);if (!SUCCEEDED(image.Load(file_path))) return;CRect rect;CWnd *pWnd;CDC *pDc = NULL;
}
void CMateriaManagementDlg::OnBnClickedButton1()
{// TODO:  在此添加控件通知处理程序代码
//  int counter = 1;int yusu = 8 % 9;int length = selVec.size();std::vector<sqlSelect>::iterator  iter;if (length <= 9){showLeaveProducts();clearPciture(length);}else if (length > 9){for (int i = 0; i < 9;i++){selVec.erase(selVec.begin());}if (selVec.size() < 9){clearPciture(selVec.size());}showProducts();}CWnd *pWnd;pWnd = GetDlgItem(IDC_STATIC_PNG1);
}
void  CMateriaManagementDlg::showProducts()
{CImage myImage;CRect rect;int itemID;CWnd *pWnd;CDC *pDc = NULL;int veclength = selVec.size();int  flag = 0;int i;for (i = 0; i < veclength; i++){int n = selVec[i].imagePosition.Find(_T("/"));int n_length = selVec[i].imagePosition.Delete(0, n + 1);CString temp = selVec[i].imagePosition.Right(n_length);CString image_path = utilProductDir(_T("File\\") + temp);//if (!SUCCEEDED(myImage.Load(image_path)))//   return;if (!myImage.IsNull())//判断图象是否为空,如果不为空则先释放掉  myImage.Destroy();myImage.Load(image_path);switch (i){case 0:itemID = IDC_STATIC_PNG1;pWnd = GetDlgItem(itemID);//IDC_STATIC_SHOW_PIC为控件IDif (!pWnd)return;OnDrawBackGroundColor(pWnd);//p = (CStatic *)GetDlgItem(IDC_STATIC_PNG1);设置静态控件窗口风格为位图居中显示  //p->ModifyStyle(0xf, SS_BITMAP | SS_CENTERIMAGE);将图片设置到Picture控件上  //p->SetBitmap(myImage)pWnd->GetClientRect(&rect);//rect为控件的大小。pDc = pWnd->GetDC();//获取picture的DCmyImage.Draw(pDc->m_hDC, rect);SetDlgItemText(IDC_STATIC_MATERIAL_TEXT1, _T("ID:")+selVec[i].proid);ReleaseDC(pDc);myImage.Destroy();//    m_cStaticProPic1.SetBitmap(image);break;case 1:itemID = IDC_STATIC_PNG2;pWnd = GetDlgItem(itemID);//IDC_STATIC_SHOW_PIC为控件IDif (!pWnd)return;OnDrawBackGroundColor(pWnd);pWnd->GetClientRect(&rect);//rect为控件的大小。pDc = pWnd->GetDC();//获取picture的DC ::SetStretchBltMode(pDc->m_hDC, HALFTONE);::SetBrushOrgEx(pDc->m_hDC, 0, 0, NULL);myImage.Draw(pDc->m_hDC, rect);SetDlgItemText(IDC_STATIC_MATERIAL_TEXT2, _T("ID:") + selVec[i].proid);ReleaseDC(pDc);myImage.Destroy();break;case 2:itemID = IDC_STATIC_PNG3;pWnd = GetDlgItem(itemID);//IDC_STATIC_SHOW_PIC为控件IDif (!pWnd)return;OnDrawBackGroundColor(pWnd);pWnd->GetClientRect(&rect);//rect为控件的大小。pDc = pWnd->GetDC();//获取picture的DCmyImage.Draw(pDc->m_hDC, rect);SetDlgItemText(IDC_STATIC_MATERIAL_TEXT3, _T("ID:") + selVec[i].proid);ReleaseDC(pDc);myImage.Destroy();break;case 3:itemID = IDC_STATIC_PNG4;pWnd = GetDlgItem(itemID);//IDC_STATIC_SHOW_PIC为控件IDif (!pWnd)return;OnDrawBackGroundColor(pWnd);pWnd->GetClientRect(&rect);//rect为控件的大小。pDc = pWnd->GetDC();//获取picture的DCmyImage.Draw(pDc->m_hDC, rect);SetDlgItemText(IDC_STATIC_MATERIAL_TEXT4, _T("ID:") + selVec[i].proid);ReleaseDC(pDc);myImage.Destroy();break;case 4:itemID = IDC_STATIC_PNG5;pWnd = GetDlgItem(itemID);//IDC_STATIC_SHOW_PIC为控件IDif (!pWnd)return;OnDrawBackGroundColor(pWnd);pWnd->GetClientRect(&rect);//rect为控件的大小。pDc = pWnd->GetDC();//获取picture的DCmyImage.Draw(pDc->m_hDC, rect);SetDlgItemText(IDC_STATIC_MATERIAL_TEXT5, _T("ID:") + selVec[i].proid);ReleaseDC(pDc);myImage.Destroy();break;case 5:itemID = IDC_STATIC_PNG6;pWnd = GetDlgItem(itemID);//IDC_STATIC_SHOW_PIC为控件IDif (!pWnd)return;OnDrawBackGroundColor(pWnd);pWnd->GetClientRect(&rect);//rect为控件的大小。pDc = pWnd->GetDC();//获取picture的DCmyImage.Draw(pDc->m_hDC, rect);SetDlgItemText(IDC_STATIC_MATERIAL_TEXT6, _T("ID:") + selVec[i].proid);ReleaseDC(pDc);myImage.Destroy();break;case 6:itemID = IDC_STATIC_PNG7;pWnd = GetDlgItem(itemID);//IDC_STATIC_SHOW_PIC为控件IDif (!pWnd)return;OnDrawBackGroundColor(pWnd);pWnd->GetClientRect(&rect);//rect为控件的大小。pDc = pWnd->GetDC();//获取picture的DCmyImage.Draw(pDc->m_hDC, rect);SetDlgItemText(IDC_STATIC_MATERIAL_TEXT7, _T("ID:") + selVec[i].proid);ReleaseDC(pDc);myImage.Destroy();break;case 7:itemID = IDC_STATIC_PNG8;pWnd = GetDlgItem(itemID);//IDC_STATIC_SHOW_PIC为控件IDif (!pWnd)return;OnDrawBackGroundColor(pWnd);pWnd->GetClientRect(&rect);//rect为控件的大小。pDc = pWnd->GetDC();//获取picture的DCmyImage.Draw(pDc->m_hDC, rect);SetDlgItemText(IDC_STATIC_MATERIAL_TEXT8, _T("ID:") + selVec[i].proid);ReleaseDC(pDc);myImage.Destroy();break;case 8:itemID = IDC_STATIC_PNG9;pWnd = GetDlgItem(itemID);//IDC_STATIC_SHOW_PIC为控件IDif (!pWnd)return;OnDrawBackGroundColor(pWnd);pWnd->GetClientRect(&rect);//rect为控件的大小。pDc = pWnd->GetDC();//获取picture的DCmyImage.Draw(pDc->m_hDC, rect);SetDlgItemText(IDC_STATIC_MATERIAL_TEXT9, _T("ID:") + selVec[i].proid);ReleaseDC(pDc);myImage.Destroy();break;default:break;}}
}
void  CMateriaManagementDlg::showLeaveProducts()
{CImage myImage;CRect rect;int itemID;CWnd *pWnd;CDC *pDc = NULL;int veclength = selVec.size();int  flag = 0;int i;for (i = 0; i < veclength; i++){int n = selVec[i].imagePosition.Find(_T("/"));int n_length = selVec[i].imagePosition.Delete(0, n + 1);CString temp = selVec[i].imagePosition.Right(n_length);CString image_path = utilProductDir(_T("File\\") + temp);//if (!SUCCEEDED(myImage.Load(image_path)))//   return;if (!myImage.IsNull())//判断图象是否为空,如果不为空则先释放掉  myImage.Destroy();myImage.Load(image_path);switch (i){case 0:itemID = IDC_STATIC_PNG1;pWnd = GetDlgItem(itemID);//IDC_STATIC_SHOW_PIC为控件IDif (!pWnd)return;OnDrawBackGroundColor(pWnd);pWnd->GetClientRect(&rect);//rect为控件的大小。pDc = pWnd->GetDC();//获取picture的DCmyImage.Draw(pDc->m_hDC, rect);SetDlgItemText(IDC_STATIC_MATERIAL_TEXT1, _T("ID:") + selVec[i].proid);ReleaseDC(pDc);myImage.Destroy();//    m_cStaticProPic1.SetBitmap(image);break;case 1:itemID = IDC_STATIC_PNG2;pWnd = GetDlgItem(itemID);//IDC_STATIC_SHOW_PIC为控件IDif (!pWnd)return;OnDrawBackGroundColor(pWnd);pWnd->GetClientRect(&rect);//rect为控件的大小。pDc = pWnd->GetDC();//获取picture的DC ::SetStretchBltMode(pDc->m_hDC, HALFTONE);::SetBrushOrgEx(pDc->m_hDC, 0, 0, NULL);myImage.Draw(pDc->m_hDC, rect);SetDlgItemText(IDC_STATIC_MATERIAL_TEXT2, _T("ID:") + selVec[i].proid);ReleaseDC(pDc);myImage.Destroy();break;case 2:itemID = IDC_STATIC_PNG3;pWnd = GetDlgItem(itemID);//IDC_STATIC_SHOW_PIC为控件IDif (!pWnd)return;OnDrawBackGroundColor(pWnd);pWnd->GetClientRect(&rect);//rect为控件的大小。pDc = pWnd->GetDC();//获取picture的DCmyImage.Draw(pDc->m_hDC, rect);SetDlgItemText(IDC_STATIC_MATERIAL_TEXT3, _T("ID:") + selVec[i].proid);ReleaseDC(pDc);myImage.Destroy();break;case 3:itemID = IDC_STATIC_PNG4;pWnd = GetDlgItem(itemID);//IDC_STATIC_SHOW_PIC为控件IDif (!pWnd)return;OnDrawBackGroundColor(pWnd);pWnd->GetClientRect(&rect);//rect为控件的大小。pDc = pWnd->GetDC();//获取picture的DCmyImage.Draw(pDc->m_hDC, rect);SetDlgItemText(IDC_STATIC_MATERIAL_TEXT4, _T("ID:") + selVec[i].proid);ReleaseDC(pDc);myImage.Destroy();break;case 4:itemID = IDC_STATIC_PNG5;pWnd = GetDlgItem(itemID);//IDC_STATIC_SHOW_PIC为控件IDif (!pWnd)return;OnDrawBackGroundColor(pWnd);pWnd->GetClientRect(&rect);//rect为控件的大小。pDc = pWnd->GetDC();//获取picture的DCmyImage.Draw(pDc->m_hDC, rect);SetDlgItemText(IDC_STATIC_MATERIAL_TEXT5, _T("ID:") + selVec[i].proid);ReleaseDC(pDc);myImage.Destroy();break;case 5:itemID = IDC_STATIC_PNG6;pWnd = GetDlgItem(itemID);//IDC_STATIC_SHOW_PIC为控件IDif (!pWnd)return;OnDrawBackGroundColor(pWnd);pWnd->GetClientRect(&rect);//rect为控件的大小。pDc = pWnd->GetDC();//获取picture的DCmyImage.Draw(pDc->m_hDC, rect);SetDlgItemText(IDC_STATIC_MATERIAL_TEXT6, _T("ID:") + selVec[i].proid);ReleaseDC(pDc);myImage.Destroy();break;case 6:itemID = IDC_STATIC_PNG7;pWnd = GetDlgItem(itemID);//IDC_STATIC_SHOW_PIC为控件IDif (!pWnd)return;OnDrawBackGroundColor(pWnd);pWnd->GetClientRect(&rect);//rect为控件的大小。pDc = pWnd->GetDC();//获取picture的DCmyImage.Draw(pDc->m_hDC, rect);SetDlgItemText(IDC_STATIC_MATERIAL_TEXT7, _T("ID:") + selVec[i].proid);ReleaseDC(pDc);myImage.Destroy();break;case 7:itemID = IDC_STATIC_PNG8;pWnd = GetDlgItem(itemID);//IDC_STATIC_SHOW_PIC为控件IDif (!pWnd)return;OnDrawBackGroundColor(pWnd);pWnd->GetClientRect(&rect);//rect为控件的大小。pDc = pWnd->GetDC();//获取picture的DCmyImage.Draw(pDc->m_hDC, rect);SetDlgItemText(IDC_STATIC_MATERIAL_TEXT8, _T("ID:") + selVec[i].proid);ReleaseDC(pDc);myImage.Destroy();break;case 8:itemID = IDC_STATIC_PNG9;pWnd = GetDlgItem(itemID);//IDC_STATIC_SHOW_PIC为控件IDif (!pWnd)return;OnDrawBackGroundColor(pWnd);pWnd->GetClientRect(&rect);//rect为控件的大小。pDc = pWnd->GetDC();//获取picture的DCmyImage.Draw(pDc->m_hDC, rect);SetDlgItemText(IDC_STATIC_MATERIAL_TEXT9, _T("ID:") + selVec[i].proid);ReleaseDC(pDc);myImage.Destroy();break;default:break;}}
}
void  CMateriaManagementDlg::clearPciture(int clearNum)
{int itemID;CWnd *pWnd;for (int i = 0; i <= 9-clearNum; i++){switch (9 - i){case 0:itemID = IDC_STATIC_PNG1;pWnd = GetDlgItem(itemID);//IDC_STATIC_SHOW_PIC为控件IDif (!pWnd)return;OnDrawBackGroundColor(pWnd);SetDlgItemText(IDC_STATIC_MATERIAL_TEXT1, _T(" "));break;case 1:itemID = IDC_STATIC_PNG2;pWnd = GetDlgItem(itemID);//IDC_STATIC_SHOW_PIC为控件IDif (!pWnd)return;OnDrawBackGroundColor(pWnd);SetDlgItemText(IDC_STATIC_MATERIAL_TEXT2, _T(" "));break;case 2:itemID = IDC_STATIC_PNG3;pWnd = GetDlgItem(itemID);//IDC_STATIC_SHOW_PIC为控件IDif (!pWnd)return;OnDrawBackGroundColor(pWnd);SetDlgItemText(IDC_STATIC_MATERIAL_TEXT3, _T(" "));break;case 3:itemID = IDC_STATIC_PNG4;pWnd = GetDlgItem(itemID);//IDC_STATIC_SHOW_PIC为控件IDif (!pWnd)return;OnDrawBackGroundColor(pWnd);SetDlgItemText(IDC_STATIC_MATERIAL_TEXT4, _T(" "));break;case 4:itemID = IDC_STATIC_PNG5;pWnd = GetDlgItem(itemID);//IDC_STATIC_SHOW_PIC为控件IDif (!pWnd)return;OnDrawBackGroundColor(pWnd);SetDlgItemText(IDC_STATIC_MATERIAL_TEXT5, _T(" "));break;case 5:itemID = IDC_STATIC_PNG6;pWnd = GetDlgItem(itemID);//IDC_STATIC_SHOW_PIC为控件IDif (!pWnd)return;OnDrawBackGroundColor(pWnd);SetDlgItemText(IDC_STATIC_MATERIAL_TEXT6, _T(" "));break;case 6:itemID = IDC_STATIC_PNG7;pWnd = GetDlgItem(itemID);//IDC_STATIC_SHOW_PIC为控件IDif (!pWnd)return;OnDrawBackGroundColor(pWnd);SetDlgItemText(IDC_STATIC_MATERIAL_TEXT7, _T(" ") );break;case 7:itemID = IDC_STATIC_PNG8;pWnd = GetDlgItem(itemID);//IDC_STATIC_SHOW_PIC为控件IDif (!pWnd)return;OnDrawBackGroundColor(pWnd);SetDlgItemText(IDC_STATIC_MATERIAL_TEXT8, _T(" "));break;case 8:itemID = IDC_STATIC_PNG9;pWnd = GetDlgItem(itemID);//IDC_STATIC_SHOW_PIC为控件IDif (!pWnd)return;OnDrawBackGroundColor(pWnd);SetDlgItemText(IDC_STATIC_MATERIAL_TEXT9, _T(" "));break;default:break;}}
}
void CMateriaManagementDlg::OnBnClickedButton2()
{// TODO:  在此添加控件通知处理程序代码CString str;GetDlgItem(IDC_STATIC_MATERIAL_TEXT1)->GetWindowText(str);int n = str.Find(_T(":"));int n_length = str.Delete(0, n + 1);CString id = str.Right(n_length);deleteMaterial(str);if (DirDelete(str)==true)AfxMessageBox(_T("删除成功!"));elseAfxMessageBox(_T("删除失败!"));
}
void CMateriaManagementDlg::OnBnClickedButton3()
{// TODO:  在此添加控件通知处理程序代码CString str;GetDlgItem(IDC_STATIC_MATERIAL_TEXT2)->GetWindowText(str);int n = str.Find(_T(":"));int n_length = str.Delete(0, n + 1);CString id = str.Right(n_length);deleteMaterial(str);deleteMaterial(str);if (DirDelete(str) == true)AfxMessageBox(_T("删除成功!"));elseAfxMessageBox(_T("删除失败!"));
}void CMateriaManagementDlg::OnBnClickedButton4()
{// TODO:  在此添加控件通知处理程序代码CString str;GetDlgItem(IDC_STATIC_MATERIAL_TEXT3)->GetWindowText(str);int n = str.Find(_T(":"));int n_length = str.Delete(0, n + 1);CString id = str.Right(n_length);deleteMaterial(str);deleteMaterial(str);if (DirDelete(str) == true)AfxMessageBox(_T("删除成功!"));elseAfxMessageBox(_T("删除失败!"));
}void CMateriaManagementDlg::OnBnClickedButton5()
{// TODO:  在此添加控件通知处理程序代码CString str;GetDlgItem(IDC_STATIC_MATERIAL_TEXT4)->GetWindowText(str);int n = str.Find(_T(":"));int n_length = str.Delete(0, n + 1);CString id = str.Right(n_length);deleteMaterial(str);deleteMaterial(str);if (DirDelete(str) == true)AfxMessageBox(_T("删除成功!"));elseAfxMessageBox(_T("删除失败!"));
}void CMateriaManagementDlg::OnBnClickedButton6()
{// TODO:  在此添加控件通知处理程序代码CString str;GetDlgItem(IDC_STATIC_MATERIAL_TEXT5)->GetWindowText(str);int n = str.Find(_T(":"));int n_length = str.Delete(0, n + 1);CString id = str.Right(n_length);deleteMaterial(str);deleteMaterial(str);if (DirDelete(str) == true)AfxMessageBox(_T("删除成功!"));elseAfxMessageBox(_T("删除失败!"));
}void CMateriaManagementDlg::OnBnClickedButton7()
{// TODO:  在此添加控件通知处理程序代码CString str;GetDlgItem(IDC_STATIC_MATERIAL_TEXT6)->GetWindowText(str);int n = str.Find(_T(":"));int n_length = str.Delete(0, n + 1);CString id = str.Right(n_length);deleteMaterial(str);deleteMaterial(str);if (DirDelete(str) == true)AfxMessageBox(_T("删除成功!"));elseAfxMessageBox(_T("删除失败!"));
}void CMateriaManagementDlg::OnBnClickedButton8()
{// TODO:  在此添加控件通知处理程序代码CString str;GetDlgItem(IDC_STATIC_MATERIAL_TEXT7)->GetWindowText(str);int n = str.Find(_T(":"));int n_length = str.Delete(0, n + 1);CString id = str.Right(n_length);deleteMaterial(str);deleteMaterial(str);if (DirDelete(str) == true)AfxMessageBox(_T("删除成功!"));elseAfxMessageBox(_T("删除失败!"));
}void CMateriaManagementDlg::OnBnClickedButton9()
{// TODO:  在此添加控件通知处理程序代码CString str;GetDlgItem(IDC_STATIC_MATERIAL_TEXT8)->GetWindowText(str);int n = str.Find(_T(":"));int n_length = str.Delete(0, n + 1);CString id = str.Right(n_length);deleteMaterial(str);deleteMaterial(str);if (DirDelete(str) == true)AfxMessageBox(_T("删除成功!"));elseAfxMessageBox(_T("删除失败!"));
}void CMateriaManagementDlg::OnBnClickedButton10()
{CString str;GetDlgItem(IDC_STATIC_MATERIAL_TEXT9)->GetWindowText(str);int n = str.Find(_T(":"));int n_length = str.Delete(0, n + 1);CString id = str.Right(n_length);deleteMaterial(str);deleteMaterial(str);if (DirDelete(str) == true)AfxMessageBox(_T("删除成功!"));elseAfxMessageBox(_T("删除失败!"));// TODO:  在此添加控件通知处理程序代码
}
void CMateriaManagementDlg::deleteMaterial(CString &id)
{sqlite3 *db;int result;char *errmsg = NULL;CString deleteSql = _T("delete from ProductInfo where pro_id=") + id;std::wstring wsdeleteSql = deleteSql.GetString();char* sql = Unicode2Utf8(wsdeleteSql);CString cstr_DataBasePath = utilDataBaseDir(_T("HouseDesignDB.db"));std::wstring unic_DataBasePath = cstr_DataBasePath.GetString();const char* path = Unicode2Utf8(unic_DataBasePath);db = ConnectDatabase(path);if (db != NULL){result = sqlite3_exec(db, sql, 0, 0, &errmsg);deletedLoad();}sqlite3_close(db);
}
void CMateriaManagementDlg::deletedLoad()
{selVec.clear();                                    //清空vec里面的内容重新加载int rc;sqlite3 *db;int result;char **dbResult;int nRow, nColumn;std::string rtnSql;char *errmsg = NULL;int index;int i, j;const char *tail = NULL;char* csql = NULL;USES_CONVERSION;CString cselect = _T("select pro_id ,preview_image_path from ProductInfo  where pro_name like '") + treeSel + _T("%' order by pro_id");/*) + strText + _T("%' order by preview_image_path");*/csql = W2A(cselect);char *ll = G2U(csql);std::string strsql = ll;std::string value;sqlSelect sqlselect;// std::string select = W2CA((LPCWSTR)strText);// std::string  select = (std::string)strText;//  std::string sql = "select * from ProductInfo where pro_name like 'a%'"; //"select * from ProductInfo where pro_name like '茶几%' order by preview_image_path";CString cstr_DataBasePath = utilDataBaseDir(_T("HouseDesignDB.db"));std::wstring unic_DataBasePath = cstr_DataBasePath.GetString();char* path = Unicode2Utf8(unic_DataBasePath);//    const char* path = "D://Project//HouseDesign//data//database//HouseDesignDB.db";rc = sqlite3_open(path, &db);int  counter = 0;selVec.clear();if (rc == SQLITE_OK){// result = sqlite3_exec(db, csql, 0, 0, 0);result = sqlite3_get_table(db, strsql.c_str(), &dbResult, &nRow, &nColumn, &errmsg);if (SQLITE_OK == result){index = nColumn;for (i = 0; i < nRow; i++){for (j = 0; j < nColumn; j++){if (counter % 2 == 0){sqlselect.proid = (CString)dbResult[index];}else if (counter % 2 != 0){sqlselect.imagePosition = (CString)dbResult[index];}counter++;++index; // dbResult 的字段值是连续的,从第0索引到第 nColumn - 1索引都是字段名称,从第 nColumn 索引开始,后面都是字段值,它把一个二维的表(传统的行列表示法)用一个扁平的形式来表示}selVec.push_back(sqlselect);}}if (nRow < 9){showProducts();clearPciture(nRow);}elseshowProducts();sqlite3_free_table(dbResult);//关闭数据库sqlite3_close(db);}
}
void CMateriaManagementDlg::OnStnClickedStaticMaterialText3()
{// TODO:  在此添加控件通知处理程序代码
}
sqlite3* CMateriaManagementDlg::ConnectDatabase(const char* path)
{sqlite3 *db;int rc;rc = sqlite3_open(path, &db);if (rc == SQLITE_OK){return db;}elsereturn NULL;
}
void CMateriaManagementDlg::OnEnChangeItemSelEdit()
{// TODO:  如果该控件是 RICHEDIT 控件,它将不// 发送此通知,除非重写 CDialogEx::OnInitDialog()// 函数并调用 CRichEditCtrl().SetEventMask(),// 同时将 ENM_CHANGE 标志“或”运算到掩码中。// TODO:  在此添加控件通知处理程序代码
}void CMateriaManagementDlg::OnBnClickedButton11()
{// TODO:  在此添加控件通知处理程序代码char *errMsg;int rc;sqlite3 *db;int result;char **dbResult;int nRow, nColumn;std::string rtnSql;char *errmsg = NULL;int i, j;int index;CString maxid;std::string maxProid = "select MAX(pro_id) from ProductInfo";
//  std::string insertSql = "insert into ProductInfo values (101,'ww',26,26,26,'ww','ww','ww','ww',26,'ww','ww','ww','ww','ww','ww','ww',26,'2016-04-14 22:47:19.000')";// _RecordsetPtr m_pRecordset;CString cstr_DataBasePath = utilDataBaseDir(_T("HouseDesignDB.db"));std::wstring unic_DataBasePath = cstr_DataBasePath.GetString();const char* path = Unicode2Utf8(unic_DataBasePath);rc = sqlite3_open(path, &db);if (rc == SQLITE_OK){const char* select = "select * from ProductInfo";//   MessageBox(NULL, _T("打开数据库成功!"), _T("消息"), MB_OK | MB_ICONWARNING);/****************************************************************///  rc = sqlite3_exec(db, insertSql.c_str(), NULL, NULL, &errMsg);            //插入一条数据;/****************************************************************///    rc = sqlite3_exec(db, maxProid.c_str(), NULL, NULL, &errMsg);/****************************************************************/result = sqlite3_get_table(db, maxProid.c_str(), &dbResult, &nRow, &nColumn, &errmsg);if (SQLITE_OK == result){index = nColumn;printf("查到%d条记录\n", nRow);for (i = 0; i < nRow; i++){printf("第 %d 条记录\n", i + 1);for (j = 0; j < nColumn; j++){printf("字段名:%s> 字段值:%s\n", dbResult[j], dbResult[index]);maxid = dbResult[index];int temp = _ttoi(maxid) + 1;m_proid.Format(_T("%d"), temp);SetDlgItemText(IDC_PRO_ID, m_proid);                                //显示插入的pro_id++index; // dbResult 的字段值是连续的,从第0索引到第 nColumn - 1索引都是字段名称,从第 nColumn 索引开始,后面都是字段值,它把一个二维的表(传统的行列表示法)用一个扁平的形式来表示}printf("-------\n");}}/****************************************************************///if (rc != SQLITE_OK)//{//    printf("创建表失败,错误码:%d,错误原因:%sn", rc, errMsg);//  MessageBox(NULL, _T("创建表user失败!"), _T("错误"), MB_ICONWARNING);//}//rc = sqlite3_exec(db, "insert into user values('123','测试')", NULL, NULL, &errMsg);//if (rc != SQLITE_OK)//{// MessageBox(NULL, _T("插入数据失败!"), _T("错误"), MB_ICONWARNING);//}// rc = sqlite3_exec(db, "select * from user", showTableInfo, NULL, &errMsg);//if (rc != SQLITE_OK)//{//   MessageBox(NULL, _T("查询失败!"), _T("错误"), MB_ICONWARNING);//}//到这里,不论数据库查询是否成功,都释放 char** 查询结果,使用 sqlite 提供的功能来释放sqlite3_free_table(dbResult);//关闭数据库sqlite3_close(db);}
}void CMateriaManagementDlg::OnCbnSelchangeCombo1()
{// TODO:  在此添加控件通知处理程序代码CString temp;int nsel;// 获取组合框控件的列表框中选中项的索引   nsel = m_prostyle.GetCurSel();// 根据选中项索引获取该项字符串   m_prostyle.GetLBText(nsel, temp);m_style = temp;// 将组合框中选中的字符串显示到IDC_SEL_WEB_EDIT编辑框中   SetDlgItemText(IDC_COMBO1, temp);
}
void CMateriaManagementDlg::OnBnClickedButton12()
{// TODO:  在此添加控件通知处理程序代码time_t t = time(0);char tmp[64];strftime(tmp, sizeof(tmp), "%Y-%m-%d %X", localtime(&t));m_proupdatetime = tmp;using namespace std;char *errMsg;int rc;sqlite3 *db;GetDlgItem(IDC_PRO_NAME)->GetWindowText(m_proname);GetDlgItem(IDC_PRICE)->GetWindowText(m_proprice);USES_CONVERSION;string proid(W2A(m_proid));string proname(W2A(m_proname));string pronodeid(W2A(m_pronodeid));string prenodeid(W2A(m_prenodeid));string nodelayerid(W2A(m_nodelayerid));string procorlor(W2A(m_procorlor));string material(W2A(m_material));string style(W2A(m_style));string proremark(W2A(m_proremark));string proprice(W2A(m_proprice));string pronumber(W2A(m_pronumber));string prolinkurl(W2A(m_prolinkurl));string proseller(W2A(m_proseller));string topimageview(W2A(m_topimageview));string preimageview(W2A(m_preimageview));string prozippath(W2A(m_prozippath));string proobjpath(W2A(m_proobjpath));string proisdeleted(W2A(m_proisdeleted));string proupdatetime(W2A(m_proupdatetime));//time_t t = time(0);                                                                           //获取本地时间命名图片 确保唯一性//char tmp[64];//strftime(tmp, sizeof(tmp), "%Y-%m-%d %X", localtime(&t));//m_proupdatetime = tmp;//std::string time = tmp;//Format(_T("%s"), a);//m_proupdatetime = (CString)time.c_str();m_proupdatetime.Format("yyyy-mm-dd 00:00:00.000");std::string insertSql = "insert into ProductInfo values (" + proid + ",'" + proname + "'," + pronodeid + "," + prenodeid + "," + nodelayerid + ",'" + procorlor + "','" + material + "','" +style + "','" + proremark + "'," + proprice + ",'" + pronumber + "','" + prolinkurl + "','" + proseller + "','" + topimageview + "','" + preimageview + "','" + prozippath + "','" + proobjpath + "'," + proisdeleted + ",'" + proupdatetime + "')";// _RecordsetPtr m_pRecordset;wchar_t* changeInsert = StringTWchar(insertSql);char *rtnSql = AnsiToUTF_8(changeInsert);CString cstr_DataBasePath = utilDataBaseDir(_T("HouseDesignDB.db"));std::wstring unic_DataBasePath = cstr_DataBasePath.GetString();const char* path = Unicode2Utf8(unic_DataBasePath);rc = sqlite3_open(path, &db);if (rc == SQLITE_OK){//    MessageBox(NULL, _T("打开数据库成功!"), _T("消息"), MB_OK | MB_ICONWARNING);/****************************************************************/rc = sqlite3_exec(db, rtnSql, NULL, NULL, &errMsg);            //插入一条数据;if (rc == SQLITE_OK){AfxMessageBox(_T("添加成功!"));//  m_pronumber = _T("");SetDlgItemText(IDC_PRO_ID,_T(""));SetDlgItemText(IDC_PRO_NAME, _T(""));SetDlgItemText(IDC_PRICE, _T(""));SetDlgItemText(IDC_EDIT1, _T(""));SetDlgItemText(IDC_EDIT2, _T(""));SetDlgItemText(IDC_EDIT3, _T(""));SetDlgItemText(IDC_EDIT_OBJ, _T(""));}else AfxMessageBox(_T("添加失败!"));}//关闭数据库sqlite3_close(db);
}
void CMateriaManagementDlg::OnEnChangeProName()
{// TODO:  如果该控件是 RICHEDIT 控件,它将不// 发送此通知,除非重写 CDialogEx::OnInitDialog()// 函数并调用 CRichEditCtrl().SetEventMask(),// 同时将 ENM_CHANGE 标志“或”运算到掩码中。// TODO:  在此添加控件通知处理程序代码
}void CMateriaManagementDlg::OnEnChangeEdit3()
{// TODO:  如果该控件是 RICHEDIT 控件,它将不// 发送此通知,除非重写 CDialogEx::OnInitDialog()// 函数并调用 CRichEditCtrl().SetEventMask(),// 同时将 ENM_CHANGE 标志“或”运算到掩码中。// TODO:  在此添加控件通知处理程序代码
}void CMateriaManagementDlg::OnTvnSelchangedMfcshelltree1(NMHDR *pNMHDR, LRESULT *pResult)
{LPNMTREEVIEW pNMTreeView = reinterpret_cast<LPNMTREEVIEW>(pNMHDR);// TODO:  在此添加控件通知处理程序代码*pResult = 0;CString strText; // 树节点的标签文本字符串  CString fileText;CString totalText, temp, temp1, temp2;CString topViewPng;CString PrePng;CString name;temp = L".obj";int counter_image = 0;CString kinds;std::vector<const std::string> vec_files;m_tree.GetItemPath(strText, pNMTreeView->itemNew.hItem);// 获取当前选中节点的句柄   HTREEITEM hItem = m_tree.GetSelectedItem();// 获取选中节点的标签文本字符串   fileText = m_tree.GetItemText(hItem);// 将字符串显示到编辑框中  time_t t = time(0);                                                                         //获取本地时间命名图片 确保唯一性char tmp[64];strftime(tmp, sizeof(tmp), "%Y-%m-%d-%H-%M-%S", localtime(&t));char tmp1[64];strftime(tmp1, sizeof(tmp1), "%Y%m%d", localtime(&t));char tmp2[64];strftime(tmp2, sizeof(tmp2), "%Y-%m-%d %X", localtime(&t));m_updatetime = tmp2;m_proupdatetime = tmp;std::string time = tmp;//Format(_T("%s"), a);std::string time1 = tmp1;int size_time1 = time1.length();time1 = time1.substr(2, size_time1);CString ctime = (CString)time.c_str();CString ctime1 = (CString)time1.c_str();int n = fileText.Find(_T("p.png"));if (n != -1){PrePng =  ctime + _T(".png");CString image_path = utilProductDir(_T("File\\") + PrePng);m_preimageview = _T("File/") + PrePng;SetDlgItemText(IDC_EDIT3, m_preimageview);USES_CONVERSION;std::string oldImage(W2A(fullPath+_T("\\")+fileText));std::string newImage = (W2A(image_path));                //"C:\\Users\\Administrator\\Desktop\\2.PNG";int result = rename(oldImage.c_str(), newImage.c_str());if (result == 0)AfxMessageBox(_T("拷贝成功!"));elseAfxMessageBox(_T("拷贝失败!"));}int n1 = fileText.Find(_T("t.png"));if (n1 != -1){topViewPng =  ctime + _T(".png");CString image_path = utilProductDir(_T("File\\") + topViewPng);m_topimageview = _T("File/") + topViewPng;SetDlgItemText(IDC_EDIT2, m_topimageview);USES_CONVERSION;std::string oldImage(W2A(fullPath + _T("\\") + fileText));std::string newImage = (W2A(image_path));                //"C:\\Users\\Administrator\\Desktop\\2.PNG";int result = rename(oldImage.c_str(), newImage.c_str());if (result == 0)AfxMessageBox(_T("拷贝成功!"));elseAfxMessageBox(_T("拷贝失败!"));}int n2 = fileText.Find(_T(".obj"));if (n2 != -1){int n = fileText.Find(_T("."));//  int n_length = fileText.Delete(0, n);CString proNum = fileText.Left(n);SetDlgItemText(IDC_EDIT1, proNum);GetDlgItem(IDC_PRO_NAME)->GetWindowText(m_proname);topViewPng = _T("product/") + m_proid + _T("/") + fileText;m_proobjpath = topViewPng;SetDlgItemText(IDC_EDIT_OBJ, m_proobjpath);}if (strText != "" || fileText == "计算机"){totalText = strText;fullPath = totalText;int n = -1;SetDlgItemText(IDC_EDIT_OBJ, totalText);USES_CONVERSION;const std::string path(W2A(totalText));if ((n = path.find("壁纸")) != std::string::npos){kinds = _T("pap");AfxMessageBox(_T("选择了壁纸文件夹"));CString csql = _T("select node_id from MaterialTreeInfo where node_name='壁纸'");std::string Sql = Convert(csql);m_materialnodeid = SelectTable(Sql);}else if (( n = path.find("布料")) != std::string::npos){kinds = _T("col");AfxMessageBox(_T("选择了布料文件夹"));CString csql = _T("select node_id from MaterialTreeInfo where node_name='布料'");std::string Sql = Convert(csql);m_materialnodeid = SelectTable(Sql);}else if ((n = path.find("地板")) != std::string::npos){kinds = _T("flo");AfxMessageBox(_T("选择了布料文件夹"));CString csql = _T("select node_id from MaterialTreeInfo where node_name='地板'");std::string Sql = Convert(csql);m_materialnodeid = SelectTable(Sql);}else if ((n = path.find("地毯")) != std::string::npos){kinds = _T("car");AfxMessageBox(_T("选择了布料文件夹"));CString csql = _T("select node_id from MaterialTreeInfo where node_name='地毯'");std::string Sql = Convert(csql);m_materialnodeid = SelectTable(Sql);}else if ((n = path.find("其他")) != std::string::npos){kinds = _T("oth");AfxMessageBox(_T("选择了其他文件夹"));CString csql = _T("select node_id from MaterialTreeInfo where node_name='其他'");std::string Sql = Convert(csql);m_materialnodeid = SelectTable(Sql);}else if ((n = path.find("地砖")) != std::string::npos){kinds = _T("flo");AfxMessageBox(_T("选择了地砖文件夹"));CString csql = _T("select node_id from MaterialTreeInfo where node_name='地砖'");std::string Sql = Convert(csql);m_materialnodeid = SelectTable(Sql);}else if ((n = path.find("墙裙")) != std::string::npos){kinds = _T("dod");AfxMessageBox(_T("选择了墙裙文件夹"));CString csql = _T("select node_id from MaterialTreeInfo where node_name='墙裙'");std::string Sql = Convert(csql);m_materialnodeid = SelectTable(Sql);}else if ((n = path.find("厨卫吊顶")) != std::string::npos){kinds = _T("cei");AfxMessageBox(_T("选择了厨卫吊顶文件夹"));CString csql = _T("select node_id from MaterialTreeInfo where node_name='厨卫吊顶'");std::string Sql = Convert(csql);m_materialnodeid = SelectTable(Sql);}else if ((n = path.find("门")) != std::string::npos){kinds = _T("doo");AfxMessageBox(_T("选择了门文件夹"));CString csql = _T("select node_id from MaterialTreeInfo where node_name='门'");std::string Sql = Convert(csql);m_materialnodeid = SelectTable(Sql);}else if ((n = path.find("窗")) != std::string::npos){kinds = _T("win");AfxMessageBox(_T("选择了窗文件夹"));CString csql = _T("select node_id from MaterialTreeInfo where node_name='窗'");std::string Sql = Convert(csql);m_materialnodeid = SelectTable(Sql);}if (n != -1){vec_files = RecureDir(path);if (vec_files.size() == 0){AfxMessageBox(_T("该文件夹没有文件,请重新选择!"));return;}std::vector<const std::string>::iterator vec_iter;for (vec_iter = vec_files.begin(); vec_iter != vec_files.end(); vec_iter++){CString imagepath_new;counter_image++;std::string num;if (counter_image < 10){num = "0" + boost::lexical_cast<std::string>(0 + counter_image);}else{num = boost::lexical_cast<std::string>(counter_image);}CString cnum = (CString)num.c_str();CString company_code;GetDlgItem(IDC_MATERIAL_PRICE)->GetWindowText(m_materialprice);GetDlgItem(IDC_COMPANY_CODE)->GetWindowText(company_code);if (company_code == _T("")){AfxMessageBox(_T("请输入公司代码,请重新选择所要添加的素材文件夹"));return;}if (m_materialprice == _T("")){AfxMessageBox(_T("请输入素材价格"));return;}//  std::string file_path = *vec_iter;boost::filesystem::path ps(*vec_iter);CString postfix = (CString)ps.extension().string().c_str();   //图片后缀名std::string filename = ps.filename().string();              //有后缀文件名std::string filename_nopostfix = ps.stem().string();       //无后缀文件名CString imagename_new = ctime + _T("-") +cnum + postfix;m_materialimagepath = _T("material/") + imagename_new;m_materialname = company_code + kinds + ctime1 + cnum;;CString image_path = utilDataDir(_T("material\\") + imagename_new);USES_CONVERSION;std::string oldImage(ps.string());std::string newImage = (W2A(image_path));                //"C:\\Users\\Administrator\\Desktop\\2.PNG";int result = rename(oldImage.c_str(), newImage.c_str());if (result == 0){SetDlgItemText(IDC_COPY_STATUS, _T("拷贝ING!"));std::string maxProid = "select MAX(material_id) from MaterialInfo";m_materialid = SelectTable(maxProid);InsertMatrialInfo();}elseAfxMessageBox(_T("拷贝失败!"));}SetDlgItemText(IDC_COPY_STATUS, _T("拷贝成功!"));}}else{int length = fileText.GetLength();if (int flag = fileText.Find(temp) ){if (flag < 0){return;}else{int n = fileText.Find(_T("."));CString temp = fileText.Left(n);if (temp == m_pronumber)return;elsem_pronumber = temp;/*for (int i = 0; i < length; i++){if (fileText[i] != (CString)"." ){m_pronumber += fileText[i];}else if (fileText[i] == (CString)".")return;}*/}}}/************************************************************/
;// SetDlgItemText(IDC_EDIT3, fileText);
}void CMateriaManagementDlg::OnEnChangeEditObj()
{// TODO:  如果该控件是 RICHEDIT 控件,它将不// 发送此通知,除非重写 CDialogEx::OnInitDialog()// 函数并调用 CRichEditCtrl().SetEventMask(),// 同时将 ENM_CHANGE 标志“或”运算到掩码中。// TODO:  在此添加控件通知处理程序代码
}void CMateriaManagementDlg::OnEnChangeEdit2()
{// TODO:  如果该控件是 RICHEDIT 控件,它将不// 发送此通知,除非重写 CDialogEx::OnInitDialog()// 函数并调用 CRichEditCtrl().SetEventMask(),// 同时将 ENM_CHANGE 标志“或”运算到掩码中。// TODO:  在此添加控件通知处理程序代码
}void CMateriaManagementDlg::OnCbnSelchangeCombo2()
{// TODO:  在此添加控件通知处理程序代码CString strWeb;int nSel;// 获取组合框控件的列表框中选中项的索引   nSel = m_comboWeb.GetCurSel();// 根据选中项索引获取该项字符串   m_comboWeb.GetLBText(nSel, strWeb);// 将组合框中选中的字符串显示到IDC_SEL_WEB_EDIT编辑框中 m_proname = strWeb;SetDlgItemText(IDC_PRO_NAME, strWeb);CString selNodeId = _T("select node_id from ProductTreeInfo where node_name like '") + m_proname + "'";USES_CONVERSION;std::string strSel = W2A(selNodeId);char *ll = G2U(strSel.c_str());std::string strsql = ll;CString rtn = Query(strsql);if (rtn == ""){m_prenodeid = "";}else{m_prenodeid = rtn;}}
using namespace boost::filesystem;
using namespace std;
std::vector<const std::string> CMateriaManagementDlg::RecureDir(const std::string &full_path)
{std::vector<const std::string> vector_files;if (full_path != ""){directory_iterator end;int files_num = 0;for (directory_iterator pos(full_path); pos != end; ++pos){boost::filesystem::path path_(*pos);if (is_regular(path_)){string s = path_.string();vector_files.push_back(s);files_num++;}else if (is_directory(path_)){RecureDir(path_.string());}}}return vector_files;
}
CString  CMateriaManagementDlg::SelectTable(const std::string &selMaxID)
{int rc;sqlite3 *db;int result;char **dbResult;int nRow, nColumn;char *errmsg = NULL;int index;int i;int j;CString maxid;CString cstr_DataBasePath = utilDataBaseDir(_T("HouseDesignDB.db"));std::wstring unic_DataBasePath = cstr_DataBasePath.GetString();char* databasepath = Unicode2Utf8(unic_DataBasePath);rc = sqlite3_open(databasepath, &db);if (rc == SQLITE_OK){result = sqlite3_get_table(db, selMaxID.c_str(), &dbResult, &nRow, &nColumn, &errmsg);if (SQLITE_OK == result){index = nColumn;printf("查到%d条记录\n", nRow);for (i = 0; i < nRow; i++){printf("第 %d 条记录\n", i + 1);for (j = 0; j < nColumn; j++){printf("字段名:%s> 字段值:%s\n", dbResult[j], dbResult[index]);maxid = dbResult[index];int temp = _ttoi(maxid) + 1;m_materialid.Format(_T("%d"), temp);SetDlgItemText(IDC_PRO_ID, m_materialid);                                //显示插入的pro_id++index; // dbResult 的字段值是连续的,从第0索引到第 nColumn - 1索引都是字段名称,从第 nColumn 索引开始,后面都是字段值,它把一个二维的表(传统的行列表示法)用一个扁平的形式来表示}printf("-------\n");}}}elsereturn _T("");sqlite3_free_table(dbResult);//关闭数据库sqlite3_close(db);return m_materialid;
}
CString  CMateriaManagementDlg::Query(const std::string &selMaxID)
{int rc;sqlite3 *db;int result;char **dbResult;int nRow, nColumn;char *errmsg = NULL;int index;int i;int j;CString maxid;CString cstr_DataBasePath = utilDataBaseDir(_T("HouseDesignDB.db"));std::wstring unic_DataBasePath = cstr_DataBasePath.GetString();char* databasepath = Unicode2Utf8(unic_DataBasePath);rc = sqlite3_open(databasepath, &db);if (rc == SQLITE_OK){result = sqlite3_get_table(db, selMaxID.c_str(), &dbResult, &nRow, &nColumn, &errmsg);if (SQLITE_OK == result){index = nColumn;printf("查到%d条记录\n", nRow);for (i = 0; i < nRow; i++){printf("第 %d 条记录\n", i + 1);for (j = 0; j < nColumn; j++){printf("字段名:%s> 字段值:%s\n", dbResult[j], dbResult[index]);maxid = dbResult[index];                             //显示插入的pro_id++index; // dbResult 的字段值是连续的,从第0索引到第 nColumn - 1索引都是字段名称,从第 nColumn 索引开始,后面都是字段值,它把一个二维的表(传统的行列表示法)用一个扁平的形式来表示}printf("-------\n");}}}elsereturn _T("");sqlite3_free_table(dbResult);//关闭数据库sqlite3_close(db);return maxid;
}
void CMateriaManagementDlg::OnEnChangeEdit1()
{// TODO:  如果该控件是 RICHEDIT 控件,它将不// 发送此通知,除非重写 CDialogEx::OnInitDialog()// 函数并调用 CRichEditCtrl().SetEventMask(),// 同时将 ENM_CHANGE 标志“或”运算到掩码中。// TODO:  在此添加控件通知处理程序代码
}void CMateriaManagementDlg::OnEnChangeCompanyCode()
{// TODO:  如果该控件是 RICHEDIT 控件,它将不// 发送此通知,除非重写 CDialogEx::OnInitDialog()// 函数并调用 CRichEditCtrl().SetEventMask(),// 同时将 ENM_CHANGE 标志“或”运算到掩码中。// TODO:  在此添加控件通知处理程序代码
}void CMateriaManagementDlg::OnEnChangeCopyStatus()
{// TODO:  如果该控件是 RICHEDIT 控件,它将不// 发送此通知,除非重写 CDialogEx::OnInitDialog()// 函数并调用 CRichEditCtrl().SetEventMask(),// 同时将 ENM_CHANGE 标志“或”运算到掩码中。// TODO:  在此添加控件通知处理程序代码
}
std::string CMateriaManagementDlg::Convert(CString & select)
{char* csql = NULL;USES_CONVERSION;csql = W2A(select);char *ll = G2U(csql);std::string strsql = ll;return strsql;
}
void CMateriaManagementDlg::InsertMatrialInfo()
{using namespace std;char *errMsg;int rc;sqlite3 *db;USES_CONVERSION;string materialid(W2A(m_materialid));string materialname(W2A(m_materialname));string materialnodeid(W2A(m_materialnodeid));string materialstyle(W2A(m_materialstyle));string materialpath(W2A(m_materialimagepath));string materialdeleted(W2A(m_materialdeleted));string materialupdatetime(W2A(m_updatetime));string materialsizex(W2A(m_materialsizex));string materialsizey(W2A(m_materialsizey));string materialprice(W2A(m_materialprice));std::string ccc = "ddddd";std::string insertSql = "insert into MaterialInfo values (" + materialid + ",'" + materialname + "'," + materialnodeid + ",'" + materialstyle + "','" + materialpath + "'," + materialdeleted + ",'" + materialupdatetime + "'," +materialsizex + "," + materialsizey + "," + materialprice + ")";wchar_t*    changeInsert = StringTWchar(insertSql);char *rtnSql = AnsiToUTF_8(changeInsert);CString cstr_DataBasePath = utilDataBaseDir(_T("HouseDesignDB.db"));std::wstring unic_DataBasePath = cstr_DataBasePath.GetString();const char* path = Unicode2Utf8(unic_DataBasePath);rc = sqlite3_open(path, &db);if (rc == SQLITE_OK){//    MessageBox(NULL, _T("打开数据库成功!"), _T("消息"), MB_OK | MB_ICONWARNING);/****************************************************************/rc = sqlite3_exec(db, rtnSql, NULL, NULL, &errMsg);            //插入一条数据;if (rc == SQLITE_OK){//AfxMessageBox(_T("添加成功!"));SetDlgItemText(IDC_INSERT_STATUS, _T("添加成功!"));}elseAfxMessageBox(_T("添加失败!"));}//关闭数据库sqlite3_close(db);
}void CMateriaManagementDlg::OnEnChangeInsertStatus()
{// TODO:  如果该控件是 RICHEDIT 控件,它将不// 发送此通知,除非重写 CDialogEx::OnInitDialog()// 函数并调用 CRichEditCtrl().SetEventMask(),// 同时将 ENM_CHANGE 标志“或”运算到掩码中。// TODO:  在此添加控件通知处理程序代码
}
bool CMateriaManagementDlg::DirDelete(CString &str)
{namespace fs = boost::filesystem;CString dirName = utilProductDir(_T("product\\") + str);USES_CONVERSION;std::string  del(W2A(dirName));namespace fs = boost::filesystem;fs::path ps(del);fs::path path = ps;try{fs::remove_all(path);return true;}catch (std::exception e){e.what();return false;}
}

数据库管理系统MFC实现相关推荐

  1. 数据齿轮(DataGear)数据库管理系统 v1.1.1 发布

    数据齿轮(DataGear)数据库管理系统v1.1.1版本发布,此版本是v1.1版本的紧急BUG修复版本,更新内容如下: 修复:修复集成软件包在JRE8及以上版本无法正常运行的BUG: 数据齿轮(Da ...

  2. 顶级数据库管理系统的性能比较研究(论文翻译)

    本文译自 <A Comparative Study on the Performance of the Top DBMS Systems >Youssef Bassil LACSC – L ...

  3. Mac MySQL 数据库配置(关系型数据库管理系统)

    本文已停止更新,点击此链接查看本文最新内容 !!! 前言 MySQL 关系型数据库管理系统. 1.配置准备工作 1)配置数据库准备工作 下载相关软件 mysql-5.7.21-1-macos10.13 ...

  4. mysql数据库管理系统的配置文件是_MySQL学习笔记_1_MySQL数据库管理系统概述

    1. MySQL架构 C/S: client / server架构 MySQL DBMS(Data Bank Management System): 数据库管理系统 客户端  服务器 --->  ...

  5. mysql 不同的文件系统_文件系统,数据库管理系统,操作系统之间有什么联系?...

    这仨名字里都有个"系统",但完全不是一个东西,也谈不到谁包含谁的问题. 简单的说他们之间的关系:文件系统和操作系统可以看作一种"合作"关系,而数据库管理系统则是 ...

  6. 【DBMS 数据库管理系统】数据仓库特征 ( 特征一 : 面向主题组织数据 | 特征二 : 数据集成 | 特征三 : 数据不可更新 | 特征四 : 随时间不断变化 )

    文章目录 一.特征一 : 面向主题 数据组织方式 二.特征二 : 数据集成 三.特征三 : 数据不可更新 四.特征四 : 数据仓库中的数据 随时间不断变化 一.特征一 : 面向主题 数据组织方式 主题 ...

  7. 分布式数据库管理系统

    分布式数据库管理系统的发展 单个数据库分割成多个,然后把这些分割存放到同一网络中的不同计算机中.多点数据库是分布式数据库系统的核心.业务分布在不同的国家和地区需要分布式数据库管理系统.分布式数据库系统 ...

  8. 数据库系统概论:第十二章 数据库管理系统

    12.1 数据库管理系统的基本功能 1. 数据库定义和创建 2. 数据组织.存储.管理 3. 数据存取 4. 数据库事务管理和运行管理 5. 数据库的建立和维护 6. 其他功能 12.2 数据库管理系 ...

  9. 数据库与数据库管理系统的基本概念

    文章目录 1 实体的概念与数据库 1.1 数据库的特点 1.2 实体存储的的基本单元 2 数据库管理系统 2.1 DBMS的概念 2.2 DBMS的功能 2.3 应用程序与DBMS 3 SQL与T-S ...

最新文章

  1. UBUNTU手动安装JDK的详细步骤
  2. Android Material Design :LinearLayoutCompat添加分割线divider
  3. Java操作memcache
  4. 测试上路2年,你处于什么阶段了?不醒着拼,你连应届生都比不过...
  5. sql 查出表转换为html,如何执行表中的sql语句并将其转换为html
  6. 微服务架构实战篇(四):Spring boot2.0 + Mybatis +Druid监控数据库访问性能
  7. 车位编号lisp_CAD自动编号操作
  8. Reverse Integer(C++)
  9. vue 在线阅读PDF
  10. supervisor 初探
  11. python飞机大战(只需要两个python文件)附带pycharm的导包方法
  12. 【KVM虚拟化实践与编程】云平台管理系统
  13. Genesis创世纪
  14. CIDR划分子网: 一个自治系统有 5 个局域网,其连接如下图。LAN1 至 LAN4 上的主机数目分别为 180、60、15、20。 该。。。
  15. Alluxio Paper
  16. 单链表的应用---通讯录设计(数据结构课设)
  17. 河北工业机器人夹爪生产厂家_GIMATIC,GIMATIC电动夹爪,GIMATIC气动夹爪-工业控制领域一站式服务商-华联欧...
  18. 操作系统之局部性原理
  19. ps2021mac 22.4.2已经修复不能导出图片问题
  20. 【金融量化】ETF基金是什么?有什么特点?

热门文章

  1. python最强脚本工具_python脚本工具最百里自瞄
  2. inventor如何画心_Illustrator | 如何画一个心型图案
  3. 【2017年中总结】——半饱
  4. 2022年数学建模国赛--赛后总结
  5. 基于51单片机的温湿度检测及调节系统
  6. 激活mathtype
  7. 带有同步更新新浪微博功能的个人日记应用
  8. uni-app 应用换肤功能
  9. java 中long和Long的区别
  10. python response_python修改微信和支付宝步数