标签:
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