VC界面制作实例步骤
- 格式:ppt
- 大小:311.50 KB
- 文档页数:25
vc6.0可视化编程实例-回复vc6.0可视化编程实例是指在使用Microsoft Visual C++ 6.0编程工具进行可视化编程时的具体案例。
本篇文章将详细介绍vc6.0可视化编程实例的具体步骤和相关知识,以帮助读者更好地理解和应用可视化编程技术。
第一步:创建新项目首先,在vc6.0编程工具中点击“文件”菜单,选择“新建”->“项目”,然后在弹出的对话框中选择“Win32应用程序”作为项目类型。
接下来,填写项目名称、位置和解决方案等相关信息,点击“确定”按钮创建新项目。
第二步:设计界面在vc6.0中,可视化编程使用的是MFC(Microsoft Foundation Class)技术,通过使用控件和对话框设计工具来创建界面。
在解决方案资源视图中找到项目名称,展开后找到“资源文件”文件夹,并双击“资源文件.rc”文件,进入资源编辑器界面。
在资源编辑器中,用户可以通过拖放控件的方式设计界面。
例如,可以从“工具箱”控件面板中选择按钮控件,然后点击对话框中的位置放置按钮控件。
通过设置按钮的大小、位置、文字等属性来调整控件的外观。
在这个例子中,我们将在界面中放置一个按钮控件,用于实现一个简单的点击事件。
第三步:编写代码在界面设计完成后,我们需要为按钮添加点击事件的响应。
点击“类视图”选项卡,在其中找到对应的对话框类,通常以C开头,右键点击该类,选择“添加”->“函数”,并填写函数名称和返回类型等属性。
在弹出的函数编辑对话框中,输入要执行的代码。
例如,我们可以在按钮的点击事件函数中添加一段代码,用于弹出一个消息框显示一条消息。
在这个例子中,我们将添加一段代码,使点击按钮后弹出一个对话框,显示“Hello, world!”的消息。
第四步:编译和运行完成代码编写后,点击“生成”菜单,选择“生成解决方案”,或者直接按下F7键进行编译。
编译成功后,可以在输出窗口中查看编译结果。
接下来,点击“调试”菜单,选择“开始执行”或者按下F5键进行调试运行。
vc模板制作教程
当制作VC模板时,可以遵循以下教程来创建一个没有标题的
模板,并确保文中不存在重复的标题文字。
1. 打开VC模板编辑软件,如Adobe After Effects或Final Cut Pro等。
2. 创建一个新的项目,并选择适合的分辨率和帧速率。
3. 在画面中央或其他合适位置放置一个适当大小的文本框,用于显示标题。
4. 在文本框中输入要显示的标题文本。
5. 适当调整文本框的大小和位置,以确保标题显示在合适的位置。
6. 根据需要选择合适的字体、字号和颜色,以使标题看起来吸引人且容易阅读。
7. 使用软件的动画功能,如缩放、淡入淡出、滚动等,为标题添加一些动态效果,增加视觉吸引力。
8. 可以添加背景、图像、视频片段或其他视觉元素来进一步增强模板的效果。
9. 调整动画的速度和时长,确保标题的显示时间在合适的范围内。
10. 导出模板为视频文件或其他可用格式,以便在需要时使用。
使用这个教程,你可以制作一个没有标题的VC模板,并避免
在文中出现重复的标题文字。
记住,模板的创意和设计可以根据个人喜好和需求进行调整和修改。
vc6.0可视化编程实例VC6.0可视化编程实例目录:1. 引言2. VC6.0可视化编程简介3. 开发环境的搭建4. 实例介绍5. 实例实现步骤5.1 创建新的工程5.2 添加控件和设置属性5.3 编写代码逻辑5.4 编译和调试6. 结论1. 引言VC6.0是一款经典的集成开发环境(IDE),用于开发Windows 平台的应用程序。
其可视化编程能力使开发者能够通过拖拽控件、设置属性和编写代码来快速开发界面丰富的应用程序。
本文将通过一个具体的实例来介绍VC6.0的可视化编程过程。
2. VC6.0可视化编程简介VC6.0的可视化编程是基于MFC(Microsoft Foundation Classes)库实现的。
MFC是一套封装了Windows API的C++类库,它提供了丰富的控件和功能模块,方便开发者进行图形界面的设计和应用逻辑的实现。
VC6.0可视化编程通过拖拽控件和编写事件处理函数,实现应用程序的交互和功能逻辑。
3. 开发环境的搭建要进行VC6.0可视化编程,首先需要安装VC6.0开发环境。
您可以从官网或其他资源下载VC6.0安装文件,并按照安装向导进行安装。
安装完成后,打开VC6.0即可开始编程。
4. 实例介绍为了更好地理解VC6.0可视化编程,我们将以一个简单的实例为例:实现一个窗口应用程序,并在窗口中添加一个按钮。
点击按钮后,将弹出一个对话框显示一条信息。
5. 实例实现步骤5.1 创建新的工程打开VC6.0,在菜单栏中选择"File" > "New" > "Projects",选择"MFC AppWizard(Exe)",并填写相应的项目信息。
点击"OK",VC6.0将自动生成一个新的工程。
5.2 添加控件和设置属性在资源视图中,选择"Dialog"节点,双击它,打开资源编辑器。
创建漂亮的应用程序界面刘汇丹facteur@1. 首先在VC里面建立基于对话框的可执行应用程序工程,命名为demo。
2. 在主窗体对话框属性里取消Title bar属性,去掉对话框标题栏。
在对话框窗体里面添加如下图所示的各个控件实例。
靠右侧的那个Edit控件设置了只读属性。
3. 为两个Edit、Slider和进度条设置相应的映射变量。
在CDemoDlg::OnInitDialog()函数中设置初始值。
4. 使用位图作为窗体的背景。
使用绘图软件制作出喜欢的图片,保存为位图文件back.bmp,如下图所示。
注意制作的图片要和对话框窗体大小一致,本例中图片的大小为(380px,260px),背景色为RGB(127, 169, 255)。
将此位图文件拷贝到res文件夹下,并导入到工程里面,设置ID为IDB_BACKBMP,为CDemoDlg类添加保护成员变量CBitmapm_back,并在CDemoDlg::OnInitDialog()函数里面添加如下代码:在CDemoDlg::OnPaint()函数里面,以如下代码替换原来自动生成的代码:经过以上步骤以后,编译运行应用程序,可以看到如下图所示的效果:可以看到,窗体中各个控件的背景颜色和背景图片的颜色不一致。
我们需要做进一步的调整。
5. 统一设置控件的背景颜色:在CDemoApp::InitInstance()函数中int nResponse = dlg.DoModal()语句前插入如下代码:运行应用程序,效果如下图所示:此时,大部分控件的背景颜色已经和背景图片的颜色一致,已经基本形成了比较漂亮的图形界面。
但是我们要做得完美一些。
6.这一步,我们实现漂亮的按钮。
制作三个图片分别表示“确定”按钮正常、获取焦点和鼠标按下时的状态,如下面各图所示:将此三个图片保存为bmp格式的文件并导入到工程中,设置ID分别为IDB_OKUP,IDB_OKFOCUS,IDB_OKDOWN。
vc++6.0打造单文档界面与多文档界面的编程VC++6中,可以利用MFC向导分别创建单文档和多文档界面的应用程序。
有了这两种类型的应用程序,您就可以实现简单的记事本,写字本和WORD的功能了。
以下介绍一个在文档中输出一段文字,点击菜单项,输入文字内容按OK按钮后可以更改输出的文字。
1.首先,点击MFC向导,选择多文档视图类型,新建一个名为MdiDemo的工程。
2.新建一个对话框。
上面放置一个Static控件和一个Edit控件,按CTRL+W,将Edit控件改成m_Caption.3.新建一个类与对话框对应,如CDlgDemo类。
4.在菜单中,增加一项Demo,并增加菜单项Test.按CTRL+W,并双击后,在消息的上面选择Doc,下面选择Command,双击就产生了对应的事件处理函数。
5.在MdiDemoDoc.cpp类中输入以下:// DlgDemo.cpp : implementation file//#include "stdafx.h"#include "MdiDemo.h"#include "DlgDemo.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif/////////////////////////////////////////////////////////////////// //////////// CDlgDemo dialogCDlgDemo::CDlgDemo(CWnd* pParent /*=NULL*/): CDialog(CDlgDemo::IDD, pParent){//{{AFX_DATA_INIT(CDlgDemo)m_Caption = _T("");//}}AFX_DATA_INIT}void CDlgDemo::DoDataExchange(CDataExchange* pDX){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CDlgDemo)DDX_Text(pDX, IDC_EDIT1, m_Caption);//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CDlgDemo, CDialog)//{{AFX_MSG_MAP(CDlgDemo)// NOTE: the ClassWizard will add message map macros here //}}AFX_MSG_MAPEND_MESSAGE_MAP()/////////////////////////////////////////////////////////////////// //////////// CDlgDemo message handlers6.在MdiDemoView.cpp中输入以下内容:// MdiDemoView.cpp : implementation of the CMdiDemoView class//#include "stdafx.h"#include "MdiDemo.h"#include "MdiDemoDoc.h"#include "MdiDemoView.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif/////////////////////////////////////////////////////////////////// //////////// CMdiDemoViewIMPLEMENT_DYNCREATE(CMdiDemoView, CView)BEGIN_MESSAGE_MAP(CMdiDemoView, CView)//{{AFX_MSG_MAP(CMdiDemoView)// NOTE - the ClassWizard will add and remove mapping macros here.// DO NOT EDIT what you see in these blocks of generated code!//}}AFX_MSG_MAP// Standard printing commandsON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint) ON_COMMAND(ID_FILE_PRINT_PREVIEW,CView::OnFilePrintPreview)END_MESSAGE_MAP()/////////////////////////////////////////////////////////////////// //////////// CMdiDemoView construction/destructionCMdiDemoView::CMdiDemoView(){// TODO: add construction code here}CMdiDemoView::~CMdiDemoView(){}BOOL CMdiDemoView::PreCreateWindow(CREATESTRUCT& cs){// TODO: Modify the Window class or styles here by modifying// the CREATESTRUCT csreturn CView::PreCreateWindow(cs);}/////////////////////////////////////////////////////////////////// //////////// CMdiDemoView drawingvoid CMdiDemoView::OnDraw(CDC* pDC){CMdiDemoDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);// TODO: add draw code for native data hereCRect crect;GetClientRect(&crect);CSize sizeClient=crect.Size();CString str=pDoc->strCaption;CSize sizeTextExtent=pDC->GetTextExtent(str);pDC->TextOut((sizeClient.cx-sizeTextExtent.cx)/2,(sizeClient.cy-sizeTextExtent.cy)/2,str);}/////////////////////////////////////////////////////////////////// //////////// CMdiDemoView printingBOOL CMdiDemoView::OnPreparePrinting(CPrintInfo* pInfo) {// default preparationreturn DoPreparePrinting(pInfo);}void CMdiDemoView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/){// TODO: add extra initialization before printing}void CMdiDemoView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/){// TODO: add cleanup after printing}/////////////////////////////////////////////////////////////////// //////////// CMdiDemoView diagnostics#ifdef _DEBUGvoid CMdiDemoView::AssertValid() const{CView::AssertValid();}void CMdiDemoView::Dump(CDumpContext& dc) const{CView::Dump(dc);}CMdiDemoDoc* CMdiDemoView::GetDocument() // non-debug version is inline{ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMdiD emoDoc)));return (CMdiDemoDoc*)m_pDocument;}#endif //_DEBUG/////////////////////////////////////////////////////////////////// //////////// CMdiDemoView message handlers6。
vc使用模板怎么弄教程
要创建一个没有标题的Visual Composer (VC)模板,你可以按
照以下步骤进行操作:
1. 登录到WordPress的后台管理面板。
2. 在左侧导航栏中,找到并点击"页面"选项。
3. 在页面列表中,找到并点击要编辑的页面。
4. 在页面编辑器中,找到要添加VC模板的位置,并点击"+"
图标来添加一个新元素或模块。
5. 在关于要添加的模块对话框中,选择"Visual Composer"或"VC"选项。
这将打开VC的编辑器界面。
6. 在VC编辑器中,你可以选择适合你的页面的模板。
你可以
浏览并选择不同的模板,确保它们没有任何标题。
7. 一旦你选择了一个合适的模板,你可以将其拖放到页面编辑器的适当位置。
8. 继续根据你的需求编辑和自定义模板。
你可以更改模板中的文本、图像、布局等等。
9. 保存页面,预览并检查所做的更改。
需要注意的是,VC提供了许多默认模板,其中一些可能具有
标题。
你需要选择一个没有标题的模板进行编辑。
如果你在模板中添加了标题,确保每个标题都是唯一的,并不会重复出现在页面上。
这将有助于确保你的页面没有重复的标题。
希望这个简单的教程能够帮助你创建一个没有标题的VC模板!。
C可视化界面设计方案方法例:模式对话框(通过菜单命令弹出)1)建一个单文档(SDI)应用程序2)创建对话框模板Insert→Resource→选中Dialog→单击New拖过一个静态文本,鼠标对准它,按右键点properties改标题为“新建模式对话框”。
3)鼠标右键对准对话框的任何位置单击,选择properties选项,设置ID为IDD_MYDIALOG4)给对话框创建类双击新建对话框的任何位置,单击OK,写类名为“CMyDlg”,保证”CDialog”作为该类的基类。
5)创建菜单命令:a)打开资源编辑器的菜单项Menub)双击IDR_MAINFRAMEc)双击右边空白菜单,点开pop_up(让它是空白),在名字处写”弹出对话框(&A)”,ID处写ID_PUPDIALOG6)将菜单命令连接到主框架程序中,完成ID_PUPDIALOG的消息映射:View→ClassWizard→保证Class name里是CMainFrame,在ObjectIDs里找到ID_PUPDIALOG点黑→Messages里(右边)点COMMAND建立主框架对象方法并加代码:void CMainFrame::OnPupdialog(){ CMyDlg MyDlg;MyDlg.DoModal(); //DoModal()是CDialog类成员函数,通过调用该//函数将显示对话框。
}7)在CMainFrame.cpp文件里加:#include “MyDlg.h”// 之后运行。
例2:无模式对话框(为175页附加举例)非模式对话框,弹出后,可一直保留在屏幕上,用户可继续在应用中进行其它操作或启动其它应用程序,当需要使用对话框时,只需象激活一般窗口一样激活对话框即可。
1)建一个SDI(单文档)应用程序2)创建对话框模板Insert→Resource→点黑Dialog→New拖过一个静态文本,鼠标对准它,按右键点properties改标题为“新建非模式对话框”。
VC界面编程总结[前言:]拥有美丽的外观,软件就成功了一半。
界面由控件、工具栏、菜单、窗体等元素组成,对他们进行美化就能得到一个美丽的界面。
我们经常会使用到组合框,而组合框是是有2种功能的--下拉和列表。
一般情况下,列表框的宽度和选择框是一样宽的,但是我们有些时候确实很需要把列表框的宽度变大,一便让我们能更好的看我们要选的东西。
为了能有这个功能,我写了下面的这个函数。
首先得在你的对话框中添加一个的WM_CTLCOLOR的消息句柄,或者使用CComboBox的继承类,而且在其中添加下面的代码:HBrush tvisualcombo::onctlcolor(CDC* pdc, CWND* pwnd, UINT nctlcolor) {HBrush hbr = ccombobox::onctlcolor(pdc, pwnd, nctlcolor);switch (nctlcolor) {case ctlcolor_edit:break;case ctlcolor_listbox:if (listwidth > 0) {// new width of a listbox is definedCRect rect;pwnd->GetWindowRect(&rect);if (rect.Width() != listwidth) {rect.right = rect.left + listwidth;pwnd->MoveWindow(&rect);}}break;}// todo: return a different brush if the default is not desired return hbr;}这样之后还没有完全好,你还得刷新一下列表框,那样才能随时根据列表框中的文本的长度,而改变列表框的宽度,要想这样的话,你还得这样,你必须扫描列表框中的条目,还得计算其中文本的长度(通过pdc),这样你如果再刷新列表框的话,才能一条目中比较长的来显示。
利用VC编写简单的绘图程序上机实验环境亦可选择Microsoft Visual C++〔以下简称VC〕。
VC是美国微软公司生产的基于其Windows系统的软件开发工具。
它具有使用灵活,并与32位Windows内核〔使用于Windows 2000/Windows XP〕高度兼容的特点,从而被Windows程序员们广泛使用。
VC 在图形图像处理方面有着广泛的应用,MFC中提供了大量的图形图像函数,下面我们将对使用VC/MFC编写简单的绘图程序。
一、使用VC编写MFC单文档应用程序很简单,只需要按照下面几个步骤进行:1.翻开MSVC集成开发环境。
双击桌面或“开始〞菜单中的Microsoft VisualC++6.0,不久将看到VC的编辑窗口,如图3-5:图1 VC启动界面2.选择菜单“File | New〞,在弹出的对话框中1)单击上方的选项卡“Project〞,2)选择“MFC AppWizard(exe)〞,3)在“Project name〞一栏中填写工程名,例如draw,4)在“Location〞一栏中填写你想把文件存放的位置〔目录〕。
然后按“OK〞。
见图2。
注意:第4〕步中指定你自己的目录,不要使用系统的缺省目录或者随便放在根目录或者其他的目录下。
这样便于你找到自己编写的程序。
图2 应用程序向导主界面3.在MFC Appwizard-Step 1中选择“Single Document〞,即单文档应用程序,点击“Finish〞,如图3所示。
注意:对于下面的操作我们可以忽略,直接点Finish即可。
图3 应用程序向导中选择单文档视图4.系统弹出一个当前工程信息的对话框,如图4所示,直接点“OK〞即可。
图4 新建工程信息5.进入程序编写的主界面,屏幕左下方为工作区,如图5所示,工作区中共有三种视图,分别是:1)文件视图〔“FileView〞〕,主要包括头文件,cpp文件以及资源文件。
我们在头文件中一般添加类的定义,类的成员变量和函数的声明,而在cpp文件中具体实现函数。
轻松实现类VC界面作者:浙江省温岭电信局王骏下图是一个类似VC的界面,左边、底下有两个可浮动、可变大小的控制窗口。
许多朋友都希望在自己的程序中实现类似的界面,因为此种类型的界面用途很广、通用性很强,所以笔者总结了一下实现的步骤,辑此一文,并提供源代码供大家参考!下载本文示例工程44.3K (最新更新:2004年2月8日)一、实现原理图中两个窗口的实现类是从CControlBar派生出来的,我们并不需要从头到尾实现该类,因为Cristi Posea先生已经为我们实现了一个称为CSizingControlBar的类,而且做得相当完美!我们所要做的便是好好地利用该类,为了尽可能地简洁,笔者将CSizingControlBar类修改了一下并命名为CCoolBar,接下来我们将详细介绍如何利用该类实现我们所需的界面。
二、实现步骤示例[1]前期准备新建一个名为BarDemo的MFC工程,SDI界面,去掉文档视图结构,其它选项默认。
将本文示例代码中的sizecbar.h sizecbar.cpp scbarg.h scbarg.cpp 四个文件复制到工程目录下。
在菜单Project->Add to project->Files将四个文件加入工程中,此时在ClassView中将出现了一个称为CCoolBar的类。
在stdafx.h文件中加上#include "sizecbar.h"#include "scbarg.h"[2]开始编码2.1 为CMainFrame增加成员变量CCoolBar m_wndMyBar1;///我们将它作为左边的窗口CCoolBar m_wndMyBar2;///停靠在下方的窗口以下代码需要添加到CMainFrame::OnCreate中,方法与普通工具条的创建没有太大的区别!2.2 创建ControlBarif (!m_wndMyBar1.Create(_T("我的控制条"),this,123)){ TRACE0("Failed to create mybar\n"); return -1; }if (!m_wndMyBar2.Create(_T("我的控制条2"),this,CSize(100,100),TRUE,124)){ TRACE0("Failed to create mybar\n"); return -1; }2.3 停靠控制m_wndMyBar1.SetBarStyle(m_wndMyBar1.GetBarStyle() | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);m_wndMyBar2.SetBarStyle(m_wndMyBar2.GetBarStyle() | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);m_wndMyBar1.EnableDocking(CBRS_ALIGN_ANY);m_wndMyBar2.EnableDocking(CBRS_ALIGN_ANY);DockControlBar(&m_wndMyBar1, AFX_IDW_DOCKBAR_LEFT);///停靠在左边DockControlBar(&m_wndMyBar2, AFX_IDW_DOCKBAR_BOTTOM);///停靠在右边此时我们已经生成了两个控制条窗口,但窗口中还没有任何东西!让我们来做最后一件事情:往窗口添加所需部件!2.4 添加我的控件这个问题看似有些麻烦其实相当简单:我们只要在创建这些控件时将控制条窗口指针作为父窗口指针赋值给这些控件即可!请看如下例子(需要注意的是以下列举的几种形式,你只能选择其一,同时往一个控制条窗口添加多个子窗口将导致失败!)(1)将编辑控件放入下面那个控制条窗口中在CMainFrame类中添加成员变量CEdit m_wndEdit;在创建ControlBar后创建编辑控件m_wndEdit.Create(WS_VSCROLL|WS_CHILD|WS_VISIBLE|ES_AUTOVSCROLL|ES_MULTILINE|ES_WANTRETURN,CRect(0,0,0,0),&m_wndMyBar2,101);m_wndEdit.ModifyStyleEx(0,WS_EX_CLIENTEDGE);(2)将树型控件放入左边那个控制条窗口中在CMainFrame类中添加成员变量CTreeCtrl m_wndTree;;在创建ControlBar后创建树型控件/////////////这一段代码创建树型控件////////////if (!m_wndTree.Create(WS_CHILD|WS_VISIBLE|TVS_HASLINES|TVS_HASBUTTONS|TVS_LINESATROOT,CRect(0, 0, 0, 0), &m_wndMyBar1, 100)){TRACE0("Failed to create instant bar child\n");return -1;}m_wndTree.ModifyStyleEx(0, WS_EX_CLIENTEDGE);////往树型控件添加内容///HTREEITEM hti = m_wndTree.InsertItem(_T("VC知识库在线杂志"));m_wndTree.InsertItem(_T("电子文档"));m_wndTree.InsertItem(_T("在线杂志第一期"), hti);m_wndTree.InsertItem(_T("在线杂志第二期"), hti);(3)将对话框放入控制条中首先在资源编辑器里制作一个CHILD类型的无BORDER对话框,ID为IDD_DIALOGBAR,并以此作为模板生成CVCKBASEDlg类,并在CMainFrame中添加成员变量CVCKBASEDlg m_wndVCKBASE;然后在创建ControlBar后用如下代码创建对话框m_wndVCKBASE.Create(IDD_DIALOGBAR,&m_wndMyBar1);m_wndVCKBASE.ShowWindow(SW_SHOW);(4)将TabCtrl放入左边的控制条本文的示例代码中提供了一个称为CCoolTabCtrl的封装类,我们用它可以简单地创建出TabCtrl,先请看如下代码m_TabCtrl.Create(TCS_DOWN|WS_CHILD|WS_VISIBLE,CRect(0,0,100,1 00),&m_wndMyBar1,125);/////////////这一段代码创建树型控件////////////if (!m_wndTree.Create(WS_CHILD|WS_VISIBLE|TVS_HASLINES|TVS_HASBUTTONS|TVS_LINESATROOT,CRect(0, 0, 0, 0), &m_TabCtrl, 100)) ///注意,这里是将m_TabCtrl作为m_wndTree的父窗口{TRACE0("Failed to create instant bar child\n");return -1;}m_wndTree.ModifyStyleEx(0, WS_EX_CLIENTEDGE);///往树型控件添加内容HTREEITEM hti = m_wndTree.InsertItem(_T("VC知识库在线杂志"));m_wndTree.InsertItem(_T("电子文档"));m_wndTree.InsertItem(_T("在线杂志第一期"), hti);m_wndTree.InsertItem(_T("在线杂志第二期"), hti);///将树型控件加入到TabCtrl中m_TabCtrl.AddPage(&m_wndTree,"VC知识库",IDI_ICON1); ///将树型控件添加到第一页m_TabCtrl.AddPage(RUNTIME_CLASS(CVCKBASEDlg),IDD_DIALOGBAR,"第二页",IDI_ICON2); ///将CVCKBASEDlg对话框添加到第二页m_TabCtrl.AddPage(RUNTIME_CLASS(CMyDlg),IDD_DIALOGBAR2,"第三页",IDI_ICON3); ///将CMyDlg对话框添加到第三页m_TabCtrl.UpdateWindow(); ///更新TabControl需要注意的是希望添加到TabControl中的对话框,在其类定义,类实现文件中必须添加如下信息:例如CVCKBASEDlg类,在VCKBASEDlg.h中添加DECLARE_DYNCREATE(CVCKBASEDlg)class CVCKBASEDlg : public CDialog{// Constructionpublic:CVCKBASEDlg(CWnd* pParent = NULL); // standard constructorDECLARE_DYNCREATE(CVCKBASEDlg)在.CPP中增加IMPLEMENT_DYNCREATE(CVCKBASEDlg, CDialog)至此我们已经大功告成!我们可以编译运行一下看看两个控制条有没有创建成功。
vc++软件框架窗口界面设计.txt同志们:别炒股,风险太大了,还是做豆腐最安全!做硬了是豆腐干,做稀了是豆腐脑,做薄了是豆腐皮,做没了是豆浆,放臭了是臭豆腐!稳赚不亏呀!本文由zhoujc860206贡献ppt文档可能在WAP端浏览体验不佳。
建议您优先选择TXT,或下载源文件到本机查看。
第6章框架窗口界面设计章框架窗口界面设计6.1框架窗口 6.1框架窗口 6.2菜单 6.2菜单 6.3工具栏 6.3工具栏 6.4状态栏 6.4状态栏 6.5交互对象的动态更新 6.5交互对象的动态更新 6.6图标和光标 6.6图标和光标 6.1框架窗口 6.1框架窗口6.1.1单文档和多文档程序框架窗口单文档和多文档程序框架窗口文档应用程序的MFC类结构类结构文档应用程序的如图是单文档应用程序Ex_SDI和多文档应用程序Ex_MDI的MFC类结构。
CAboutDlg是每一个应用程序框架都有的,用来显示本程序的有关信息。
CEx_SDIApp 和CEx_MDIApp是应用程序类,是从CWinApp类派生而来,负责应用程序创建、运行和终止,每一个应用程序都需要这样的类。
CEx_SDIDoc和CEx_MDIDoc是文档类,它们是从CDocument 类派生而来,负责应用程序文档数据管理。
CEx_SDIView和CEx_MDIView是视图类,它们既可以从基类CView派生,也可以从CView派生类派生,负责数据的显示、绘制和其他用户交互。
CMainFrame类是用来负责主框架窗口的显示和管理,包括工具栏和状态栏等界面元素的初始化。
对于单文档应用程序来说,主框架窗口类是从CFrameWnd派生而来的,而对于多文档应用程序程序,主框架窗口是从CMDIFrameWnd派生的。
6.1框架窗口 6.1框架窗口CChildFrame类是从CMDIChildWnd派生而来,专门用来管理多文档应用程序中的文档窗口。
无论是 CMDIChildWnd 还是 CMDIFrameWnd 类,它们都是从 CFrameWnd 派生而来的。
VC++6.0外挂界面的最详细的制作过程来广海也有3个月了,在这里虽然还没有学到很多东西(主要是在看书学C++编程语言,从基础学起),目前还是菜鸟一个。
学写外挂也算是工作之余的一个兴趣,下面说一下我制作外挂界面的过程(重点哈,虽然这个再加上找CALL,写CALL,基本上就可以用了,但最好还是自己写几遍,把知识学到手才行):第一步:写一个名为GameDll.dll的动态连接库,并把它注入到指定窗口标题的进程当中去;(1) 建MFC DLL工程打开VC6.0,建立新工程->创建MFC(dll),文件名为GameDll,选择 Regular DLL using shared mfc DLL ,点OK;(2) 在左侧列表框里找到GameDll.cpp,双击进入,在最后面空白处编辑:输入一下代码//GameDll.cpp最尾部创建回调函数KeyboardProcLRESULT CALLBACK KeyboardProc(int code, // hook codeWPARAM wParam, // 实际的按键代码=VK_12 VK_HOMELPARAM lParam // 31位为0的,则表示被按下,用(lParam&(1<<31)==0)来表达){AFX_MANAGE_STATE(AfxGetStaticModuleState());//函数首部添加AFX的宏,防止一些不可预料错误的发生//(下面这行一定要一整行,不知道为什么,我分行后编译能通过,但是不能呼出外挂,你们有兴趣可以分行试下)if (gameform==NULL) { gameform=new CWGForm;gameform->Create(IDD_DIALOG_MAIN);}//分配一块内存,创建主对话框else {gameform->ShowWindow(gameform->IsWindowVisible() ? SW_HIDE : SW_SHOW); } //根据当前呼出窗口的状态来显示或隐藏呼出窗口(参看论坛淡水小C的代码加的这行)return CallNextHookEx(0,code,wParam,lParam);}#define GameCaption "GameTest" //预编译窗口标题,GameTest就是您要注入DLL的窗口标题,到时候修改这里就可以了/////安装勾子的函数void SetHook() //SetHook在GameDll.def里面套出后在能使用{AFX_MANAGE_STATE(AfxGetStaticModuleState());//函数首部添加AFX的宏,防止一些不可预料错误的发生//获取游戏主线程ID//FindWindowHWND gameh=FindWindow(NULL,GameCaption);if (gameh==0){AfxMessageBox("未找到游戏");}//加入是否找到游戏窗口的判断,可以不要//GetWindowThreadProcessIdDWORD tid=::GetWindowThreadProcessId(gameh,NULL);::SetWindowsHookEx(WH_KEYBOARD,&KeyboardProc,::GetModuleHandle("GameDll.dll"),tid);}///编译好之后建一个MFC的基本对话框调用GameDll.dll(3)新建一个MFC(exe)的基本对话框,名为Gamewg,点OK->在基本对话框里添加一个按钮->按钮上右键更改ID为IDC_BUTTON_SetHook,更改Caption为安装函数,双击刚才添加的按钮进入编辑:__declspec( dllimport ) void SetHook(); //声明SetHook()函数#pragma comment(lib,"GameDll.lib") //加入lib库的链接,并把“GameDll.dll,GameDll.lib”2个文件拷入Gamewg文件的根目录void CGamewgDlg::OnBUTTONSetHook(){// TODO: Add your control notification handler code here//调用GameDll.dll里的SetHook()SetHook();}//发布,并把Release目录下的Gamewg.exe复制到GameDll\Release和GameDll\Debug文件夹下面,接着打开GameDll.dsw //打开GameDll.dsw后先编译一次,一般会弹出对话框,要求输入Gamewg.exe的路径,如果有错误的话,在点击Project->Setting->Debug里面的第一个编辑框里重新设置一下Gamewg.exe的路径就好了(4).插入资源-->选DiaLog(更改窗口ID为IDD_DIALOG_MAIN)-->双击新建的DiaLog窗口,给DiaLog创建新类,名为CWGForm-->在GameDll.cpp的头部包含头文件"WGForm.h",创建指针类型的类变量CWGForm *gameform;if ((wParam==VK_HOME)&&(lParam&(1<<31)==0)){AfxMessageBox("按下HOME键");//测试用,可删除if (gameform==NULL){gameform=new CWGForm; //分配内存大小gameform->Create(IDD_DIALOG_MAIN);//创建类窗口}gameform->ShowWindow(true);//显示类的窗口}(5)///退出时清空内存在头文件GameDll.h中定义清空内存函数:int ExitInstance();//表示动态链接库退出的时候的动作在GameDll.cpp中构建ExitInstance函数int CGameDllApp::ExitInstance(){delete gameform;//释放相应的内存空间gameform=NULL;return CWinApp::ExitInstance();//WinApp基类函数}//编译一下,随便找个程序,把在源码中把那个程序的窗口标题找出来,把文中的GameTest替换掉,是不是按HOME键可以呼出一个界面了第二步:给上步中简单的界面添加TAB控件;//打开GameDll.dsw,给基本对话框添加TAB控件按钮//右键TAB控件按钮,选择Properties,修改ID为IDC_TABMAIN//右键TAB控件按钮->ClassWizard---->Member variables---->Add variables-->第一行m_tabmain,第二行control,第三行ctabctrl, 点OK(给TAB控件一个变量m_tabmain)//右键主窗口(除右键TAB控件按钮的其他地方)-->Events--->选择WM_InitDialog(初始化窗口)--双击WM_InitDialog进入编辑--输入:m_tabmain.InsertItem(0,"CALL测试");//创建名为“CALL测试”的TAB控件标签m_tabmain.InsertItem(1,"保护");/创建名为“保护”的TAB控件标签m_tabmain.InsertItem(2,"技能");/创建名为“技能”的TAB控件标签m_tabmain.InsertItem(3,"捡物");/创建名为“捡物”的TAB控件标签m_tabmain.InsertItem(4,"组队");/创建名为“组队”的TAB控件标签m_tabmain.InsertItem(5,"回城");/创建名为“回城”的TAB控件标签回到基本对话框--插入资源--Dialog 6个---修改6个Dialog的ID分别为://设置每个页面属性:右键对应页面,选择Styles-->Border-->NoneIDD_PAGE0IDD_PAGE1IDD_PAGE2IDD_PAGE3IDD_PAGE4IDD_PAGE5新创建头文件myVar--进入编译CDialog page0;CDialog page1;CDialog page2;CDialog page3;CDialog page4;CDialog page5;//右键主窗口(除右键TAB控件按钮的其他地方)-->Events--->选择WM_InitDialog(初始化窗口)--双击WM_InitDialog进入编辑--输入://最顶上输入#include "myVar.h",包含头文件myVar.h//右键控件窗口--事件---选择WM_InitDialog(初始化窗口)--双击进入编辑--输入://创建页面窗口page0.Create(IDD_PAGE0,GetDlgItem(IDC_TABMAIN));page1.Create(IDD_PAGE1,GetDlgItem(IDC_TABMAIN));page2.Create(IDD_PAGE2,GetDlgItem(IDC_TABMAIN));page3.Create(IDD_PAGE3,GetDlgItem(IDC_TABMAIN));page4.Create(IDD_PAGE4,GetDlgItem(IDC_TABMAIN));page5.Create(IDD_PAGE5,GetDlgItem(IDC_TABMAIN));//设置父窗口page0.SetParent(GetDlgItem(IDC_TABMAIN));page1.SetParent(GetDlgItem(IDC_TABMAIN));page2.SetParent(GetDlgItem(IDC_TABMAIN));page3.SetParent(GetDlgItem(IDC_TABMAIN));page4.SetParent(GetDlgItem(IDC_TABMAIN));page5.SetParent(GetDlgItem(IDC_TABMAIN));//定义窗口的大小范围RECT r1;GetDlgItem(IDC_TABMAIN)->GetClientRect(&r1);r1.left=8;r1.top=28;r1.bottom-=2;r1.right-=2;//设置窗口位置page0.MoveWindow(&r1);page1.MoveWindow(&r1);page2.MoveWindow(&r1);page3.MoveWindow(&r1);page4.MoveWindow(&r1);page5.MoveWindow(&r1);//默认page0page0.ShowWindow(true);//点击左侧目录Dialog下面的IDD_DIALOG_MAIN,双击TAB控件进入编辑://通过函数GetCurSel来获得当前鼠标所点击的选项卡switch(m_tabmain.GetCurSel()){case 0:{page0.ShowWindow(true);//显示page1.ShowWindow(false);page2.ShowWindow(false);page3.ShowWindow(false);page4.ShowWindow(false);page5.ShowWindow(false);break;}case 1:{page0.ShowWindow(false);page1.ShowWindow(true);//显示page2.ShowWindow(false);page3.ShowWindow(false);page4.ShowWindow(false);page5.ShowWindow(false);}case 2:{page0.ShowWindow(false); page1.ShowWindow(false); page2.ShowWindow(true);//显示page3.ShowWindow(false); page4.ShowWindow(false); page5.ShowWindow(false); break;}case 3:{page0.ShowWindow(false); page1.ShowWindow(false); page2.ShowWindow(false); page3.ShowWindow(true);//显示page4.ShowWindow(false); page5.ShowWindow(false); break;}case 4:{page0.ShowWindow(false); page1.ShowWindow(false); page2.ShowWindow(false); page3.ShowWindow(false); page4.ShowWindow(true);//显示page5.ShowWindow(false); break;}case 5:{page0.ShowWindow(false); page1.ShowWindow(false); page2.ShowWindow(false); page3.ShowWindow(false); page4.ShowWindow(false); page5.ShowWindow(true);//显示break;}default:{}}第三步:给上一步中新建的6个Dialog对话框添加类,双击对应窗口,新建类为CPAGE0,CPAGE1,CPAGE2,CPAGE3,CPAGE4,CPAGE5.然后你就可以尽情的发挥想象力,在6个对话框中添加各种外挂的编辑框,按钮等等,在主对话框中添加开始挂机,停止挂机,保存设置等等啦,注意要关联好变量(最好是用记事本记录下来,免的弄错了),再然后就是找CALL,写CALL了。