关于mfc中窗口分割后的问题

huaxiawp 2014-05-07 02:23:35
本人目前做一款液晶拼接的软件,建立一个单文档工程,左边对话框(加的一些输入命令框,按钮),右边视图,这款软件实现的目的是就是在命令行输入2*2,窗口变成2*2的窗口,同样,输入4*4命令,实现4*4的窗口。我不知道我现在用mfc切分窗口的方法能不能实现个效果,如果不能,请问用什么方法实现?
...全文
486 81 打赏 收藏 转发到动态 举报
写回复
用AI写文章
81 条回复
切换为时间正序
请发表友善的回复…
发表回复
huaxiawp 2014-05-16
  • 打赏
  • 举报
回复
还是要感谢你
schlafenhamster 2014-05-16
  • 打赏
  • 举报
回复
14 00 07 00 00 02 63 0X, 14 00 07 00 00 02 64 0Y 。 不明白,请另开一贴。 现在的 回复太多, 不方便。 我 不会 再 回复了。
huaxiawp 2014-05-16
  • 打赏
  • 举报
回复
那里面的数是16进制数
huaxiawp 2014-05-16
  • 打赏
  • 举报
回复
大侠,现在新的问题又来了,命令又改了,改成字符串了,之前输入的是x,y,现在x,y对应的命令为14 00 07 00 00 02 63 0X, 14 00 07 00 00 02 64 0Y 其中这两串命令中的X,Y相当于输入的x,y这个在原来基础上怎么实现
schlafenhamster 2014-05-15
  • 打赏
  • 举报
回复
这样会报错 ? 那就断点到 CDialog::OnOK(); } 看看 这2个值是不是 收入值
huaxiawp 2014-05-15
  • 打赏
  • 举报
回复
afxDump << m_X << ";" << m_Y << "\n";
怎么用,这样会报错,上网查说加头文件afx.h 但是也不行
schlafenhamster 2014-05-15
  • 打赏
  • 举报
回复
void CTestDlg1::OnOK() { // TODO: Add extra validation here afxDump << m_X << ";" << m_Y << "\n"; CDialog::OnOK(); }
huaxiawp 2014-05-15
  • 打赏
  • 举报
回复
void CTestDlg1::OnOK() { // TODO: Add extra validation here // CTestDlg1 dlg; //modified by Alex 0514 /* if(dlg.DoModal()==IDOK) // 返回 IDOK 或者 IDCANCEL //{ CMainFrame *pMain = (CMainFrame*)AfxGetMainWnd(); pMain->ChangSplit(dlg.m_X,dlg.m_Y); // } //else // { // } */ // dlg.SetValue(m_editValue); //add new code by Alex0514 CDialog::OnOK(); } 这是我昨天没成功之前改的,现在没动过
schlafenhamster 2014-05-15
  • 打赏
  • 举报
回复
响应资源 CTestDlg1:: IDOK
huaxiawp 2014-05-15
  • 打赏
  • 举报
回复
你是不是 改了 OnOK ? 我没改动OnOk,你说的OnOk是新建对话框的里面自动生成的id号吧,我没动啊
schlafenhamster 2014-05-15
  • 打赏
  • 举报
回复
BOOL CTestDlg1::OnInitDialog() 你是不是 改了 OnOK ? 其实 在 OnOK 中 应该 检查 这 2个 值 ,范围 是不是 对 你 在 OnOK 里 查查 看。
huaxiawp 2014-05-15
  • 打赏
  • 举报
回复
BOOL CTestDlg1::OnInitDialog() { CDialog::OnInitDialog(); // TODO: Add extra initialization here m_X=2; m_Y=2; UpdateData(FALSE); // return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } 这个是加在CTestDlg1.cpp里面的吧?我加了之后,好像输入初始值x,y变为2,2之后,之后无论输入什么命令都是2*2的窗口 这应该是局部变量初始化,怎么变成全局变量初始化?
schlafenhamster 2014-05-15
  • 打赏
  • 举报
回复
检查m_X;;;;;;;m_Y 范围的代码如下: 允许 1到6 void CTestDlg1::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CTestDlg1) DDX_Text(pDX, IDC_EDIT1, m_X); //add new code by Alex0513 DDV_MinMaxInt(pDX,m_X,1,6); DDX_Text(pDX, IDC_EDIT2, m_Y); DDV_MinMaxInt(pDX,m_Y,1,6); //}}AFX_DATA_MAP } 但 1,1, 还是要自己检查。
schlafenhamster 2014-05-15
  • 打赏
  • 举报
回复

#if !defined(AFX_TESTDLG1_H__36273751_3DE5_4B1F_9453_EFBA7CF6CAB9__INCLUDED_)
#define AFX_TESTDLG1_H__36273751_3DE5_4B1F_9453_EFBA7CF6CAB9__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// TestDlg1.h : header file
//

/////////////////////////////////////////////////////////////////////////////
// CTestDlg1 dialog

class CTestDlg1 : public CDialog
{
// Construction
public:
	CTestDlg1(CWnd* pParent = NULL);   // standard constructor

// Dialog Data
	//{{AFX_DATA(CTestDlg1)
	enum { IDD = IDD_DIALOG1 };
	int m_X;
	int m_Y;
	//}}AFX_DATA


// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CTestDlg1)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
	//}}AFX_VIRTUAL

// Implementation
protected:

	// Generated message map functions
	//{{AFX_MSG(CTestDlg1)
	virtual BOOL OnInitDialog();
	virtual void OnOK();
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_TESTDLG1_H__36273751_3DE5_4B1F_9453_EFBA7CF6CAB9__INCLUDED_)
//
// TestDlg1.cpp : implementation file
//

#include "stdafx.h"
#include "MainFrm.h" // add new code by Alex0513
#include "YaChangeSplit.h"
#include "TestDlg1.h"


#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CTestDlg1 dialog


CTestDlg1::CTestDlg1(CWnd* pParent /*=NULL*/)
	: CDialog(CTestDlg1::IDD, pParent)
{
	//{{AFX_DATA_INIT(CTestDlg1)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
}


void CTestDlg1::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CTestDlg1)
	DDX_Text(pDX, IDC_EDIT1, m_X); //add new code by Alex0513
	DDX_Text(pDX, IDC_EDIT2, m_Y);
	//}}AFX_DATA_MAP
	
}


BEGIN_MESSAGE_MAP(CTestDlg1, CDialog)
	//{{AFX_MSG_MAP(CTestDlg1)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CTestDlg1 message handlers
BOOL CTestDlg1::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	m_X=2;
	m_Y=2;
	UpdateData(FALSE);
//
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CTestDlg1::OnOK() 
{
	// TODO: Add extra validation here
	CDialog::OnOK();
#ifdef _DEBUG
	afxDump << m_X << ";" << m_Y << "\n";
#endif
}

huaxiawp 2014-05-15
  • 打赏
  • 举报
回复
就是一个对话框,一句两句也说不清楚,也许是我的操作有问题吧 这样吧 还是上传到我的资源吧,麻烦你帮我检查下,3Q
schlafenhamster 2014-05-15
  • 打赏
  • 举报
回复
初始化的时候有: m_X=2; m_Y=2; 没问题 怎么到 这里 又 没有定义了 ? 不是 同一个 对话框 ?
huaxiawp 2014-05-15
  • 打赏
  • 举报
回复
貌似出现m_X cXXX0017:error:symbol"m_X" not found 没有你说的那种出现 x = 2,y = 2
schlafenhamster 2014-05-15
  • 打赏
  • 举报
回复
不要Dump 也可以 ,加 watch 窗口里 void CTestDlg1::OnOK() { // TODO: Add extra validation here m_X=m_X; m_Y=m_Y; //afxDump << m_X << ";" << m_Y << "\n"; CDialog::OnOK(); }
huaxiawp 2014-05-15
  • 打赏
  • 举报
回复
引用 70 楼 schlafenhamster 的回复:
怎么说不明白: void CTestDlg1::OnOK() { // TODO: Add extra validation here afxDump << m_X << ";" << m_Y << "\n"; CDialog::OnOK(); } 响应 OnOK 第一次:afxDump << m_X << ";" << m_Y << "\n"; 应该看到 x y = 2 2 等到: CDialog::OnOK(); 后 因为 他 调用了 UpdateData(TRUE), 所以 把 x y 从 edit 里取出来 了 这就是 用户 输入的 值 。 你 的 限制 就放在这里。
//你的意思就是调试,我把断点设置在void CTestDlg1::OnOK() 你加的 afxDump << m_X << ";" << m_Y << "\n"; 调试就通不过,出现: error C2065: 'afxDump' : undeclared identifier TestDlg1.cpp(88) : error C2297: '<<' : illegal, right operand has type 'char [2]' 这样的错误,那还怎么看x,y的值呢
schlafenhamster 2014-05-15
  • 打赏
  • 举报
回复
怎么说不明白: void CTestDlg1::OnOK() { // TODO: Add extra validation here afxDump << m_X << ";" << m_Y << "\n"; CDialog::OnOK(); } 响应 OnOK 第一次:afxDump << m_X << ";" << m_Y << "\n"; 应该看到 x y = 2 2 等到: CDialog::OnOK(); 后 因为 他 调用了 UpdateData(TRUE), 所以 把 x y 从 edit 里取出来 了 这就是 用户 输入的 值 。 你 的 限制 就放在这里。
加载更多回复(61)

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧