各位大侠,帮帮忙啊,我是个菜菜菜鸟!我建了以个MFC的对话框A,在A上添加了以个BUTTON 按钮和一个Tab Control 控件,tab control 调用了三个对话框作为子页面,已经可以了,现在问题是:在其中的3个子页面里分别加了一个EDIT 控件,现在想通过A 上的button按钮保存三个Edit 的值,怎么获取这几个值啊???
解决方案 »
- 如何获取电脑屏幕的物理长与宽?
- 关于::SendMessage(hWnd,LVM_GETITEM,(WPARAM)0,(LPARAM)&lvi)的问题
- 恭贺英特尔多核计算技术新版开张 版主招募中
- 关于*.swf(flash文件)的抽帧问题,请各位路过的高手进来看一看,谢谢!
- 在WIN2003系统下,涵数RegOpenKeyEx()的出错后,用GetLastError()得到的码是0,0是正常执行完了.为什么呢?
- 打开一个工程时出现的问题~
- 在DLL的dialog 中如何使用 richedit等 activex 控件?? help
- 我用的是Window2000,我想写一个程序可以点击按钮禁用网络,点击另一个按钮可以启用网络
- 如何吧int(或者UINT)转换成CString
- 哪里有FLASH反编译软件下载???有高分向送。
- 哪位朋友可以给一个使用CMemDC绘制位图的示例?
- CMemDC怎么用???
class A : public CDialog
{
protected:
Tab Control 控件;
Tab页面1的指针;
Tab页面2的指针;
Tab页面3的指针; void OnButton(...)
{
Tab页面1的指针->GetDlgItem(edit的ID)->GetWindowText(...);
Tab页面2的指针->GetDlgItem(edit的ID)->GetWindowText(...);
Tab页面3的指针->GetDlgItem(edit的ID)->GetWindowText(...);
}
}
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
CProduct_p1 *cp1 ; //子页面 1 的类指针
CProduct_p2 *cp2 ; // 子页面 2 的类指针
CProduct_p3 *cp3 ; //子页面 3 的类指针void CProduct_set::OnBnClickedButton1()
{
CString yy ;
cp1->GetDlgItem(IDC_EDIT1)->GetWindowTextW(yy);//IDC_EDIT1是子页面1的一个控件ID ,执行到这就报错!
}到这就报错!
PG2000.exe 中的 0x78aaadcc (mfc90ud.dll) 处未处理的异常: 0xC0000005: 读取位置 0xccccccec 时发生访问冲突 中断还是继续?怎么回事啊 ???
: CDialog(Dialog1::IDD, pParent)
{
//{{AFX_DATA_INIT(Input_Canshu)
m_edit_1 = 0;
//}}AFX_DATA_INIT
}int Dialog1::m_edit_1 = 0;(注意两次初始化)2.响应函数(在Dialog1.cpp下)void Dialog1::OnOK()
{
// TODO: Add extra validation here
UpdateData(true);
CDialog::OnOK();
}3.定义静态变量(在Dialog1.h下修改一下即可) static int m_edit_1;4.传参(在A.cpp里)void A::On(这个Tab的响应函数是什么我不知道,自己定吧,在这里改就行)()
{
// TODO: Add your command handler code here
Dialog1 Dialog1;
if(Dialog1.DoModal() == IDOK)
{
number=Dialog1::m_edit_1;
}
}所传参数应定义与A.h的public里。
赋值? 怎么赋值?我是在按你的方法定义看指针,然后就是指针取变量的内容!请你再赐教啊,就是每个页面一个EDIT 就是要取这三个EDIT里面的 值,通过一个按钮把三个值保存起来 。我这个问题还是没解决啊!急!
{
// TODO: Add extra validation here
UpdateData(true);CDialog::OnOK();
}
不明白你放在这干嘛? 所有子页面里的值我都是需要在对话框上的一个按钮BUTTON上取得并保存起来!大哥 能不能再指教下,小弟真的是很菜!
另外我后面那个就是提醒你需要UpdateData来给EDIT里的内容更新和赋值
你输入之后直接这样更新一下也行,但是必须要有这一步。
void CProduct_set::OnBnClickedButton1()//CProduct_set是对话框A的类
{
// TODO: 在此添加控件通知处理程序代码
UpdateData(true);
CString FileName( "./test.ini ");
CString yy ;
cp1->GetDlgItem(IDC_EDIT1)->GetWindowTextW(yy); // CP1是子页面1 的类指针
WritePrivateProfileString(_T("基本设定"),_T("X间距"),yy,FileName);
UpdateData(false);
}#pragma once
#include "afxcmn.h"
#include "Product_p1.h"
#include "Product_p2.h"
#include "Product_p3.h"
#include "Product_p4.h"
#include "Product_p5.h"
// CProduct_set 对话框
class CProduct_set : public CDialog
{
DECLARE_DYNAMIC(CProduct_set)public:
CProduct_set(CWnd* pParent = NULL); // 标准构造函数
virtual ~CProduct_set();// 对话框数据
enum { IDD = IDD_Dlg_Product };protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
CProduct_p1 *cp1 ; // 这里定义了三个子夜面类 指针;
CProduct_p2 *cp2 ;
CProduct_p3 *cp3 ; DECLARE_MESSAGE_MAP()
public:
afx_msg void OnTcnSelchangeTabproduct(NMHDR *pNMHDR, LRESULT *pResult);
afx_msg void OnBnClickedOk();
CTabCtrl m_tabctrl;
CProduct_p1 m_page1;
CProduct_p2 m_page2;
CProduct_p3 m_page3;
CProduct_p4 m_page4;
CProduct_p5 m_page5;
afx_msg void OnShowWindow(BOOL bShow, UINT nStatus);
afx_msg void OnBnClickedCancel();
afx_msg void OnBnClickedButton1();
};
编译没问题,但是一执行BUTTON 就出错,如果我把程序改下:void CProduct_set::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
UpdateData(true);
CString FileName( "./test.ini ");
CString yy ;
CProduct_p1 as; //类1 对象
yy=as.m_x_size ; // m_x_size 是子页面1 里edit 的value 变量
WritePrivateProfileString(_T("基本设定"),_T("X间距"),yy,FileName);
UpdateData(false);
}
编译没问题也不报错,执行BUTTON 也没问题,但是得的数据时空的,YY没有返回值! 请各位大哥指点下,怎么就是不行啊?
我就是希望几个页面的edit里面的值可以在一个按钮下同时保存下来,如果在每一个子页面里面设个按钮保存,这个很很麻烦,很多子页面的! 请大侠多指点下小弟啊!!