当前位置: 首页 > news >正文

凡科建站做网站需要几天近一周财经新闻热点

凡科建站做网站需要几天,近一周财经新闻热点,衡阳市住房和城乡建设网站,上海精品网站建设免责声明#xff1a;内容仅供学习参考#xff0c;请合法利用知识#xff0c;禁止进行违法犯罪活动#xff01; 如果看不懂、不知道现在做的什么#xff0c;那就跟着做完看效果 内容参考于#xff1a;易道云信息技术研究院VIP课 上一个内容#xff1a;23.实现配置工具…免责声明内容仅供学习参考请合法利用知识禁止进行违法犯罪活动 如果看不懂、不知道现在做的什么那就跟着做完看效果 内容参考于易道云信息技术研究院VIP课 上一个内容23.实现配置工具数据结构 码云地址master 分支https://gitee.com/dye_your_fingers/titan 码云版本号0235d8d15b80f240eee1b0a9a2f659df07093433 代码下载地址在 titan 目录下文件名为titan-根据配置文件自动生成C语言头文件.zip 链接https://pan.baidu.com/s/1W-JpUcGOWbSJmMdmtMzYZg 提取码q9n5 --来自百度网盘超级会员V4的分享 HOOK引擎文件名为黑兔sdk升级版.zip 链接https://pan.baidu.com/s/1IB-Zs6hi3yU8LC2f-8hIEw 提取码78h8 --来自百度网盘超级会员V4的分享 以 23.实现配置工具数据结构 它的代码为基础进行修改 新加一个按钮 按钮的属性 下图红框里的两个组件是赋值的窗口标题的 然后给头文件路径编辑框添加一个变量 生成的目录根据配置生成目录用于存放对应的数据如果不知道什么意思继续往后看看成本的效果就知道了 效果图生成的c头文件 GameWinSock.cpp文件的修改修改了 OnSend函数、OnRecving函数 #include pch.h #include GameWinSock.h #include extern_all.hGameWinSock::PROC GameWinSock::_OnConnect{}; GameWinSock::PROC GameWinSock::_OnSend{}; GameWinSock::PROC GameWinSock::_OnRecv{}; // 这个函数拦截了游戏的连接 bool GameWinSock::OnConnect(char* ip, unsigned port) {// this是ecxHOOK的点已经有ecx了WinSock this;bool b (this-*_OnConnect)(ip, port);// 下方注释的代码时为了防止多次注入导致虚函数地址不恢复问题导致死循环通过一次性HOOK也能解决/*unsigned* vtable (unsigned*)this;vtable (unsigned*)vtable[0];union {unsigned value;bool(GameWinSock::* _proc)(char*, unsigned);} vproc;vproc._proc _OnConnect;DWORD oldPro, backProc;VirtualProtect(vtable, 0x10x00, PAGE_EXECUTE_READWRITE, oldPro);vtable[0x34 / 4] vproc.value;VirtualProtect(vtable, 0x10x00, oldPro, backProc);*/return b; }bool GameWinSock::OnSend(char* buff, unsigned len) {/*这里就可以监控游戏发送的数据了*/ #ifdef Anlyanly-SendData(MSG_TYPE::I_SEND, 0, buff, len); #endifreturn (this-*_OnSend)(buff, len); }bool GameWinSock::OnRecving(char* buff, unsigned len) {// MessageBoxA(0, 11111111111111, 0, MB_OK);/*监控游戏接收的数据包*/ #ifdef Anlyanly-SendData(MSG_TYPE::I_RECV, 0, buff, len); #endifreturn true; }bool GameWinSock::OnRecv(char* buff, unsigned len) { //#ifdef Anly // anly-SendData(1, buff, len); //#endifreturn (this-*_OnRecv)(buff, len); }CAnly.cpp文件的修改修改了 SendData函数 #include pch.h #include CAnly.h #ifdef Anly LRESULT CAnly::SendData(MSG_TYPE type, unsigned MsgType, void* buff, unsigned len) {//typedef struct COPY_DATA {// time_t ltime; // 时间// unsigned MsgType; // 数据类型// unsigned len; // 数据长度// char buff[0x2000]; // 数据//}*PCOPYDATA;COPY_DATA tmp;time(tmp.ltime);tmp.MsgType MsgType;tmp.len len;memcpy(tmp.buff, buff, len);HWND hWnd FindWindow(L#32770, LDataAnly);COPYDATASTRUCT copydata{};copydata.dwData (int)type;copydata.cbData len 16;copydata.lpData tmp;if (hWnd) {//MessageBoxA(0, 222222222222, 0, MB_OK);return SendMessage(hWnd, WM_COPYDATA, 0, (LPARAM)copydata);}return 0; } #endif CAnly.h文件的修改它使用工具把内存全部重新生成的了 #define Anly #ifdef Anly #pragma once enum class MSG_TYPE :int {I_SEND0,I_RECV1,I_LOG2,MAX }; #define _TITLE titan_data typedef struct COPY_DATA {time_t ltime; // 时间unsigned MsgType; // 数据类型unsigned len; // 数据长度char buff[0x2000]; // 数据 }*PCOPYDATA; class CAnly{ public: LRESULT SendData(MSG_TYPE type, unsigned MsgType, void* buff, unsigned len); }; #endifCSet.h文件的修改新加 txtFolder变量 #pragma once #include CSetMsg.h #include CSetData.h// CSet 对话框class CSet : public CDialogEx {DECLARE_DYNAMIC(CSet)public:CSet(CWnd* pParent nullptr); // 标准构造函数virtual ~CSet();// 对话框数据 #ifdef AFX_DESIGN_TIMEenum { IDD IDD_SET }; #endifprotected:virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 // 生成的消息映射函数virtual BOOL OnInitDialog();DECLARE_MESSAGE_MAP() public:CListCtrl lstMsgType;CListCtrl lstDataType;afx_msg void OnBnClickedOk();afx_msg void OnBnClickedCancel();afx_msg void OnNMRClickList1(NMHDR* pNMHDR, LRESULT* pResult);afx_msg void OnNMRClickList2(NMHDR* pNMHDR, LRESULT* pResult);afx_msg void OnAddMsgType(); public:CSetMsg wndMsgSet;CSetData wndDataSet;CString txtBool[2]{ L否, L是 };int nMsgSel; // 消息定义列表选中行索引int nDataSel; // 数据定义列表选中行索引afx_msg void OnSetMsg(); // lstMsgType 添加数据afx_msg void OnDelMsg(); // lstMsgType 列表数据删除afx_msg void OnAddDataType(); // 选中 lstMsgType 列表里的一个数据根据这个数据添加一个 lstDataType列表数据afx_msg void OnSetDataType(); // lstDataType 列表数据修改afx_msg void OnDelData(); // lstDataType 列表数据删除// 判断 lstMsgType 列表是否有重复的bool IsExitMsg(CString _name);// 判断 lstDataType 列表里的内容是否有重复的bool IsExitData(CString _name, CString _id);// 判断 lstDataType 列表里的内容是否有重复的 修改里要排除自身所以才有的这个函数bool IsExitData(CString _name, CString _id, int index);CString txtName;CString txtTitle;CString txtFolder;afx_msg void OnClose();void LoadConfig(CString inifile, CString _name);afx_msg void OnBnClickedButton5(); };CSet.cpp文件的修改新加 OnBnClickedButton5函数这个函数是头文件路径后面的按钮的点击事件处理函数、fstream头文件修改了 LoadConfig函数、OnBnClickedOk函数这个函数是保存按钮的点击事件处理函数 // CSet.cpp: 实现文件 //#include pch.h #include DataAnly.h #include CSet.h #include afxdialogex.h #include extern_all.h #include fstream // 引入io流用于写文件// CSet 对话框IMPLEMENT_DYNAMIC(CSet, CDialogEx)CSet::CSet(CWnd* pParent /*nullptr*/): CDialogEx(IDD_SET, pParent), txtName(_T()), txtTitle(_T()) {}CSet::~CSet() { }void CSet::DoDataExchange(CDataExchange* pDX) {CDialogEx::DoDataExchange(pDX);DDX_Control(pDX, IDC_LIST1, lstMsgType);DDX_Control(pDX, IDC_LIST2, lstDataType);DDX_Text(pDX, IDC_EDIT1, txtName);DDX_Text(pDX, IDC_EDIT2, txtTitle);DDX_Text(pDX, IDC_EDIT4, txtFolder); }BOOL CSet::OnInitDialog() {CDialogEx::OnInitDialog();SetListView(lstMsgType);SetListView(lstDataType);lstMsgType.InsertColumn(0, L名称, 0, 100);lstMsgType.InsertColumn(1, L宏定义, 0, 100);lstMsgType.InsertColumn(2, L类型, 0, 100); // 数据和文本文本直接显示数据有点复杂看之后实现位置lstMsgType.InsertColumn(3, L输出到文件, 0, 100);lstDataType.InsertColumn(0, L消息类型, 0, 100);lstDataType.InsertColumn(1, L编号, 0, 100);lstDataType.InsertColumn(2, L名称, 0, 100);lstDataType.InsertColumn(3, L背景颜色, 0, 100);lstDataType.InsertColumn(4, L字体颜色, 0, 100);lstDataType.InsertColumn(5, L显示, 0, 100);lstDataType.InsertColumn(6, L输出, 0, 100);lstDataType.InsertColumn(7, L单独输出, 0, 100);return TRUE; }BEGIN_MESSAGE_MAP(CSet, CDialogEx)ON_BN_CLICKED(IDOK, CSet::OnBnClickedOk)ON_BN_CLICKED(IDCANCEL, CSet::OnBnClickedCancel)ON_NOTIFY(NM_RCLICK, IDC_LIST1, CSet::OnNMRClickList1)ON_NOTIFY(NM_RCLICK, IDC_LIST2, CSet::OnNMRClickList2)ON_COMMAND(ID_32771, CSet::OnAddMsgType)ON_COMMAND(ID_32772, CSet::OnSetMsg)ON_COMMAND(ID_32773, CSet::OnDelMsg)ON_COMMAND(ID_32777, CSet::OnAddDataType)ON_COMMAND(ID_32775, CSet::OnSetDataType)ON_COMMAND(ID_32776, CSet::OnDelData)ON_WM_CLOSE()ON_BN_CLICKED(IDC_BUTTON5, CSet::OnBnClickedButton5) END_MESSAGE_MAP()// CSet 消息处理程序// 保存按钮点击事件处理函数 void CSet::OnBnClickedOk() {// TODO: 在此添加控件通知处理程序代码// CDialogEx::OnOK();UpdateData(TRUE);int icount lstMsgType.GetItemCount();if (txtName L) {return;}CString inifile ConfigPath txtName .ini;CString txt;CString App;CString _Name;CString AppData;CString _Define;txt.Format(L%d, icount);/*.ini是微软搞的配置文件Windows系统配置文件所采用的结构存储格式.ini文件它有结构详细的结构看当前程序给生成的.ini文件内容WritePrivateProfileString是用来给.ini文件写数据的WritePrivateProfileString它是给.ini文件写一个字符串*/WritePrivateProfileString(Lmain, Lcount, txt, inifile);WritePrivateProfileString(Lmain, Ltitle, txtTitle, inifile);WritePrivateProfileString(Lmain, Lhfile, txtFolder, inifile);WritePrivateProfileString(Lmain, Lname, txtName, inifile);// PathIsDirectory函数是用来验证路径是否为有效目录if (!PathIsDirectory(DataPath)) {// CreateDirectory函数是用来新建目录if (!CreateDirectory(DataPath, NULL)) {AfxMessageBox(L创建Data文件夹失败请检查文件目录权限);return;}}/*txtName用来表示一个游戏CString _folder DataPath txtName;// PathIsDirectory函数是用来验证路径是否为有效目录if (!PathIsDirectory(_folder)) {// CreateDirectory函数是用来新建目录if (!CreateDirectory(_folder, NULL)) {AfxMessageBox(L创建数据保存文件夹失败请检查文件目录权限);return;}}这几行代码的意思就是根据游戏创建文件夹然后把要的数据放在这个文件夹里这样的好处如果还有另一个游戏那么它也会根据配置的名字创建文件然后把它里面我们想要的数据就放在它的文件夹里用来区分如果还不懂那么看程序执行后的效果*/ CString _folder DataPath txtName;// PathIsDirectory函数是用来验证路径是否为有效目录if (!PathIsDirectory(_folder)) {// CreateDirectory函数是用来新建目录if (!CreateDirectory(_folder, NULL)) {AfxMessageBox(L创建数据保存文件夹失败请检查文件目录权限);return;}}std::locale loc std::locale::global(std::locale(std::locale(), , LC_CTYPE));std::wofstream ofs(txtFolder);if (!ofs.bad()) {ofs L#define Anly std::endl;ofs L#ifdef Anly std::endl;ofs L#pragma once std::endl;ofs Lenum class MSG_TYPE :int { std::endl;}for (int i 0; i icount; i){_Name lstMsgType.GetItemText(i, 0);_Define lstMsgType.GetItemText(i, 1);App.Format(LMessage_%d, i);// 消息定义列表的名称列的内容WritePrivateProfileString(App, Lname, _Name, inifile);// 消息定义列表的宏定义列的内容WritePrivateProfileString(App, Ldefine, _Define, inifile);// 消息定义列表的类型列的内容WritePrivateProfileString(App, Ltype, lstMsgType.GetItemText(i, 2), inifile);// 消息定义列表的输出到文件列的内容WritePrivateProfileString(App, Listxt, lstMsgType.GetItemText(i, 3), inifile);int datacount 0;/*根据消息的宏定义创建文件夹用于保存对应的数据比如现在的宏定义是 I_RECV 然后生成一个文件夹名字是 I_RECV 的然后把所有 I_RECV 相关的数据全部放在这个文件夹里*/ _folder DataPath txtName L\\ _Define;// PathIsDirectory函数是用来验证路径是否为有效目录if (!PathIsDirectory(_folder)) {// CreateDirectory函数是用来新建目录if (!CreateDirectory(_folder, NULL)) {AfxMessageBox(L创建数据保存文件夹失败请检查文件目录权限);return;}}if (!ofs.bad()) {ofs L\t _Define.GetBuffer() L i L, std::endl;}for (int j 0; j lstDataType.GetItemCount(); j){if (lstDataType.GetItemText(j, 0) _Name) {AppData.Format(L%s_%d, _Name, datacount);// 数据定义列表的编号列的内容 WritePrivateProfileString(AppData, Lid, lstDataType.GetItemText(j,1), inifile);// 数据定义列表的名称列的内容 WritePrivateProfileString(AppData, Lname, lstDataType.GetItemText(j,2), inifile);// 数据定义列表的背景颜色列的内容 WritePrivateProfileString(AppData, Lbackcolor, lstDataType.GetItemText(j,3), inifile);// 数据定义列表的字体颜色列的内容 WritePrivateProfileString(AppData, Lfontcolor, lstDataType.GetItemText(j,4), inifile);// 数据定义列表的显示列的内容 WritePrivateProfileString(AppData, Lisui, lstDataType.GetItemText(j,5), inifile);// 数据定义列表的输出列的内容 WritePrivateProfileString(AppData, Listxt, lstDataType.GetItemText(j,6), inifile);// 数据定义列表的单独输出列的内容 WritePrivateProfileString(AppData, Listxtalone, lstDataType.GetItemText(j,7), inifile);}}txt.Format(L%d, datacount);WritePrivateProfileString(App, Lcount, txt, inifile);}if (!ofs.bad()) {ofs L\tMAX std::endl;ofs L}; std::endl;ofs L#define _TITLE txtTitle .GetBuffer() std::endl;ofs Ltypedef struct COPY_DATA { std::endl;ofs L\ttime_t ltime; // 时间 std::endl;ofs L\tunsigned MsgType; // 数据类型 std::endl;ofs L\tunsigned len; // 数据长度 std::endl;ofs L\tchar buff[0x2000]; // 数据 std::endl;ofs L}*PCOPYDATA; std::endl;ofs Lclass CAnly{ std::endl;ofs Lpublic: std::endl;ofs LLRESULT SendData(MSG_TYPE type, unsigned MsgType, void* buff, unsigned len); std::endl;ofs L}; std::endl;ofs L#endif std::endl;} }void CSet::OnBnClickedCancel() {// CDialogEx::OnCancel();// 声明一个文件选择对话框里的筛选TCHAR szFilters[] _T(数据分析配置*.ini|*.ini||);// 创建一个文件选择对话框CFileDialog dialog(TRUE, NULL, NULL, 6, szFilters);// 设置文件选择对话框打开之后默认地址dialog.m_ofn.lpstrInitialDir ConfigPath;if (dialog.DoModal() IDOK) {// 获取选择的文件的目录获取的是绝对路径CString inifile dialog.GetPathName();LoadConfig(inifile, dialog.GetFileTitle());} }void CSet::OnNMRClickList1(NMHDR* pNMHDR, LRESULT* pResult) {LPNMITEMACTIVATE p reinterpret_castLPNMITEMACTIVATE(pNMHDR);// TODO: 在此添加控件通知处理程序代码*pResult 0;nMsgSel p-iItem;/*GetMessagePos函数可以获取光标位置返回值低16位是x高16位是y*/DWORD dwPos GetMessagePos();CPoint point(LOWORD(dwPos), HIWORD(dwPos));CMenu menu;menu.LoadMenuW(IDR_MENU1);// 根据菜单窗口id获取一个菜单窗口对象CMenu* pop menu.GetSubMenu(0);// 获取第一个菜单也就是现在的消息设置这个菜单// 在指定位置显示浮动弹出菜单并跟踪弹出菜单上项的选择情况。pop-TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON, point.x, point.y, this); }void CSet::OnNMRClickList2(NMHDR* pNMHDR, LRESULT* pResult) {LPNMITEMACTIVATE p reinterpret_castLPNMITEMACTIVATE(pNMHDR);// TODO: 在此添加控件通知处理程序代码*pResult 0;nDataSel p-iItem;/*GetMessagePos函数可以获取光标位置返回值低16位是x高16位是y */DWORD dwPos GetMessagePos();CPoint point(LOWORD(dwPos), HIWORD(dwPos));CMenu menu;menu.LoadMenuW(IDR_MENU1);// 根据菜单窗口id获取一个菜单窗口对象CMenu* pop menu.GetSubMenu(1);// 获取第一个菜单也就是现在的消息设置这个菜单// 在指定位置显示浮动弹出菜单并跟踪弹出菜单上项的选择情况。pop-TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, this); }void CSet::OnAddMsgType() {if (wndMsgSet.DoModal() IDOK) {int icount lstMsgType.GetItemCount();for (int i 0; i icount; i){if (lstMsgType.GetItemText(i, 0) wndMsgSet.txtName) {AfxMessageBox(L消息名已存在);return;}if (lstMsgType.GetItemText(i, 1) wndMsgSet.txtDefine) {AfxMessageBox(L宏定义已存在);return;}}lstMsgType.InsertItem(icount, wndMsgSet.txtName);lstMsgType.SetItemText(icount, 1, wndMsgSet.txtDefine);lstMsgType.SetItemText(icount, 2, wndMsgSet.txtTypeName);lstMsgType.SetItemText(icount, 3, txtBool[wndMsgSet.IsTxt]);} }void CSet::OnSetMsg() {if (nMsgSel -1) {wndMsgSet.SetDatas(lstMsgType.GetItemText(nMsgSel, 0), lstMsgType.GetItemText(nMsgSel, 1), lstMsgType.GetItemText(nMsgSel, 2), lstMsgType.GetItemText(nMsgSel, 3)L是);if (wndMsgSet.DoModal() IDOK) {int icount lstMsgType.GetItemCount();for (int i 0; i icount; i){if (lstMsgType.GetItemText(i, 0) wndMsgSet.txtName) {if (i ! nMsgSel) {AfxMessageBox(L消息名已存在);return;}}if (lstMsgType.GetItemText(i, 1) wndMsgSet.txtDefine) {if (i ! nMsgSel) {AfxMessageBox(L宏定义已存在);return;}}}lstMsgType.SetItemText(nMsgSel, 0, wndMsgSet.txtName);lstMsgType.SetItemText(nMsgSel, 1, wndMsgSet.txtDefine);lstMsgType.SetItemText(nMsgSel, 2, wndMsgSet.txtTypeName);lstMsgType.SetItemText(nMsgSel, 3, txtBool[wndMsgSet.IsTxt]);}} }void CSet::OnDelMsg() {if (nMsgSel -1) {lstMsgType.DeleteItem(nMsgSel);} }void CSet::OnAddDataType() {if (nMsgSel -1) {// 给消息数据窗口里消息名称输入框赋值wndDataSet.txtName lstMsgType.GetItemText(nMsgSel, 0);if (wndDataSet.DoModal() IDOK) {if (!IsExitMsg(wndDataSet.txtName)) {AfxMessageBox(L消息不存在可能已经被删除);return;}if (IsExitData(wndDataSet.txtName, wndDataSet.txtId)) {AfxMessageBox(L消息对应的数据编号已经存在);return;}int icount lstDataType.GetItemCount();lstDataType.InsertItem(icount, wndDataSet.txtName);lstDataType.SetItemText(icount,1, wndDataSet.txtId);lstDataType.SetItemText(icount,2, wndDataSet.txtDataName);lstDataType.SetItemText(icount,3, wndDataSet.txtBackColor);lstDataType.SetItemText(icount,4, wndDataSet.txtFontColor);lstDataType.SetItemText(icount,5, txtBool[wndDataSet.IsShowUI]);lstDataType.SetItemText(icount,6, txtBool[wndDataSet.IsTxt]);lstDataType.SetItemText(icount,7, txtBool[wndDataSet.IsTxtAlone]);}} }void CSet::OnSetDataType() {if (nDataSel -1) {wndDataSet.txtName lstDataType.GetItemText(nDataSel, 0),wndDataSet.txtId lstDataType.GetItemText(nDataSel, 1),wndDataSet.txtDataName lstDataType.GetItemText(nDataSel, 2),wndDataSet.txtBackColor lstDataType.GetItemText(nDataSel, 3),wndDataSet.txtFontColor lstDataType.GetItemText(nDataSel, 4),wndDataSet.IsShowUI lstDataType.GetItemText(nDataSel, 5) L是;wndDataSet.IsTxt lstDataType.GetItemText(nDataSel, 6) L是;wndDataSet.IsTxtAlone lstDataType.GetItemText(nDataSel, 7) L是;if (wndDataSet.DoModal() IDOK) {int icount nDataSel;if (!IsExitMsg(wndDataSet.txtName)) {AfxMessageBox(L消息不存在可能已经被删除);lstDataType.DeleteItem(nDataSel);return;}if (IsExitData(wndDataSet.txtName, wndDataSet.txtId, icount)) {AfxMessageBox(L消息对应的数据编号已经存在);return;}lstDataType.SetItemText(icount, 0, wndDataSet.txtName);lstDataType.SetItemText(icount, 1, wndDataSet.txtId);lstDataType.SetItemText(icount, 2, wndDataSet.txtDataName);lstDataType.SetItemText(icount, 3, wndDataSet.txtBackColor);lstDataType.SetItemText(icount, 4, wndDataSet.txtFontColor);lstDataType.SetItemText(icount, 5, txtBool[wndDataSet.IsShowUI]);lstDataType.SetItemText(icount, 6, txtBool[wndDataSet.IsTxt]);lstDataType.SetItemText(icount, 7, txtBool[wndDataSet.IsTxtAlone]);}} }void CSet::OnDelData() {if (nDataSel -1) {lstDataType.DeleteItem(nDataSel);} }bool CSet::IsExitMsg(CString _name) {for (int i 0; i lstMsgType.GetItemCount(); i){if (lstMsgType.GetItemText(i, 0) _name) {return true;}}return false; }bool CSet::IsExitData(CString _name, CString _id) {for (int i 0; i lstDataType.GetItemCount(); i){if ((lstDataType.GetItemText(i, 0) _name)(lstDataType.GetItemText(i, 1) _id)) {return true;}}return false; }bool CSet::IsExitData(CString _name, CString _id, int index) {for (int i 0; i lstDataType.GetItemCount(); i){if ((lstDataType.GetItemText(i, 0) _name) (lstDataType.GetItemText(i, 1) _id)(index ! i)) {return true;}}return false; }void CSet::OnClose() {// TODO: 在此添加消息处理程序代码和/或调用默认值CDialogEx::OnCancel(); }void CSet::LoadConfig(CString inifile, CString _name) {lstDataType.DeleteAllItems(); // 清空数据定义列表lstMsgType.DeleteAllItems(); // 清空消息定义列表// 获取选择的文件的文件名txtName _name;/*从配置文件中读取一个数据意思是从main下的count读取一个数字int类型的数字GetPrivateProfileInt用来获取.ini文件里的内容最后的Int表示读取的数据类型Int就表示读取int类型String表示读取String类型也就是一个字符串GetPrivateProfileString(Lmain, Ltitle, L, buff, 0xFF, inifile);里的L是默认值GetPrivateProfileInt(Lmain, Lcount, 0, inifile);里的0是默认值默认值的意思如果读取不到数据就把默认值返回给我们*/int icount GetPrivateProfileInt(Lmain, Lcount, 0, inifile);wchar_t buff[0xFF];GetPrivateProfileString(Lmain, Ltitle, L, buff, 0xFF, inifile);txtTitle buff;GetPrivateProfileString(Lmain, Lhfile, L, buff, 0xFF, inifile);txtFolder buff;/*CString App;CString AppData;CString _Name;它是用来初始化字符串的利用 Foramt 函数把从.ini文件里获取的数据全部转成字符串*/CString App;CString AppData;CString _Name;for (int i 0; i icount; i){App.Format(LMessage_%d, i);GetPrivateProfileString(App, Lname, L, buff, 0xFF, inifile);_Name.Format(L%s, buff);lstMsgType.InsertItem(i, buff);GetPrivateProfileString(App, Ldefine, L, buff, 0xFF, inifile);lstMsgType.SetItemText(i, 1, buff);GetPrivateProfileString(App, Ltype, L, buff, 0xFF, inifile);lstMsgType.SetItemText(i, 2, buff);GetPrivateProfileString(App, Listxt, L, buff, 0xFF, inifile);lstMsgType.SetItemText(i, 3, buff);int lcount GetPrivateProfileInt(App, Lcount, 0, inifile);int datacount lstDataType.GetItemCount();for (int j 0; j lcount; j){AppData.Format(L%s_%d, _Name.GetBuffer(), j);lstDataType.InsertItem(datacount, _Name);GetPrivateProfileString(AppData, Lid, L0, buff, 0xFF, inifile);lstDataType.SetItemText(datacount, 1, buff);GetPrivateProfileString(AppData, Lname, L0, buff, 0xFF, inifile);lstDataType.SetItemText(datacount, 2, buff);GetPrivateProfileString(AppData, Lbackcolor, L0, buff, 0xFF, inifile);lstDataType.SetItemText(datacount, 3, buff);GetPrivateProfileString(AppData, Lfontcolor, L0, buff, 0xFF, inifile);lstDataType.SetItemText(datacount, 4, buff);GetPrivateProfileString(AppData, Lisui, L0, buff, 0xFF, inifile);lstDataType.SetItemText(datacount, 5, buff);GetPrivateProfileString(AppData, Listxt, L0, buff, 0xFF, inifile);lstDataType.SetItemText(datacount, 6, buff);GetPrivateProfileString(AppData, Listxtalone, L0, buff, 0xFF, inifile);lstDataType.SetItemText(datacount, 7, buff);}}UpdateData(FALSE); }void CSet::OnBnClickedButton5() {// 创建一个文件夹选择对话框//CFolderPickerDialog dialog;CFileDialog dialog(TRUE, NULL, NULL, 6, L);if (dialog.DoModal() IDOK) {txtFolder dialog.GetPathName();UpdateData(FALSE);} }
http://www.zqtcl.cn/news/51519/

相关文章:

  • 网站域名备案需要多长时间wordpress菜单背景6
  • 公司网站制作模板微信如何建商城网站
  • 做网站编辑心得安徽淮北做网站的公司
  • 百度权重工具专业网站优化推广
  • 网页设计与网站开发方向wordpress 登录查看
  • 国外高清人像图片素材网站北京望京企业网站建设
  • 上海网站设计专业团队成都建网站公司
  • 毕业设计网站开发的目的和意义1688阿里巴巴官方网站
  • 为网站做seo本科专业建设规划
  • vultr怎么做网站常用来做网站首页的文件名
  • 网站能看出建设时间吗网上书店网站建设规划书
  • 论坛网站策划清新太和做网站
  • wordpress 百度站长wordpress4.x版本
  • 2019怎么做网站赚钱一个公司可以做两个网站不
  • 网站备案怎么更改吗wordpress统计在线人数
  • 中航网站建设如何下wordpress
  • 农村服务建设有限公司网站中国最大的软件公司
  • 万维网网站域名续费合肥网站建设培训
  • 外贸网站推广软件济南快速建站模板
  • 外贸建站公司wordpress 创建文章
  • 网站地图 xml html门户网站构建
  • 塘沽集团网站建设郑州网站建设哪家强
  • 英文介绍做美食视频网站wordpress用什么系统好
  • 广西网站建设银行工信部域名查询
  • 如何快速创建网站司法网站建设运营情况
  • 收费下载网站cms服务专业公司网站建设服务
  • 网站建设网站建设的建立旅游公司网站多钱
  • 设计深圳2023西安网站seo技术
  • 给工厂做英文外贸网站张家界有实力seo优化费用
  • 医疗培训网站建设精品课程网站开发的创新点