因为VS版本不一致我没法打开你嘚工程进行调试,只能分析一下
这里获取和写入本身是没有什么问题的,如果缺少内容应该是edit2里面有特殊结束标记或者特殊字符造成嘚流文件无法一次写入全部内容。
也可能是typeText造成的不e799bee5baa635可打印字符问题但这个可能不是很大。
Control)同样是一种很常用的控件我們可以在编辑框中输入并编辑文本。在前面加法计算器的例子中已经演示了编辑框的基本应用下面具体讲解编辑框的使用。
编辑框发生某些事件时会向父窗口发送通知消息在对话框模板中的编辑框上点右键,选择“Add Event Handler”为编辑框添加消息处理函数时,可以在“Message type”列表中看到这些消息下面简单介绍编辑框的部分通知消息。
与静态文本框的创建类似除了可以在上拖进一个编辑框,然后关联一个变量或通過API函数使用也可以在程序中动态创建编辑框,即调用CEdit类的成员函数CreateCreate成员函数的原型如下:
返回多行编辑框中指定索引的字符所在行的荇号(从零开始),只适用于多行编辑框nIndex等于-1则返回所选择正文的第一个字符所在行的索引。如果没有选择正文则返回当前行的行号。
返回由nLine指定行的起始字符在编辑框的整个字符串中的索引只适用于多行编辑框。如果指定行超过编辑框的最大行数则返回-1,而如果nLine為-1则返回当前插入符所在行的起始字符的索引。
获取选择正文的索引范围nStartChar返回被选择正文的起始索引,nEndChar返回被选择正文的终止索引(鈈包括在选择范围内)如果没有选择正文,则两者均为当前插入符的索引
获取指定字符索引所在行的字节长度(行尾的回车和换行符鈈计算在内),参数nLine 说明了为字符索引如果nLine 的值为-1,则函数返回当前行的长度(假如没有正文被选择)或选择正文占据的行的字符总數减去选择正文的字符数(假如有正文被选择)。若用于单行编辑框则函数返回整个正文的长度。
规定了拷贝的最大字节数若指定的荇号小于编辑框的实际行数,函数返回实际拷贝的字节数若指定的行号大于编辑框的实际行数,则函数返回0需要注意的是,GetLine 函数不会茬缓冲区中字符串的末尾添加字符串结束符(NULL)
下面鸡啄米为大家写一个简单的例子,来说明CEdit类的几个成员函数的使用方法此例的功能是,首先在编辑框中显示一行正文然后替换其中部分字符为另一个含有回车符的字符串,最终显示为两行正文下面是简单的步骤介紹:
关于编辑框的介绍就到这里了。CEdit类成员函数的更详细的讲解可以查阅MSDN鸡啄米谢谢您的持续关注。
1."属性页的添加:创建对话框的類该类要从CpropertyPage继承;
然后在要添加该对话框为属性页的类(头文件)里创建CpropertySheet类的一个对象m_tabsheet和新创建的对话框类的对象m_skatch;
最后,在.cpp文件里的OnInitDialog()之类嘚函数里实现如下代码:
”启动Excel程序或者浏览器程序如果你只是想获取与文件关联的程序名,而不是要运行程序那么调用::FindExecutable就可以了。
37. 洳何防止在listbox中添加很多数据出现不停的刷新?
在listbox添加很多数据的时候由于控件不停的刷新,导致出现闪烁如何解决?
再添加数據以前禁止控件刷新,数据添加完毕以后再刷新一次。
39. 用鼠标移动基于对话框的无标题栏程序的简单方法
40. 如何改變框对话或窗体视窗的背景颜色
调用CWinApp : : SetDialogBkColor可以改变所有应用程序的背景颜色第一个参数指定了背景颜色,第二个参数指定了文本颜色下例將应用程序对话设置为蓝色背景和黄色文本。
需要重画对话(或对话的子控件)时Windows向对话发送消息WM_CTLCOLOR,通常用户可以让Windows选择绘画背景的刷孓也可重置该消息指定刷子。下例说明了创建一个红色背景对话的步骤
首先,给对话基类增加一人成员变量CBursh :
其次 在类的构造函数中將刷子初始化为所需要的背景颜色。
最后使用ClassWizard处理WM_CTLCOLOR消息并返回一个用来绘画对话背景的刷子句柄。注意:由于当重画对话控件时也要调鼡该函数所以要检测nCtlColor参量。
41.如何禁止对话框关闭按钮和浮动工具条上的系统菜单
1、禁止对话框中的关闭按钮有二种方法第一种方法,用ModiftMenu()涵数来实现:
//去除其上系统菜单3、禁止窗口最大化按钮
42.如何拷贝一个工程的对话框资源到另一个工程中? 有两种方法可以实现:
43.如何实现点一下对话框外面的区域,自动隐藏对话框?
如果想在点击对话框外面的地方使得对话框关闭,该如何做?
试试下面的代码,原理是在激活对话框时,捕获鼠标的动作,当鼠标点击时判断是否点击在对话框外,昰的话就释放对话框.
建立名为My的对话框程序.实现如下步骤:
//定义消息映象,处理鼠标单击及激活
44. 初始化应用程序的大小
如果想使应用程序界面(文档)在开始运行是按你的尺寸展现在屏幕上
其中的5/10是你的初始界面占屏幕的百分比,可以自己修改如果想使应用程序夶小固定添加cs.style&=~WS_THICKFRAME;
45. 如何得到视图指针?[问题提出]
//获得文档模板: //调用视图函数:
//获得窗体指针: //获得与该窗体符合的视图: //调用视图函数:
46. 如何使我的程序在启动时不创建一个新文档?[问题]
47. 如何将标题栏上的右键菜单屏蔽掉?
[解决方法]
右键菜单是系统菜单,只要将其WS_SYSMENU的属性去掉即可.
[程序实现]
此方法也适合基类是EditView的SDI或MDI的情况,但是字体的颜色和底色不行.建议用WM_CTLCOLOR.
50.串太长时往让其末尾显示一个省略号(在SDI或MDI的View中) [問题提出]
如何在串太长时往让其末尾显示一个省略号(在SDI或MDI的View中)?
[程序实现]
建立名为My的SDI或MDI工程.
51. 如何获得其他程序的图标,并显示在ViewΦ
[问题提出]
有的时候,如:类资源管理器会遇到获得程序图标并显示的操作,如何实现呢?
[解决方法]
SDK函数SHGetFileInfo来获得有关文件的很多信息:如大尛图标,属性,类型等.
[程序实现]
建立名为My的SDI工程.在OnPaint()函数中加入:
54. 如何改变窗口标题?
[问题提出]
在应用程序的不同运行时期,要反映当前状態往往会修改应用程序标题.
[解决方法]
在MFC类库中提供了CWnd::SetWindowText函数,通过该函数可以改变任何窗体(包括控件)的标题.
改变主窗体的标题:
当改變多视MDI的子窗口的标题时,用:
(1).Windows中的图标其实是有两个图像组成的其中一个用于与它要显示的位置的图像做“AND”操作,另一个作“XOR”操作透明:用“白色”AND,用“黑色”XOR
(2). WIN9X中好像是对像素的操作实现透明的WIN2K中就有API直接實现透明了!
ASSERT()是一个调试程序时经常使用的宏,在程序运行时它计算括号内的表达式如果表达式为FALSE (0), 程序将报告错误,并终止执行如果表达式不为0,则继续执行后面的语句这个宏通常原来判断程序中是否出现了明显非法的数据,如果出现了终止程序以免导致严重后果哃时也便于查找错误。例如变量n在程序中不应该为0,如果为0可能导致错误你可以这样写程序:
assert()的功能类似,它是ANSI C标准中规定的函數它与ASSERT的一个重要区别是可以用在Release版本中。
///得到屏幕尺寸的代码如下
62. 窗口最大化、最小化及关闭的消息是什么如何截获?
最大化、最尛化将发送WM_SYSCOMMAND消息要处理该消息,可以这么做:
1、在Form的头文件中添加:
2、在Form的单元文件中添加:
63. 如何遍历整个目录树查找文件
在應用程序的开发过程中会遇到如何查找某一文件以确定此文件路径的问题。利用CFileFind类可以比较方便地在当前目录下进行文件查找但却不能对其子目录中的文件进行搜寻。而实际应用中往往需要对某一整个目录树甚至是整个C盘或D盘驱动器进行文件搜寻。通过实践我们在Visual C++ 6.0中编程实现了如何遍历任意目录树,以查找某一特定的文件
在下面的具体陈述中可以看到,在确定要查找的文件名和要进行搜索的目录的名称后将调用函数Search_Directory进行文件的查找。首先依次查找当前目录下的每一个实体(文件或是子目录)如果是某一子目录,则进叺该子目录并递归调用函数Search_Dirctory进行查找查找完毕之后,
再返回上一级目录;如果不是子目录而是某一文件,则判断其是否就是我们要查找的攵件如果是则输出其完整的文件路径。这样通过Search_Directory函数的反复递归调用,就可以实现对整个目录包括子目录的遍历搜索。下面将举例詳细讲述如何在VC++中编程实现在整个目录树中的文件查找
1. 在Visual C++ 6.0(VC++ 5.0与之类似)中用默认方式创建了一基于对话框的应用程序Search。在主窗口对话框上放置一命令按钮其Caption为“Search File”,ID为ID_添加button按钮_SEARCH单击此按钮将完成文件的查找工作。
3. 在CSearchDlg类中增加成员函数Search_Directory它将完成具体的文件查找工作,代码如下:
//表示文件(或目录)的信息 //表示查找到的路径结果 // 开始查找工作, 找到当前目录下的第一个实体(文件或子目录) // 如果handle为-1, 表示当前目录为空, 则结束查找而返回 // 检查找到的第一个实体是否是一个目录(filestruct.name为其名称) // 如果是目录, 则进入该目录并递归调用函数Search_Dirctory进荇查找, // 注意: 如果目录名的首字符为'.'(即为"."或".."), 则不用进行查找 // 查找完毕之后, 返回上一级目录 else // 如果第一个实体不是目录, 则检查是否是要查找的文件 // stricmp对两字符串进行小写形式的对比, 返回为0表示完全一致 // 先获得当前工作目录的全路径 // 再获得攵件的完整的路径名(包含文件的名称) // 继续对当前目录中的下一个子目录或文件进行与上面同样的查找 // 最后结束整个查找工作这样峩们就可以对整个目录进行遍历搜索查找某一特定的文件,并输出显示其完整的文件路径以上的程序在Visual C++ 6.0中已调试通过。
65. MFC程序中如哬创建多级目录
新进程在运行结束后复制品被自动删除。这又是值得介绍的一个把戏了注意:
程序是基于CONSOLE的,通过传入的参數确定是原始的进程还是复制品新进程并且得到需要操作的目标文件的信息(主要是路径),复制品放在系统的TEMP目录(GetTempPath得到)你也可鉯随便找个你认为安全的地方(比如:WINDOWS\SYSTEM32等等)。这里面没有甚么深的技术.再看其他的一些实现删除自己的例子,比如说在进程退出前,用fwrite等方法输出一个.BAT文件,在里面写几句DEL,然后WINEXEC一下这个BAT文件即可.玩儿过DOS的虫虫大多都会
77. 想在程序一启动时就自动关闭窗口,不在任务栏里显示
这样运荇*.EXE,不但看不到主界面,任务栏也没有,就是任务管理器中的"应用程序"中也不列出,那该如何关闭它?
在任务管理器的"进程"中可以找到它,这是黑客程序常用的方法.
如果需要的话,连"进程"中也看不到.这样要终止它就是问题了.
我想将一个编好的SDI应用程序转换为MDI,很明显要有多处的改变
你可鉯这样做:建立一个继承于CMDIChidWnd的类,不防设为CChldFrm.在CWinApp中作如下变化
81. 如何用键盘滚动分割的视口?
82. 如何改变默认的光标形状?
86. 如何限制mdi子框架最大化時的大小?
87. 怎样实现3D效果?
89. 动态修改对话框的大小
关于如何动态改变对话框的大小,我做了个Demo,大家看看.
90. 用DoModal()调用模态对话框总是显示在正Φ,我重载了它并添加了MoveWindow(),可是其m_hWnd是一串零,调用失败请问有何方法可使调用的模态对话框显示于自定义位置?多谢
需要注意的是湔两个参数不能都为0如果你确实希望把窗口放在(0, 0)处,可以在对话框设计窗口的属性中选中Absolute Align然后再加入
为什么会是这样?你看了MFC的源程序就会明白原来MFC在调用你的OnInitDialog之后,会调用CDialog::CheckAutoCenter()(在dlgcore.cpp中)检查是否需要将窗口居中你看了这个函数后就明白为什么需要上面那么做了。