1、materialDlg.h文件
#pragma once
#include "afxshelltreectrl.h"
#include "afxwin.h"
// CmaterialDlg 对话框
class CmaterialDlg : public CDialogEx
{
// 构造
public:
CmaterialDlg(CWnd* pParent = NULL); // 标准构造函数
// 对话框数据
enum { IDD = IDD_MATERIAL_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:
afx_msg void OnBnClickedButton1();
afx_msg void OnTvnSelchangedMfcshelltree2(NMHDR *pNMHDR, LRESULT *pResult);
CMFCShellTreeCtrl m_tree;
afx_msg void OnStnClickedItemSelEdit();
afx_msg void OnBnClickedButton2();
int showTableInfo(void *para, int n_column, char **column_value, char **column_name);
char* CmaterialDlg::AnsiToUTF_8(WCHAR szStr[]);
//wchar_t* StringTWchar(const string& s);
//wchar_t* CharToWchar(const char* c);
wchar_t* CmaterialDlg::c2w(char *str);
CComboBox m_comboWeb;
afx_msg void OnEnChangeSelWebEdit();
afx_msg void OnCbnSelchangeWebCombo();
afx_msg void OnEnChangeProId();
CComboBox m_prostyle;
afx_msg void OnEnChangeEditProStyle();
afx_msg void OnCbnSelchangeProStyle();
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; //已赋值
afx_msg void OnBnClickedButton5();
afx_msg void OnBnClickedButton6();
};
2、materialDlg.cpp实现文件
#include "stdafx.h"
#include "material.h"
#include "materialDlg.h"
#include "afxdialogex.h"
#include "sqlite3.h"
#include <Windows.h>
#include <iostream>
#include <stdlib.h>
#include <math.h>
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// 用于应用程序“关于”菜单项的 CAboutDlg 对话框
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()
// CmaterialDlg 对话框
CmaterialDlg::CmaterialDlg(CWnd* pParent /*=NULL*/)
: CDialogEx(CmaterialDlg::IDD, pParent)
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CmaterialDlg::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
DDX_Control(pDX, IDC_MFCSHELLTREE2, m_tree);
DDX_Control(pDX, IDC_WEB_COMBO, m_comboWeb);
DDX_Control(pDX, IDC_PRO_STYLE, m_prostyle);
}
BEGIN_MESSAGE_MAP(CmaterialDlg, CDialogEx)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_BUTTON1, &CmaterialDlg::OnBnClickedButton1)
ON_NOTIFY(TVN_SELCHANGED, IDC_MFCSHELLTREE2, &CmaterialDlg::OnTvnSelchangedMfcshelltree2)
ON_BN_CLICKED(IDC_BUTTON2, &CmaterialDlg::OnBnClickedButton2)
ON_EN_CHANGE(IDC_SEL_WEB_EDIT, &CmaterialDlg::OnEnChangeSelWebEdit)
ON_CBN_SELCHANGE(IDC_WEB_COMBO, &CmaterialDlg::OnCbnSelchangeWebCombo)
ON_EN_CHANGE(IDC_PRO_ID, &CmaterialDlg::OnEnChangeProId)
ON_EN_CHANGE(IDC_EDIT_PRO_STYLE, &CmaterialDlg::OnEnChangeEditProStyle)
ON_CBN_SELCHANGE(IDC_PRO_STYLE, &CmaterialDlg::OnCbnSelchangeProStyle)
ON_BN_CLICKED(IDC_BUTTON5, &CmaterialDlg::OnBnClickedButton5)
ON_BN_CLICKED(IDC_BUTTON6, &CmaterialDlg::OnBnClickedButton6)
END_MESSAGE_MAP()
// CmaterialDlg 消息处理程序
BOOL CmaterialDlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
m_tree.SetFlags((SHCONTF)(SHCONTF_FOLDERS | SHCONTF_NONFOLDERS));
// 将“关于...”菜单项添加到系统菜单中。
// 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_MAXIMIZE);
// TODO: 在此添加额外的初始化代码
// 为组合框控件的列表框添加列表项“床头柜”
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.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("沙发"));
// 在组合框控件的列表框中索引为1的位置插入列表项“组合床”
m_comboWeb.InsertString(1, _T("组合床"));
// 默认选择第一项
m_comboWeb.SetCurSel(0);
// 编辑框中默认显示第一项的文字“组合床”
SetDlgItemText(IDC_SEL_WEB_EDIT, _T("pro_name"));
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 = "0000";
m_procorlor = "不详";
m_material = "null";
m_proprice = "0";
m_prolinkurl = "null";
m_proseller = "null";
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="0000";
m_prenodeid="0000";
m_topimageview="0000";
m_preimageview="add";
m_prozippath="add";
// GetDlgItem(IDC_EDIT_OBJ_PATH)->GetWindowText(str);
return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
}
void CmaterialDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialogEx::OnSysCommand(nID, lParam);
}
}
// 如果向对话框添加最小化按钮,则需要下面的代码
// 来绘制该图标。 对于使用文档/视图模型的 MFC 应用程序,
// 这将由框架自动完成。
void CmaterialDlg::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 CmaterialDlg::OnQueryDragIcon()
{
return static_cast<HCURSOR>(m_hIcon);
}
int CmaterialDlg::showTableInfo(void *para, int n_column, char **column_value, char **column_name)
{
int i;
printf("记录包含%d个字段\n", n_column);
for (i = 0; i<n_column; i++)
{
printf("字段名:%s >> 字段值:%s\n", column_name[i], column_value[i]);
}
printf("--------------------------------------n");
return 0;
}
void CmaterialDlg::OnBnClickedButton1()
{
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;
const char* path = "D://Project//HouseDesign//data//database//HouseDesignDB.db";
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);
}
// TODO: 在此添加控件通知处理程序代码
}
void CmaterialDlg::OnTvnSelchangedMfcshelltree2(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMTREEVIEW pNMTreeView = reinterpret_cast<LPNMTREEVIEW>(pNMHDR);
// TODO: 在此添加控件通知处理程序代码
*pResult = 0;
CString strText; // 树节点的标签文本字符串
CString fileText;
CString totalText,temp;
temp = L".obj";
m_tree.GetItemPath(strText, pNMTreeView->itemNew.hItem);
// 获取当前选中节点的句柄
HTREEITEM hItem = m_tree.GetSelectedItem();
// 获取选中节点的标签文本字符串
fileText = m_tree.GetItemText(hItem);
// 将字符串显示到编辑框中
if (strText != "" || fileText=="计算机")
{
totalText = strText;
SetDlgItemText(IDC_ITEM_SEL_EDIT, totalText);
}
else
{
int length = fileText.GetLength();
if (int flag = fileText.Find(temp))
{
if (flag < 0)
{
return;
}
else
{
for (int i = 0; i < fileText.GetLength(); i++)
{
if (fileText[i] != (CString)".")
{
m_pronumber += fileText[i];
}
else if (fileText[i] == (CString)".")
return;
}
SetDlgItemText(IDC_ITEM_SEL_EDIT, fileText);
}
}
}
}
void CmaterialDlg::OnBnClickedButton2()
{
// TODO: 在此添加控件通知处理程序代码
int rc;
sqlite3 *db;
int result;
char **dbResult;
int nRow, nColumn;
char *errmsg = NULL;
int i, j;
int index;
char* output= NULL;
wchar_t *convert;
const char* path = "D://Project//HouseDesign//data//database//HouseDesignDB.db";
rc = sqlite3_open(path, &db);
if (rc == SQLITE_OK)
{
const char* select = "select * from user";
// MessageBox(NULL, _T("打开数据库成功!"), _T("消息"), MB_OK | MB_ICONWARNING);
/****************************************************************/
result = sqlite3_get_table(db, select, &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 = 1; j < nColumn; j++)
{
printf("字段名:%s> 字段值:%s\n", dbResult[j], dbResult[index]);
convert = c2w(dbResult[index]);
// output = UnicodeToUTF_8(output, convert);
SetDlgItemText(IDC_ITEM_SEL_EDIT, (LPCTSTR)dbResult[index]);
++index; // dbResult 的字段值是连续的,从第0索引到第 nColumn - 1索引都是字段名称,从第 nColumn 索引开始,后面都是字段值,它把一个二维的表(传统的行列表示法)用一个扁平的形式来表示
}
printf("-------\n");
}
}
}
}
using namespace std;
string ASCII2UTF_8(string& strAsciiCode)
{
string strRet("");
//先把 ascii 转为 unicode
// wstring wstr = Acsi2WideByte(strAsciiCode);
//最后把 unicode 转为 utf8
// strRet = Unicode2Utf8(wstr);
return strRet;
}
char* CmaterialDlg::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* CmaterialDlg::c2w(char *str)
{
int length = strlen(str) + 1;
wchar_t *t = (wchar_t*)malloc(sizeof(wchar_t)*length);
memset(t, 0, length*sizeof(wchar_t));
MultiByteToWideChar(CP_ACP, 0, str, strlen(str), t, length);
return t;
}
void CmaterialDlg::OnEnChangeSelWebEdit()
{
// TODO: 如果该控件是 RICHEDIT 控件,它将不
// 发送此通知,除非重写 CDialogEx::OnInitDialog()
// 函数并调用 CRichEditCtrl().SetEventMask(),
// 同时将 ENM_CHANGE 标志“或”运算到掩码中。
// TODO: 在此添加控件通知处理程序代码
}
void CmaterialDlg::OnCbnSelchangeWebCombo()
{
// TODO: 在此添加控件通知处理程序代码
CString strWeb;
int nSel;
// 获取组合框控件的列表框中选中项的索引
nSel = m_comboWeb.GetCurSel();
// 根据选中项索引获取该项字符串
m_comboWeb.GetLBText(nSel, strWeb);
// 将组合框中选中的字符串显示到IDC_SEL_WEB_EDIT编辑框中
m_proname = strWeb;
SetDlgItemText(IDC_SEL_WEB_EDIT, strWeb);
}
void CmaterialDlg::OnEnChangeProId()
{
// TODO: 如果该控件是 RICHEDIT 控件,它将不
// 发送此通知,除非重写 CDialogEx::OnInitDialog()
// 函数并调用 CRichEditCtrl().SetEventMask(),
// 同时将 ENM_CHANGE 标志“或”运算到掩码中。
// TODO: 在此添加控件通知处理程序代码
}
void CmaterialDlg::OnEnChangeEditProStyle()
{
// TODO: 如果该控件是 RICHEDIT 控件,它将不
// 发送此通知,除非重写 CDialogEx::OnInitDialog()
// 函数并调用 CRichEditCtrl().SetEventMask(),
// 同时将 ENM_CHANGE 标志“或”运算到掩码中。
// TODO: 在此添加控件通知处理程序代码
}
void CmaterialDlg::OnCbnSelchangeProStyle()
{
// TODO: 在此添加控件通知处理程序代码
CString temp;
int nsel;
// 获取组合框控件的列表框中选中项的索引
nsel = m_prostyle.GetCurSel();
// 根据选中项索引获取该项字符串
m_prostyle.GetLBText(nsel, temp);
m_style = temp;
// 将组合框中选中的字符串显示到IDC_SEL_WEB_EDIT编辑框中
SetDlgItemText(IDC_EDIT_PRO_STYLE, temp);
}
void CmaterialDlg::OnBnClickedButton5()
{
// TODO: 在此添加控件通知处理程序代码
//CEdit* pBoxOne;
//pBoxOne = (CEdit*)GetDlgItem(IDC_EDIT8);
////赋值
////pBoxOne-> SetWindowText( _T("FOO ") );
////取值
//CString str;
//pBoxOne->GetWindowText(str);
m_proobjpath = CString("product/") + m_proid + "/"+m_pronumber + (CString)".obj";
}
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 string& s)
{
const char* p = s.c_str();
return CharToWchar(p);
}
void CmaterialDlg::OnBnClickedButton6()
{
// TODO: 在此添加控件通知处理程序代码
char *errMsg;
int rc;
sqlite3 *db;
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));
CString strDate;
COleDateTime ole_time;
CTime c_time;
strDate = "2009-4-25 12:30:29";
ole_time.ParseDateTime(strDate);
//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);
const char* path = "D://Project//HouseDesign//data//database//HouseDesignDB.db";
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); //插入一条数据;
}
}
3、material.cpp实现文件
#include "stdafx.h"
#include "material.h"
#include "materialDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// CmaterialApp
BEGIN_MESSAGE_MAP(CmaterialApp, CWinApp)
ON_COMMAND(ID_HELP, &CWinApp::OnHelp)
END_MESSAGE_MAP()
// CmaterialApp 构造
CmaterialApp::CmaterialApp()
{
// 支持重新启动管理器
m_dwRestartManagerSupportFlags = AFX_RESTART_MANAGER_SUPPORT_RESTART;
// TODO: 在此处添加构造代码,
// 将所有重要的初始化放置在 InitInstance 中
}
// 唯一的一个 CmaterialApp 对象
CmaterialApp theApp;
// CmaterialApp 初始化
BOOL CmaterialApp::InitInstance()
{
// 如果一个运行在 Windows XP 上的应用程序清单指定要
// 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式,
//则需要 InitCommonControlsEx()。 否则,将无法创建窗口。
INITCOMMONCONTROLSEX InitCtrls;
InitCtrls.dwSize = sizeof(InitCtrls);
// 将它设置为包括所有要在应用程序中使用的
// 公共控件类。
InitCtrls.dwICC = ICC_WIN95_CLASSES;
InitCommonControlsEx(&InitCtrls);
CWinApp::InitInstance();
AfxEnableControlContainer();
// 创建 shell 管理器,以防对话框包含
// 任何 shell 树视图控件或 shell 列表视图控件。
CShellManager *pShellManager = new CShellManager;
// 激活“Windows Native”视觉管理器,以便在 MFC 控件中启用主题
CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerWindows));
// 标准初始化
// 如果未使用这些功能并希望减小
// 最终可执行文件的大小,则应移除下列
// 不需要的特定初始化例程
// 更改用于存储设置的注册表项
// TODO: 应适当修改该字符串,
// 例如修改为公司或组织名
SetRegistryKey(_T("应用程序向导生成的本地应用程序"));
CmaterialDlg dlg;
m_pMainWnd = &dlg;
INT_PTR nResponse = dlg.DoModal();
if (nResponse == IDOK)
{
// TODO: 在此放置处理何时用
// “确定”来关闭对话框的代码
}
else if (nResponse == IDCANCEL)
{
// TODO: 在此放置处理何时用
// “取消”来关闭对话框的代码
}
else if (nResponse == -1)
{
TRACE(traceAppMsg, 0, "警告: 对话框创建失败,应用程序将意外终止。\n");
TRACE(traceAppMsg, 0, "警告: 如果您在对话框上使用 MFC 控件,则无法 #define _AFX_NO_MFC_CONTROLS_IN_DIALOGS。\n");
}
// 删除上面创建的 shell 管理器。
if (pShellManager != NULL)
{
delete pShellManager;
}
// 由于对话框已关闭,所以将返回 FALSE 以便退出应用程序,
// 而不是启动应用程序的消息泵。
return FALSE;
}
原文:http://blog.csdn.net/qq_31558353/article/details/51689500