对话框中添加一个CEditView,如何改变大小的问题

cr945211 2015-06-17 10:01:33
添加一个对话框(ProgramDlg),将ProgramWin(基于EditView类)放在该对话框中,如下代码

BOOL CProgramDlg::OnInitDialog()
{
CDialog::OnInitDialog();
CRect clientRect;
GetClientRect(&clientRect);
CView* pNewView;
pNewView = new CProgramWin;//ProgramWin为编辑区EditView
// Creation of the view window
afxTraceEnabled=FALSE;
if(! pNewView->Create(NULL, NULL, WS_VISIBLE | WS_CHILD, CRect(clientRect.left,clientRect.top,clientRect.right-180,clientRect.bottom+90), this, 1000))//编辑区的大小
{
TRACE0( "Failed view creation\n" );
}
afxTraceEnabled=TRUE;

pNewView->OnInitialUpdate();

return TRUE; // return TRUE unless you set the focus to a control

}

其中Create函数第四个参数决定了该编辑区的大小,而且是在对话框初始OnInitDialog()的时候创建的。现在的问题是我把改对话框放在悬浮框中,如下代码
int CWinProPane::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CDockablePane::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: 在此添加您专用的创建代码
CRect rectDummy;
rectDummy.SetRectEmpty();
//创建选项卡窗口:
if (!m_ProDlg.Create(IDD_PROGRAM,this))
{
TRACE0("未能创建输出选项卡窗口/n");
return -1;//未能创建
}
m_ProDlg.ShowWindow(SW_SHOW);
return 0;
}
void CWinProPane::OnSize(UINT nType, int cx, int cy)
{
CDockablePane::OnSize(nType, cx, cy);

// TODO: 在此处添加消息处理程序代码
//选项卡控件应覆盖整个工作区
m_ProDlg.SetWindowPos(this,-1,-1,cx,cy,SWP_NOMOVE|SWP_NOACTIVATE|SWP_NOZORDER);
m_ProDlg.ShowWindow(SW_SHOW);
}

IDD_PROGRAM是ProgramDlg对话框的ID。当悬浮框大小改变,由于对话框中的编辑区不是个控件,所以没办法用OnSize()来改变大小,所以悬浮框中有一部分没有被对话框或者说CEditView覆盖,看着很不好看。如果我改变创建的对话框的大小或者改变!pNewView->Create(NULL, NULL, WS_VISIBLE | WS_CHILD, CRect(clientRect.left,clientRect.top,clientRect.right-180,clientRect.bottom+90), this, 1000)中CRect时可以改变,但是不能随着悬浮框大小的改变而变化。
我的问题是,如何使对话框中的EditView可随着悬浮框改变大小啊??
...全文
174 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
worldy 2015-06-22
  • 打赏
  • 举报
回复
加ES_WANTRETURN风格
cr945211 2015-06-22
  • 打赏
  • 举报
回复
引用 7 楼 worldy 的回复:
	CRect rx(10,10,300,200);
	TxEdit.Create(WS_CHILD|WS_VISIBLE|WS_VSCROLL|ES_AUTOVSCROLL|ES_MULTILINE|WS_BORDER,rx,this,10082);
	rx.MoveToY(310);

	if(!TxEdView) TxEdView=new CEditView;
	TxEdView->Create(NULL,NULL,WS_CHILD|WS_VISIBLE|WS_VSCROLL|ES_MULTILINE|WS_BORDER,rx,this,10083);
CEdit TxEdit CEditView TxEdView* View类应该使用指针,否则..........................................
为什么enter后不能换行呢??
cr945211 2015-06-22
  • 打赏
  • 举报
回复
引用 9 楼 worldy 的回复:
加ES_WANTRETURN风格
谢谢
cr945211 2015-06-17
  • 打赏
  • 举报
回复
引用 1 楼 oyljerry 的回复:
MoveWindow等来调整大小
之前不可以改变大小的时候有滚动条,现在根据你说的方法
if(pNewView1)
	{
         CRect rect;  //获取控件变化前大小
         pNewView1->GetWindowRect(&rect);
         ScreenToClient(&rect);//将控件大小转换为在对话框中的区域坐标
         // cx/m_rect.Width()为对话框在横向的变化比例
        rect.left=rect.left*cx/m_rect.Width();//调整控件大小
        rect.right=rect.right*cx/m_rect.Width();
        rect.top=rect.top*cy/m_rect.Height();
        rect.bottom=rect.bottom*cy/m_rect.Height();
       pNewView1->MoveWindow(rect);//设置控件大小
	}
	  GetClientRect(&m_rect);//将变化后的对话框大小设为旧大小
,可以改变大小,但是没有滚动条了,在pNewView->Create函数中添加滚动条样式,程序只显示一行。是不是要自行添加OnVScroll()函数和OnHScroll()函数啊??
cr945211 2015-06-17
  • 打赏
  • 举报
回复
引用 2 楼 worldy 的回复:
CProgramDlg::onsize中,调用 pNewView->MoveWindow或者SetWindowPos
if(pNewView1)
	{
         CRect rect;  //获取控件变化前大小
         pNewView1->GetWindowRect(&rect);
         ScreenToClient(&rect);//将控件大小转换为在对话框中的区域坐标
         // cx/m_rect.Width()为对话框在横向的变化比例
        rect.left=rect.left*cx/m_rect.Width();//调整控件大小
        rect.right=rect.right*cx/m_rect.Width();
        rect.top=rect.top*cy/m_rect.Height();
        rect.bottom=rect.bottom*cy/m_rect.Height();
       pNewView1->MoveWindow(rect);//设置控件大小
	}
	  GetClientRect(&m_rect);//将变化后的对话框大小设为旧大小
用这种方法可以改变大小,但是没有滚动轴,是不是要在函数里面加OnVScroll()函数和OnHScroll()函数啊??
worldy 2015-06-17
  • 打赏
  • 举报
回复
CProgramDlg::onsize中,调用 pNewView->MoveWindow或者SetWindowPos
oyljerry 2015-06-17
  • 打赏
  • 举报
回复
MoveWindow等来调整大小
worldy 2015-06-17
  • 打赏
  • 举报
回复
	CRect rx(10,10,300,200);
	TxEdit.Create(WS_CHILD|WS_VISIBLE|WS_VSCROLL|ES_AUTOVSCROLL|ES_MULTILINE|WS_BORDER,rx,this,10082);
	rx.MoveToY(310);

	if(!TxEdView) TxEdView=new CEditView;
	TxEdView->Create(NULL,NULL,WS_CHILD|WS_VISIBLE|WS_VSCROLL|ES_MULTILINE|WS_BORDER,rx,this,10083);
CEdit TxEdit CEditView TxEdView* View类应该使用指针,否则..........................................
cr945211 2015-06-17
  • 打赏
  • 举报
回复
引用 5 楼 worldy 的回复:
CEditView创建的时候加ES_AUTOVSCROLL 及ES_MULTILINE 风格
pNewView1->Create(NULL, NULL, WS_VISIBLE | WS_CHILD |ES_AUTOVSCROLL|ES_MULTILINE 但是还是不可以,不能输入换行键也没有滚动条
worldy 2015-06-17
  • 打赏
  • 举报
回复
CEditView创建的时候加ES_AUTOVSCROLL 及ES_MULTILINE 风格
相关网站 7 设置窗口最大最小 7 设置窗口标题 7 去掉主菜单 7 修改应用程序图标 7 系统只能允许一个程序运行 7 在状态栏添加时间 8 研究调用存储过程 8 得到本机的IP地址 9 vc调用chm文件 10 最高窗口的实现 10 防止Edit的Password不保密 11 在同一系统显示GB字符和BIG5字符 12 改变颜色(整个窗体的控件) 13 改变工程表头栏 13 ◆如何找开一个DiaLog的窗口◆ 13 ◆得到系统设置的窗口颜色◆ 14 ◆如何让点下去的菜单成为V状态◆ 14 ◆如何调用WINDOWS的颜色板◆ 14 ◆如何产生一个MDI的主窗口◆ 15 ◆如何让一个文本控件显示出值◆ 15 ◆如何让一个控件显示出相应的值◆ 16 ◆在调试怎么样MESSAGEBOX一个数字◆ 16 ◆如何控制控件的焦点◆ 16 ◆如何对析构函数对象进行释放◆ 16 ◆如何关闭一个模态窗口◆ 17 ◆如何将一个提示的声音发到声卡上◆ 17 ◆如何得到打开exe的带的参数◆ 17 ◆如何在框架上建立一个工具条◆ 17 ◆如何生成一个主窗口下方的状态条◆ 18 ◆如何让Cscrollview控制其可以流动区域大小◆ 19 ◆MFC控件的一些基本控制方法◆ 19 ◆如何让一个数字型变量化为字符型变量◆ 19 ◆如何使用“拉动条”,“上下选择”◆ 19 ◆如何使用postmessage来异步触发某事件◆ 21 ◆如何使用Sendmessage来异步触发某事件◆ 22 ◆如何修改父类的相关控件属性◆ 22 ◆如何在程序得到控件的名◆ 22 ◆如何控制菜单的事件程序◆ 22 ◆如何使用控件的数据录入的控制属性◆ 23 ◆哪些函数是文档、视图相互处理用的◆ 23 ◆如何建立一个基于对话框一程序◆ 23 ◆如何建立一个线程◆ 24 ◆如何让窗口产生一个图标(从应用程序资源取出)◆ 24 ◆如何得到一个edit的录入的值◆ 24 ◆如何启动TIMER事件◆ 25 ◆如何使用ctrllist控件实现表格◆ 25 ◆如何从INI文件得到值◆ 25 ◆如何将图标文件写到窗口◆ 26 ◆如何得到本机的IP地址◆ 26 ◆如何使用全局变量◆ 26 ◆如何让一个字符加上回车、换行◆ 26 ◆如何定义、使用结构◆ 26 ◆如何在任意程序显示MessageBox◆ 27 ◆如何在程序判断出debug状态◆ 27 ◆当对话框一个滚动条是,当滚动滚动条时的消息控制函数◆ 27 ◆将一个CWnd指针转换成一个控件ID(整数)注意用GetDlgItem()函数是从一个控件ID转换成一个CWnd的指针◆ 28 ◆如果在对话框自定义一个消息的方法,假设对话框名为CXX◆ 28 ◆消息传递◆ 29 ◆在一个函数引用另外的一个对话框◆ 29 ◆全局函数的申明问题◆ 29 ◆在应用程序*APP.CPP的InitInstance()的事件◆ 29 ◆给执行文件加一个图标◆ 30 ◆如何在全局函数通过传入的窗口句柄操作窗口◆ 30 ◆如何使桌面文字背景透明?◆ 30 ◆怎样才能在VC里产生一个唯一的字符串◆ 31 ◆如何隐藏进程(在系统状态栏和进程列表里不可见)◆ 31 ◆如何得到一个确定大小的视?◆ 31 ◆如何实现点击窗口任意地方拖动窗口?◆ 32 ◆如何在启动时阻止MDI应用程序创建一个新文档?◆ 33 ◆如何在多文档MFC程序制作独立的File|New菜单?◆ 33 ◆如何检测视是否处于分割状态?◆ 34 ◆如何使程序保持极小状态?◆ 34 ◆如何确定当前进程实例是否为唯一实例?◆ 35 ◆如何向一个文档附加多个视?◆ 35 ◆如何获得文件的图标、属性、大小、类型等参数?◆ 36 ◆如何得到鼠标下面的窗口?◆ 37 ◆设置鼠标的形状◆ 38 ◆在对话框设置编辑EDIT的值◆ 38 1. 如何获取应用程序的实例句柄? 38 2. 如何通过代码获得应用程序主窗口的指针? 38 3. 如何在程序获得其他程序的图标? 38 4. 如何编程结束应用程序?如何编程控制windows的重新引导? 39 5.怎样加载其他的应用程序? 39 6. 确定应用程序的路径 39 7. 获得各种目录信息 40 8. 如何自定义消息 40 9. 如何改变窗口的图标? 40 10. 如何改变窗口的 缺省风格? 40 11. 如何将窗口居显示? 41 12. 如何让窗口和 MDI窗口一启动就最大化和最小化? 41 13. 如何使程序保持极小状态? 41 14. 如何限制窗口的 大小? 41 15. 如何使窗口不可见? 41 16. 如何使窗口始终在最前方? 41 17、如何创建一个字回绕的CEditView 42 18、通用控件的显示窗口 42 19、移动窗口 42 20、重置窗口的大小 42 21、如何单击除了窗口标题栏以外的区域使窗口移动 43 22、如何改变视窗的背景颜色 43 23、如何改变窗口标题 44 24、如何防止主框窗口在其说明显示活动的文档名 44 25、如何获取有关窗口正在处理的当前消息的信息 45 26、如何创建一个不规则形状的窗口 45 27、如何在代码获取工具条和状态条的指针 47 28、如何使能和禁止工具条的工具提示 47 29、如何设置工具条标题 48 30、如何创建和使用无模式对话框 48 31、如何在对话框显示一个位图 49 32、如何改变对话或窗体视窗的背景颜色 49 33、如何获取一个对话控件的指针 50 34、如何禁止和使能控件 50 35、如何改变控件的字体 50 36、如何在OLE控件使用OLE_COLOR数据类型 51 37、在不使用通用文件打开对话的情况下如何显示一个文件列表 51 38、为什么旋转按钮控件看起来倒转 51 39为什么旋转按钮控件不能自动地更新它下面的编辑控件 52 40、如何用位图显示下压按钮 52 41、如何一个创建三态下压按钮 52 42、如何动态创建控件 52 43、如何限制编辑框的准许字符 53 44、如何改变控件的颜色 54 45、当向列表框添加多个项时如何防止闪烁 55 46、如何向编辑控件添加文本 55 47、如何访问预定义的GDI对象 55 48、如何获取GDI对象的属性信息 56 49、如何实现一个橡皮区矩形 56 50、如何更新翻转背景颜色的文本 58 51、如何创建一个具有特定点大小的字体 58 52、如何计算一个串的大小 59 53、如何显示旋转文本 59 54、如何正确显示包含标签字符的串 60 55、串太长时如何在其末尾显示一个省略号 60 56、如何快速地格式化一个CString对象 61 57、为什么即使调用EnableMenuItem菜单项后,菜单项还处于禁止状态 61 58、如何给系统菜单添加一个菜单项 61 59、如何确定顶层菜单所占据的菜单行数 62 60、在用户环境如何确定系统显示元素的颜色 62 问:如何控制窗口框架的最大最小尺寸? 63 问:如何改变窗口框架的颜色? 63 问:如何将应用程序窗口置于屏幕正? 64 问:VC6.0对VC5.0的兼容性? 64 问:打印和打印机的问题? 64 问:CRichEditCtrl滚动条的问题? 65 问:从数据库读大于32k的内容? 65 问:如何获得CRichEditCtrl字符的位置? 66 问:如何限制mdi子框架最大化时的大小? 66 问:如何切换视口而不破坏它们? 66 问:改变列表控制时发生闪烁现象? 68 问:处理列表控件可见项的问题? 68 问:产生线程的问题? 68 问:CFile使用了缓冲区吗? 69 问:DAO的密码? 69 问:如何知道CListBox什么时候滚动了? 70 问:视口的不活动性如何处理? 70 问:如何使用COleClientItem的IDispatch接口? 70 问:关于用户自定义的消息使用? 71 问:在打开一个文档时退出? 71 问:在CListCtrl控件多选择项的删除? 71 问:工作线程的登录状态? 72 问:如何控制菜单的大小? 72 问:改变LVIS_SELECTED的状态颜色? 73 问:如何只存储文档的某一部分? 73 问:保存工具条菜单有bug吗? 73 问:Tip of the day的bug 73 问:如何让我的mfc应用程序可以在最上面? 74 问:如何增加视图ActiveX控件的事件处理函数? 75 问:如何创建一个动态的Tree控件? 75 问:SDI程序开始时不打开文档? 75 问:List控件整栏选择? 75 问:如何重载MRU文件? 76 问:CImageList控件图象橙色被显示为黄色? 76 问:无法正确改变应用程序的图标? 78 问:工具条状态的问题? 78 问:在SDI应用程序使用Active控件? 79 问:有RichEdit控件的对话框无法正常显示? 79 问:DLL的模板成员函数? 79 问:CFormView的上下文帮助? 80 问:CArchive类的WriteObject函数问题? 80 问:RegisterWindowMessage的BroadcastSystemMessage如何处理? 80 问:CListCtrl选择变化时如何获得通知? 81 问:如何向ATL-COM对象传送一个数组? 81 问:如何选择CTreeCtrl的节点文本进行编辑? 82 问:如何改变默认的光标形状? 82 问:如何用键盘滚动分割的视口? 83 问:如何在线程处理状态条? 83 问:如何阻止WINDOWS关闭? 83 问:如何使一个按钮Disable? 83 问:怎样从MFC扩展动态链结库(DLL)显示一个对话框? 84 问:想隐藏用户界面怎么办? 85 问:如何实现SDI与MDI的转换? 85 问:CDC的竖排文本? 86 问:如何激活变灰的弹出菜单? 86 问:线程消息? 87 问:TreeCtrl控制的显示速度太慢? 87 怎样使窗口总是浮现在最上面? 88 改变拖放时的光标外形? 89 如何定位到最新的记录上? 90 MVC和Doc-View? 90 被禁止(Disable)的控件如何改变其文本或背景色? 90 有ODBC的查找函数吗? 91 多个MRU菜单的问题 91 校验框类问题 93 CFormView类的Fold按钮 94 视的背景色 94 隐藏控件台程序 94 修改SDI窗口标题 95 焦点问题 95 从一个OCX调用另一个OCX的方法。 95 得到视 96 字符转化时间 96 二进制还是文本方式? 99 发送消息 99 怎样知道菜单运行时的状态 99 DLL编译出错 100 通用控件的显示窗口 100 如何禁止和使能控件 100 如何在OLE控件使用OLE_COLOR数据类型 100 在不使用通用文件打开对话的情况下如何显示一个文件列表 100 为什么旋转按钮控件看起来倒转 101 为什么旋转按钮控件不能自动地更新它下面的编辑控件 101 如何动态创建控件 101 如何显示旋转文本 101 在TreeList使用Edit功能 102 TreeList control使用check box 103 有关属性对话框(property sheet )的几个提示 108 在MFC加入"这是什么?"的帮助提示 111 精通工具条 112 如何改变视窗的背景颜色 112 为MFC应用程序添加全屏幕显示功能 112 VC常用数据类型使用转换详解 114 用Visual C++操作INI文件 117 单文档加入背景图 119 更新窗体方法 120 更改窗口控件的能动和不能动(以按钮控件为例) 120 窗口响应键盘事件 120 密码框输入受保护 121 最高窗口的实现 122 实现窗口动态写入汉字和改变汉字颜色形状 123

15,980

社区成员

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

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