文档库 最新最全的文档下载
当前位置:文档库 › 如何在VC++中两个对话框相互传递信息

如何在VC++中两个对话框相互传递信息

如何在VC++中两个对话框相互传递信息
如何在VC++中两个对话框相互传递信息

如何在VC++中两个对话框相互传递信息? 在主对话框Main_OnCommand 中,利用DialogBoxParam 弹出一个新的对话框,在函数最后一个参数里传一个long 型的参数

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 { HINSTANCE hInstance = (HINSTANCE)GetWindowLong(hwnd,GWL_HINSTANCE); //获得实例 //TCHAR *buf = "abc"; login_data ld; https://www.wendangku.net/doc/cf1181720.html,ername = "geekgu"; ld.password = "7634336"; //DialogBoxParam 最后一个参数传值 ret 得到返回值 int ret = DialogBoxParam(hInstance, MAKEINTRESOURCE(IDD_LOGIN), NULL, Login_Proc,(LPARAM)&ld); if (ret == 0) { MessageBox(hwnd,TEXT("用户点击了取消"),TEXT(""),MB_OK); }

}

在新建对话框里初始化代码里得到参数

1 2 3 4 5 6 7 8 9 { login_data *buf = (login_data *)lParam; //MessageBox(hwnd,buf->username,"",MB_OK); //SetDlgItemText(hwnd,IDC_EDITUSERNAME,buf->username); //SetDlgItemText(hwnd,IDC_EDITPASSWORD,buf->password); SetWindowLong(hwnd,GWL_USERDATA,(LPARAM)buf); //将数据跟窗口关联起来(存起来),比全局变量更好的方法。 return TRUE; }

在新建对话框里取回保存的数据并实现其他功能

1 2 3 4 5 6 7 8 9 10 case IDOK: { //TCHAR username[255]; //TCHAR password[255]; login_data *buf = (login_data *)GetWindowLong(hwnd,GWL_USERDATA); //取用户数据 SetDlgItemText(hwnd,IDC_EDITUSERNAME,buf->username); SetDlgItemText(hwnd,IDC_EDITPASSWORD,buf->password); } break;

//*******************************************************************

在VC++中,打开对话框一般是用DoModal()函数调用模态对话框,但是模态对话框只能在对弹出的当前子窗口进行操作,而不能对父窗口进行操作,也无法传递数据到父窗口中,根据笔者的研究发现,采用非模态对话框的模式可以很好的解决这一问题。

在VS2008中新建一个就有MFC 应用程序的Project 项目,在弹出的MFC 应用程序向导中选择“基于对话框”,取消“使用Unicode 库”,单击完成。在“资源视图”里面添加一个对话框,默认ID 为IDD_DIALOG1。

双击IDD_DIALOG1对话框,在弹出的MFC 类向导中,类名填写CSonDialog ,基类选择CDialog ,单击完成。这样我们就将新建的IDD_DIALOG1关联上一个基于CDialog 的类了。

在父窗口上添加一个按钮,双击,便可进入这个按钮的消息响应函数。在最上面包含CSonDialog 的头文件#include “SonDialog.h”。如果在消息响应函数中写入如下代码:

CSonDialog SonWnd;

SonWnd.DoModal();

运行之后按下父窗口上的按钮,可以发现弹出了IDD_DIALOG1,但是只能在IDD_DIALOG1上操作,无法操作父窗口。如果想要在弹出子窗口后还可以操作父窗口的话,需要采用非模态对话框的模式弹出子窗口。

MFC 在CDialog 类中有一个Create(UINT nIDTemplate, CWnd

*pParentWnd = 0),这个函数可以创建一个Dialog ,其中参数nIDTemplate 为需要创建的Dialog 的ID 。同时还有一个函数ShowWindow(int nCmdShow),用来显示创建的这个Dialog 。在消息响应函数中写入如下代码:

CSonDialog SonWnd;

SonWnd.Create(IDD_DIALOG1);

SonWnd.ShowWindow(SW_SHOW);

运行之后按下父窗口上的按钮发现窗口闪了一下,然后就消失了。这是因为对象SonWnd是一个局部对象,在运行完SonWnd.ShowWindow(SW_SHOW)这条语句之后便退出了消息响应函数,因此SonWnd对象也就被销毁了。如果想要退出消息响应函数之后窗口依然存在,则需要将SonWnd定义为一个全局变量。因此在ProjectDlg.h中添加一个CSonDialog SonWnd的定义,同时由于VC++在编译的时候预编译头文件,因此还需要在ProjectDlg.h中包含CSonDialog的头文件#include “SonDialog.h”,这样在ProjectDlg.cpp中,便可以把SonDialog.h删掉了。然后在按钮的消息响应函数中添加如下代码:

SonWnd.Create(IDD_DIALOG1);

SonWnd.ShowWindow(SW_SHOW);

我们发现IDD_DIALOG1被创建出来,并且一直保留着。但是还是无法和父窗口进行数据交流。根据查找资料我们发现在C++中有一个指针很特别,它指向的是当前窗口,这个指针就是this指针。我们通过传递this指针来相互调用对方的数据。

在CSonDialog类中,我们添加一个指向父窗口的全局指针变量CProjectDlg *m_pFaher,同时添加一个函数WndCreate(CProjectDlg *pParent),代码如下:void CSonDialog::WndCreate(CProjectDlg *pParent)

{

Create(IDD_DIALOG1); //创建对话框

ShowWindow(SW_SHOW); //显示对话框

m_pFather = pParent; //将父窗口指针传递进来

}

这个函数中调用了CDialog类中的Create()和ShowWindow()函数来创建和显示对话框,同时采用参数传递的办法将父窗口的指针传递到子窗口中。而在父窗口ProjectDlg.cpp的消息响应函数中,我们添加如下代码:

SonWnd.WndCreate(this);

编译运行之后发现有错,因为在ProjectDlg.h的头文件中包含了SonDialog.h,而在SonDialog.h中又包含了ProjectDlg.h,这样程序在进行编译的时候就会出现头文件重复包含的错误,有两种办法可以解决此问题。

第一种办法是在两个头文件中分别加入预编译命令#ifndef #define #endif 命令,在SonDialog.h最上面加入

#ifndef SONDIALOG

#define SONDIALOG

最下面加入

#endif

在ProjectDlg.h最上面加入

#ifndef RPOJECTDLG

#define PROJECTDLG

最下面加入

#endif

以上语句块的意思是如果SONDIALOG/PROJECTDLG没有被定义的话,那么就定义SONDIALOG/PROJECTDLG,如果SONDIALOG/PROJECTDLG被定义的话,直接跳转到#endif,这样就可以很好的避免被重复定义的情况。这种方法我在以前编程的时候很好用,但是不知道为什么最近几次写程序这种方法都失效了,于是我又想出了另外一种办法。

第二种办法的原理是采取避免在头文件中定义具体类型的指针变量,用定义空指针的方法绕过头文件重复包含的问题。由于在父窗口中,指向子窗口的对象必须是全局变量,这样才能保证子窗口在销毁之前一直有显示。因此在父窗口ProjectDlg.h中不得不包含SonDialog.h的头文件,这样就只能在SonDialog.h 中想办法了。其实仔细想来我们发现在SonDialog.h中只要定义一个空指针就可以解决问题。具体方法如下:

在SonDialog.h不包含ProjectDlg.h头文件,也不定义CProjectDlg的对象,而是定义一个空指针LPVOID m_pFather,将WndCreate()函数的参数改为LPVOID pPaernt,然后在WndCreate()函数中添加如下代码:

void CSonDialog::WndCreate(LPVOID pParent)

{

Create(IDD_DIALOG1); //创建对话框

ShowWindow(SW_SHOW); //显示对话框m_pFather = pParent; //将父窗口指针传递进来

}

这样,父窗口的this指针传递进来之后到m_pFather还是一个指向任意对象的指针,只要在SonDialog.cpp的函数中需要调用父窗口中的函数或者是改动父窗口的某些变量时,在cpp文件中包含头文件ProjectDlg.h,在函数开始时加入代码:

CProjectDlg *Main;

Main = (CProjectDlg *)m_pFather; //强制将LPVOID类型转换

Main->

就可以通过指针Main来对父窗口进行操作。这样就可以实现两个对话框中的信息相互传递了。

另外在建立非模态对话框的时候要注意,重写OnOk()和OnCancel()两个函数,要在里面加入DestoryWindow()函数,OnOk()和OnCancel()函数里面并没有销毁窗口,而是使得窗口不可见,如果不销毁窗口,在下一次再次打开子窗口时,就会出现错误。

VC 中自己创建对话框方法

VC中自己创建对话框的方法 这里讲在VC中不需要打开MFC工程,通过代码直接创建一个对话框,我看这个对话框比MFC的漂亮多了,而且要写会代码不需要研究MFC就直接开发新的工程. 先打开VC++ 6.0 版本, 第一步:创建一个工程名为:Main Dialog 的Win32 Application。创建过程如下: 打开File菜单中New,选自Win32 Application,工程名为:Main Dialog,点击OK,再选自A simple Win32 application。点击Finish,再点击OK.(见图1) 第二步:创建资源脚本。再打开File菜单中New,选自File选项的Resource Script(就是资源脚本),文件名为Dialog,点击OK。

(见图2) 第三步:插入对话框。刚才建立的脚本Dialog显示为Dialog.rc,就在Dialog.rc上面点击鼠标右键Insert(插入)Resource中选自插入Dialog(对话框),点击New(新建),这样对话框插入完毕。(见图3)

第四步:添加resource.h。我们把第四步插入的对话框ID改为IDD_MAIN ,在FileView中有个Header Files的文件,上面点击右键,选择Add Files to Folder...(添加文件到目录),弹出一个工程目录窗口,中间找到resource.h,然后OK了(添加)。(见图4)

第五步:复制代码。双击Main Dialog.cpp,我们写代码的位置出现了(见图5),那里有几行代码,把它们全部删掉,下面已经准备好的代码全部复制到那里,编译,执行,您的是否成功了? #include "stdafx.h" #include "resource.h" #include BOOL WINAPI Main_Proc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam); BOOL Main_OnInitDialog(HWND hwnd,HWND hwndFocus,LPARAM lParam); void Main_OnCommand(HWND hwnd,int id,HWND hwndCtl,

MFC知识点(自己整理的,只供参考)

知识点:不是很全面,只供参考 第一章 Windows应用程序使用的界面是由各种图形元素组成的图形界面(GUI)。 Windows提供了大量预定义的用C语言编写的函数,这些函数就叫做API(Application Programming Interface)函数。 在Windows应用程序中,存在着许多与DOS应用程序不同的复杂对象,例如窗口、按钮、滚动条等等。Windows把为这种复杂对象所定义的标识叫做句柄。 常用的句柄类型:HWND 窗口句柄,HDC 图形设备环境句柄,HINSTANCE 当前程序应用实例句柄,HBITMAP 位图句柄,HICON 图标句柄,HCURSOR 光标句柄,HBRUSH 画刷句柄,HPEN 画笔句柄,HFONT 字体句柄,HMENU 菜单句柄,HFILE 文件句柄 事件的描述是一个消息 消息的结构: typedef struct tagMSG { HWND hwnd; //产生消息的窗口句柄 UINT message;//消息的标识码 WPARAM wParam;//消息的附加信息1 LPARAM lParam;//消息的附加信息2 DWORD time; //消息进入消息队列的时刻 POINT pt; //表示发送该消息时鼠标的位置 }MSG; 消息循环: while(GetMessage(&msg,NULL,NULL,NULL))//系统处理了消息后返回 { TranslateMessage(&msg);//把键盘消息翻译成字符消息 DispatchMessage(&msg);//把消息派发给Windows系统 创建窗口的三个步骤: 注册窗口类: RegisterClass(&wc); 创建窗口: hwnd=CreateWindow( lpszClassName, "Windows", WS_OVERLAPPEDWINDOW, 120,50,800,600, NULL, NULL, hInstance, NULL); 显示窗口: ShowWindow(hwnd,nCmdShow); UpdateWindow(hwnd); 大题:用函数封装Windows程序(P16) 第二章

VC对话框控件属性的修改

【作者按】本文主要针对初学者在使用对话框赋值时的一些问题而写。如果你对对话框的使用已经很熟练,请跳过本文。 【针对现象】许多初学者,常常写出这样的程序来修改对话框中某个按钮的标题: 其中m_Btn的定义为CButton m_Btn; 这段程序运行后会报错,debug一下,错误会指向一个断言语句 ASSERT(::IsWindow(m_hWnd));报告窗口指针为空。看一下m_hWnd,等于0x00000000.其实就是m_Btn这个CButton对象的句柄为空。 【原因分析】出现这种错误的原因,显然是m_Btn这个窗口对象还没有创建造成的。我们看一下CMyDialog dlg这个构造函数,看一看MSDN对CDialog构造函数的说明。其实它只是简单的创建了一个对话框实例。这里我这样理解,就是对话框是一个容器,而对话框上的各个控件是容器中包含的对象。对话框的构造函数只是构造了一个容器,而并没有创建容器中的各个对象。我想这里大家就应该明白为什么m_Btn的句柄为空了。 那对话框中的控件在什么时候被创建的呢?我个人没有仔细的研究过,但从个人使用的经验看,应该在DoModal函数和对话框的Create函数中创建的。因为使用一个模式对话框时,m_Btn.SetWindowText("MyButton")语句在OnInitDialog函数中执行没有问题。所以应该在DoModal中创建的。至于DoModal中是如何创建的,欢迎各位高手给与讲解。而对于非模式对话框,以下的程序运行没有问题: 可见控件的创建应该在Create函数中。

[解决办法]那么,如果非要实现这样的功能怎么办呢?笔者的解决办法是在对话框类中增加成员变量,比如m_sBtnTitle。数据的传递有以下三种方法: 1。增加Set函数,比如SetBtnTitle(CString str); 调用程序如下: 2。将m_sBtnTitle定义成公有类型。 那么dlg.m_sBtnTitle = "MyButton";就可以了。 3。修改或者重载一个新的构造函数,比如: 最后,在对话框类的初始化函数增加m_Btn.SetWindowText(m_sBtnTitle);即可。 还有一些网友提供的方法是定义全局变量。当然,首先肯定全局变量是可以完成此功能的。不过笔者并不赞同用全局变量的方法。对于面向对象的编程和设计来说,全局变量应该尽量少使用,因为全局变量将增加模块之间的耦合度,与面向对象的思想是有违背的。正如goto 语句,好用但尽量少用。在这里笔者并不是反对用全局变量,而是要看情况而用。笔者曾经开发过一个日本项目,粗略计算一下,全局变量不下于1000个,这样的程序的维护难度可想而知。 希望此文能够帮助初学者在VC之路上少走一些歪路,尽快融入VC开发大军。

VC++对话框添加工具栏

VC++对话框添加工具栏 1、添加工具栏资源ID为IDR_TOOLBAR 2、在对话框的类定义中加: CToolBar m_ToolBar; 3、在OnInitDialog中或其它合适的消息响应中加如下代码:(函数可查看MSDN) m_ToolBar.Create(this); //创建工具栏 m_ToolBar.LoadToolBar(IDR_TOOLBAR);//加载工具栏 //得出控件条大小. CRect rect; CRect rectNow; GetClientRect(rect); RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0,reposQuery,rect Now); //放置控件条位置 CPoint ptOffset(rectNow.left-rect.left,rectNow.top-rect.top); CRect rcChild; CWnd* pwndChild=GetWindow(GW_CHILD); while (pwndChild) { pwndChild->GetWindowRect(rcChild); ScreenToClient(rcChild); rcChild.OffsetRect(ptOffset); pwndChild->MoveWindow(rcChild,FALSE); pwndChild=pwndChild->GetNextWindow(); } //调整对话框尺寸 CRect rcWindow; GetWindowRect(rcWindow); rcWindow.right+=rect.Width()-rectNow.Width(); rcWindow.bottom+=rect.Height()-rectNow.Height(); MoveWindow(rcWindow, FALSE);

《信息的传递》单元教学计划

第九章《信息的传递》单元计划 课程标准的要求: 1、知道光是电磁波,知道电磁波的传播速度。 2、知道波长、频率和波速的关系。 3、了解电磁波在信息传递中的作用。 4、了解电磁波的应用及其对人类社会和社会发展的影响。 全章概述: 人类社会已经迈入了一个信息时代。有形的材料、能源是财富,无形的信息是财富的源泉。在工业化社会里,交通运输是国民经济的大动脉;而在信息化时代,通信是信息时代的生命线。信息是当今社会人们生活、学习、生产的重要元素。了解信息是如何传递的,信息技术的由来,现状和未来发展,是每个生活在信息化社会中的公民适应信息化社会生活的需要。因此,在以素质教育为目的的初中物理教材中,介绍“信息的传递”的内容是必需的,它体现了教材内容的时代性。我们在调查中发现,初中生对通信的知识既有兴趣又有需求,所以我们有必要把信息传递的方式介绍给学生。 课程标准对这章的要求并不高,而涉及通信的知识又往往很难,所以我们采用通俗易懂的方式来展开教材。“信息的传递”一章内容涵盖了人类通信发展的过程和跨度很大的通信技术。教材首先对通信发展进行回顾,以组合图的方式展开,使同学们对通信的历史有个概括性的了解,也对现代通信的快捷和方便有一个感性的认识。 数字通信是一种既现代又古老的通信方式,数字通信在现代通信中发挥着越来越重要的作用。本章简单地介绍了模拟通信和数字通信,并说明了数字通信的优势。 在我们周围存在着各种频率的电磁波,但由于电磁波看不见摸不着,教材通过演示实验示意性地说明电磁波是如何产生和如何传播的,并给出了电磁波频率、波长和波速的关系。 我们的生活中已经离不开了广播和电视,教材通过方框图的形式简单地介绍了广播和电视的大致工作过程。本章还介绍了微波通信、卫星通信、光纤通信、网络通信,为学生展示了现代通信的发展方向。 课时安排: 1、现代顺风耳——电话 2、电磁波的海洋 3、广播、电视和移动通信 4越来越宽的信息之路

VC++实现对话框工程中添加菜单

VC++对话框程序中添加菜单 在VC中创建一个基于对话框的MFC程序,要在其中添加菜单总共分三步: 1、首先插入一个菜单资源IDR_MENU1,然后可以编辑修改菜单; 2、然后在为对话框添加一个CMenu类型的成员变量m_Menu; 3、在OnInitDialog()中添加如下的代码: m_Menu.LoadMenu(IDR_MENU1);//载入菜单 SetMenu(&m_Menu); //显示菜单 经过这三步以后菜单就可以显示出来了。 MFC 对话框工程中添加菜单(VC++ 6.0编译器) MFC 对话框工程中添加菜单(VC++ 6.0编译器) 第一步:创建对话框资源和菜单资源. 第二步:添加菜单到对话框中 方法一: 在创建的对话框中右键,在Menu选项选择自己的菜单ID如下图

此时就可以了. 方法二: 不用方法一,直接添加代码完成上述功能. 添加代码到DialogDlg ::OnInitDialog中 CMenu *menu = new CMenu; menu ->LoadMenu(MAKEINTRESOURCE(IDR_MENU)); //IDR_MENU 菜单ID this ->SetMenu(menu); 或者 Cmenu m_menu; m_menu.LoadMenu(IDR_MENU); SetMenu(&m_menu); 此时结果如下图 最后在添加菜单到对话框类中,实现其各种功能. 下面是在上面的基础上实现的通用对话框空间的功能代码,方便以后开发使用. (1)打开文件对话框 条件: OPENFILENAME结构体初始化 GetOpenFileName函数调用

MFC入门--对话框实例

MFC入门--对话框实例 实例1 目的:设计一个基于对话框的程序,界面上有一个“延迟6秒”的按钮,点击后,程序主窗口在6秒内无法拖动。 关键点:MFC程序入门、线程与进程、消息机制 操作过程: 1-新建项目,选择MFC AppWizard (exe),命名项目为“SingleThread”。如图: (注:关于各项目类型的说明,请参见文件“VC功能简介.ppt”的第8页) 2-选择“Dialog based”,点击Finish,仔细观察项目信息。

3-在资源视图内对主对话框添加静态文本:“我的第一个MFC程序”和“演示耗时的单线程”,继而添加一个按钮,按钮现实文字“延迟6秒”,如图: 4-在资源视图内,双击“延时6秒”按钮,为其添加BN_CLICKED消息(按下按钮时发出的消息)的响应函数OnButton1()。在其中添加代码: Sleep(6000); 请根据老师对程序的讲解,思考如下问题: 1.类的继承:三个的类(CAboutDlg、CSingleThreadApp、CStringThreadDlg) 的继承轨迹是怎样的? 2.程序的入口在哪里?有没有类似Win32 Application中对于WM_CREATE的 处理? 3.三个类的对象的关系。 4.消息如何映射?

设计一个基于对话框的程序,开始运行后,每两秒弹出一个消息框。 关键点:MFC程序入门;定时器的建立、使用与删除;消息映射 操作过程: 1-新建项目,选择MFC AppWizard (exe),命名项目为“Test”。 2-选择“Dialog based”。 3-在BOOL CTestDlg::OnInitDialog()函数中添加 SetTimer(1,2000,NULL); // 启动定时器 4-通过ClassWizard给对话框添加WM_DESTROY的响应函数。如图: 在其中添加代码: KillTimer(1); 5-通过ClassWizard给对话框添加WM_TIMER的响应函数。在其中添加代码: if(nIDEvent==1) { ::MessageBox(0,"嘿嘿","你点啊!!",MB_OK); } 请根据老师对程序的讲解,思考如下问题: 1.MFC下与Win32 Application下定时器的使用有什么不同,又有什么相同之 处?

VC中对话框使用技巧集合

注:以下代码以一个名为CTest6Dlg的对话框类为例 -------------------------------------------------------------------------------- 1. 在任务栏隐藏对话框 ModifyStyleEx(WS_EX_APPWINDOW, WS_EX_TOOLWINDOW); -------------------------------------------------------------------------------- 2. 使对话框为顶层窗口 SetWindowPos(&this->wndTopMost, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE); -------------------------------------------------------------------------------- 3. 在运行时添加最大化,最小化按钮 SetWindowLong(this->m_hWnd, GWL_ST YLE, GetWindowLong(this->m_hWnd, GWL_ST YLE) | WS_MINIM IZEBOX | WS_MAXIMIZEBOX); UpdateWindow(); -------------------------------------------------------------------------------- 4. 使能对话框右上角关闭按钮 在OnInitDialog中 方法一: CMenu* menu = GetSystemMenu(FALSE); menu->Modify M enu(SC_CLOSE, MF_BYCOMMAND | M F_GRAYED ); 方法二: CMenu* menu = GetSystemMenu(FALSE); menu->EnableMenuItem(SC_CLOSE, MF_BYCOMMAND | MF_GRAYED); -------------------------------------------------------------------------------- 5. 当对话框一部分在屏幕外时,显示全部对话框 SendMessage(DM_REPOSITION); -------------------------------------------------------------------------------- 6. 改变鼠标外形 添加WM_SETCURSOR 消息映射函数 BOOL CTest6Dlg::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) { SetCursor(AfxGetApp()->LoadStandardCursor(IDC_HELP)); return 0; } -------------------------------------------------------------------------------- 7. 改变对话框背景色和文本颜色 在CTest6App的InitInstance中添加

(适合初学者)MFC基础教程

Visual C++/MFC初学教程 目录 +-- 第一章VC入门 |------ 1.1 如何学好VC |------ 1.2 理解Windows消息机制 |------ 1.3 利用Visual C++/MFC开发Windows程序的优势|------ 1.4 利用MFC进行开发的通用方法介绍 |------ 1.5 MFC中常用类,宏,函数介绍 +-- 第二章图形输出 |------ 2.1 和GUI有关的各种对象 |------ 2.2 在窗口中输出文字 |------ 2.3 使用点,刷子,笔进行绘图 |------ 2.4 在窗口中绘制设备相关位图,图标,设备无关位图|------ 2.5 使用各种映射方式 |------ 2.6 多边形和剪贴区域 +-- 第三章文档视结构 |------ 3.1 文档视图框架窗口间的关系和消息传送规律 |------ 3.2 接收用户输入 |------ 3.3 使用菜单

|------ 3.4 文档,视,框架之间相互作用 |------ 3.5 利用序列化进行文件读写 |------ 3.6 MFC中所提供的各种视类介绍 +-- 第四章窗口控件 |------ 4.1 Button |------ 4.2 Static Box |------ 4.3 Edit Box |------ 4.4 Scroll Bar |------ 4.5 List Box/Check List Box |------ 4.6 Combo Box/Combo Box Ex |------ 4.7 Tree Ctrl |------ 4.8 List Ctrl |------ 4.9 Tab Ctrl |------ 4.A Tool Bar |------ 4.B Status Bar |------ 4.C Dialog Bar |------ 4.D 利用AppWizard创建并使用ToolBar StatusBar Dialog Bar |------ 4.E General Window |------ 4.F 关于WM_NOTIFY的使用方法 +-- 第五章对话框 |------ 5.1 使用资源编辑器编辑对话框 |------ 5.2 创建有模式对话框

信息传递的方式

现代社会信息传递有哪些方式 和以前信息传递的方式有什么不同 一、古代 1.用候鸟,特别是鸽,雁等作传输工具 2.作内馅的方式,如藏在鱼肚,饼类,包子等 3.以特殊声音,如钟声,鼓声,鞭炮声等 4.以灯光,火光,如孔明灯.烽火台等 5.还有其他记号,摆设等,如诱敌的记号 二、现代 1.有线通讯传输,如电话,传真,电报,电视等 2.无线通讯传输,如对讲机,移动电话,收音机 3.数字通讯传输,如连网的电脑,数字电视 4.纸张通讯传输,如书信,报纸等 三、预测 从人类的传播历史来说,人类传播信息方式的演变呈现这样一个脉络:视觉文化、听觉文化(直观的感受、“看的精神”)——概念性文化(“读的精神”)——新的视与听的文化(“新的看的精神”)。 因此,我们绝对有理由相信,在将来的某一天,图像信息会占据主流,文学也会退到一种极其边缘的位置,取而代之的是一种能听能看甚至能触能闻的多媒体艺术。但是,文字是不会像有些人预测的那样,被图像完全取代的,因

为文字是积累知识的主要手段,是人类获得抽象思维不可或缺的环节,是人类传播不能缺少的传播媒介。 四、方式 现代社会由于科技的飞速发展,信息传递的方式多种多样,如电话、电报传真、手机短信、电视、网络等等。古代信息传递的方式很少且慢,古代传递信息的方式如烽火、书信(一般是找人捎带)、也有信鸽传书,只有官府的文书有专人快马传递。 古人传递信息主要用以下方法:飞鸽,烽火,快马,暗号,手语,书信,旗帜等。 在远古时候,我国使用击鼓传递信息,最早当在原始社会末期。 到西周时候,我国已经有了比较完整的邮驿制度。 春秋战国时期,随着政治、经济和文化的进步,邮驿通信逐渐完备起来。 三国时期,曹魏在邮驿史上最大的建树是制定《邮驿令》。 隋唐邮传事业发达的标志之一是驿的数量的增多。 我国元朝时期,邮驿又有了很大发展。 清代邮驿制度改革的最大特点是“邮”和“驿”的合并。 清朝中叶以后,随着近代邮政的建立,古老的邮驿制度就逐渐被淘汰了。 五、状况 我国是世界上最早建立有组织的传递信息系统的国家之一。早在三千多年前的商代,信息传递就已见诸记载。乘马传递曰驿,驿传是早期有组织的通信方式。位于嘉峪关火车站广场的“驿使”雕塑,它取材于嘉峪关魏晋壁画墓,驿使手举简牍文书,驿马四足腾空,速度飞快。此砖壁画图于一九八二年被中华全国集邮联合会第一次代表大会作为小型章邮票主题图案使用,由此看出嘉峪关是中国信息文化的发源地之一。

VC++对话框中使用表格控件的方法

在对话框中使用表格控件的方法: 将该控件改成“report”类型,方法如下。 首先打开该控件的属性,将其设置为“Report”类型,如下图所示。

改完后变为如下形式,是变成了一个列表框。 下面说一下如何通过代码向控件中填加内容,主要是设置表头,然后加入内容,至少有两种方法可以进行信息的加入,下面仅介绍一种。 首先向与对话框对应的类中加入一个与ListControl控件对应的成员函数。填加方法如下:

运行“ClassWizard”定义一个类的ListCtrl控件成员,填加界面如下,其中IDC_LIST1是上面填加的表格控件的ID 。 选中“Member Variables”标签,点击“Add Variable”出现如下对话框,添加变量名,添加后,就会在与对话框对应的类中加如m_List变量,类型为CListCtrl。

在程序中加入如下代码,实现在表格中显示信息: m_List.InsertColumn(0,"Col 1",LVCFMT_LEFT,80,0); //设置列 m_List.InsertColumn(1,"Col 2",LVCFMT_LEFT,80,1); m_List.InsertColumn(2,"Col 3",LVCFMT_LEFT,80,2); m_List.InsertItem(0,"Item 1_1"); //插入行 m_List.SetItemText(0,1,"Item 1_2"); //设置该行的不同列的显示字符m_List.SetItemText(0,2,"Item 1_3"); 运行上面几行代码后的效果如下图所示。

VC 对话框自带滚动条的使用

VC对话框自带滚动条的使用 一,使用对话框窗口自带的滚动条,在属性页面中设置即可,如下 二,OnInitDialog()函数中,添加如下滚动条初始化语句 SCROLLINFO vinfo; vinfo.cbSize =sizeof(vinfo); vinfo.fMask =SIF_ALL; vinfo.nPage =50;//滚动块自身的长短,通常有如下关系:其长度/滚动条长度(含两个箭头)=nPage/(nMax+2),//另外nPage取值-1时,滚动条会不见了。 vinfo.nMax =600;//滚动条所能滚动的最大值 vinfo.nMin=0;//滚动条所能滚动的最小值 vinfo.nTrackPos =0; SetScrollInfo(SB_VERT,&vinfo);//即使上述步骤一不做,使用此条语句也可以显示滚动条 三,添加相应的WM_VSCROLL函数

void CMy1d0Dlg::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) { // TODO: Add your message handler code here and/or call default SCROLLINFO scrollinfo; GetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL); switch (nSBCode) { case SB_BOTTOM: //滑块滚动到最底部 ScrollWindow(0,(scrollinfo.nPos-scrollinfo.nMax)*10); //滚动屏幕 scrollinfo.nPos = scrollinfo.nMax; //设定滑块新位置 SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL); //更新滑块位置 break; case SB_TOP: //滑块滚动到最顶部 ScrollWindow(0,(scrollinfo.nPos-scrollinfo.nMin)*10); scrollinfo.nPos = scrollinfo.nMin; SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL); break; case SB_LINEUP: //单击上箭头 scrollinfo.nPos -= 1; if (scrollinfo.nPosscrollinfo.nMax) { scrollinfo.nPos = scrollinfo.nMax; break; } SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL); ScrollWindow(0,-10); break; case SB_PAGEUP: //单击滑块上方空白区域 scrollinfo.nPos -= 5; if (scrollinfo.nPos

VC改变对话框按钮字体颜色和背景的解决方案

要想修改CButton类按钮背景颜色和文字颜色,必须利用自绘方法对按钮进行重新绘制。这可以通过定义一个以CButton为基类的新按钮类来实现。以下为具体的实现方法: 方法一: 加入一个新类,类名:CMyButton,基类:CButton。 在头文件MyButton.h 中加入以下变量和函数定义: private: int m_Style; //按钮形状(0-正常,1-当前,2-按下,3-锁定) BOOL b_InRect; //鼠标进入标志 CString m_strText; //按钮文字 COLORREF m_ForeColor; //文本颜色 COLORREF m_BackColor; //背景色 COLORREF m_LockForeColor; //锁定按钮的文字颜色 CRect m_ButRect; //按钮尺寸 CFont* p_Font; //字体 void DrawButton(CDC *pDC); //画正常的按钮 // 接口函数 public: void SetText(CString str); void SetForeColor(COLORREF color); //设置文本颜色 void SetBkColor(COLORREF color); //设置背景颜色 void SetTextFont(int FontHight,LPCTSTR FontName); //设置字体 在MyButton.cpp 的构造函数中初始化变量: CMyButton::CMyButton() { m_Style = 0; //按钮形状风格 b_InRect = false; //鼠标进入标志 m_strText = _T(""); //按钮文字(使用默认文字) m_ForeColor = RGB(0,0,0); //文字颜色(黑色) m_BackColor = RGB(243,243,243); //背景色(灰白色) m_LockForeColor = GetSysColor(COLOR_GRAYTEXT); //锁定按钮的文字颜色p_Font = NULL; //字体指针 } 用ClassWizard添加下列消息函数: PreSubclassWindow(); DrawItem(); onMouse Move(); OnLButtonDown(); OnLButtonUp(); 在各函数内加入代码: void CMyButton::PreSubclassWindow() { ModifyStyle( 0, BS_OWNERDRAW ); //设置按钮属性为自画式 CButton::PreSubclassWindow();

信息的传递教案

一、现代顺风耳-电话 教学目标: 1、知识和技能 了解电话是怎样把信息传递到远方的。 了解电话交换机的用处。了解模拟信号和数字信号的区别。 2、过程和方法 通过观看录像、老师讲解,了解电话是如何传递。 通过学生分析、讨论,说明电话交换机的作用。 3、情感、态度、价值观 通过了解贝尔发明电话的过程,激发学生不怕困难,积极探索精神,了解技术对人类社会作用。通过学生讨论分析,培养合作精神。 重、难点:电话的结构与原理。电话交换机的作用、数字、模拟信号。 教学课时:1时 教学过程: 二、导学达标: 引入课题:“烽火台”……古代信息的传递方式现代的信息传递方式有哪些? 进行新课: 1、电话的结构:贝尔发明了电话 话筒:把声信号转化为电信号,结构与麦克风相同 听筒:把电信号转化为声信号,结构象喇叭 电话线:传递信号 2、电话交换机: 想想议议:完成课本77页的问题 结果:利用电话交换机可以大量减少线路。 电话交换机之间可以连接 简述电话交换机的发展过程 分析:占线的现象 3、模拟信号与数字信号: 模拟信号:信号电流的频率、振幅变化情况与声音的频率、振幅变化情况完全一样,模仿声信号的电信号。 缺点:在传输、放大、加工的过程中易失真,从而使传递的信息发生变化。 数字信号:利用数字的组合来代表信息的信号。 特点:一般只有两个数字,在传输、放大、加工的过程中很稳定,容易编辑。 3、达标练习:课本后79页“动手动脑学物理” 完成物理套餐中的本节内容。 小结:根据板书,总结本节内容,明确重、难点。 课后活动:完成物理套餐中课堂未完成的内容。课本后练习。 教学后记:1、大多数内容只要让学生了解就可以了。 2、部分内容可以加入少量课外知识,但注意不要太多, 太深,否则会起反效果。

VC设置对话框背景

VC设置对话框背景 少将2014-11-20 VC对话框默认的灰度背景实在是不美观,填充背景图成了改善用户界面的一个很好的选择。 首先在资源视图中添加一个位图资源,如命名为IDB_BMPBK。 在对话框中添加OnEraseBkgnd()事件处理函数,用于擦除背景进行重绘。其中添加的代码如下: BOOL DialogClass::OnEraseBkgnd(CDC* pDC) { //创建内存DC CDC MemDC; //CBitmap对象 CBitmap Bitmap,*pOldBitmap; //BITMAP句柄 BITMAP bm; //加载位图 Bitmap.LoadBitmap(IDB_BMPBK); //将位图资源与句柄绑定 Bitmap.GetObject(sizeof(BITMAP),&bm); //创建与内存兼容的DC MemDC.CreateCompatibleDC(pDC); //替换原位图 pOldBitmap=(CBitmap*)(MemDC.SelectObject(&Bitmap)); //获取绘制的区域 CRect rcClient; GetClientRect(&rcClient); //绘制到客户区 pDC->BitBlt(0,0,rcClient.Width(),rcClient.Height(),&MemDC,0,0,SRCCOPY); MemDC.SelectObject(pOldBitmap); MemDC.DeleteDC(); return TRUE; } 默认生成的OnEraseBkgnd()处理函数会有调用基类的处理函数然后再返回结果,要注意把这一句直接删除,然后直接返 TRUE。

VC++自定义控件的建立及使用方法

VC++自定义控件的建立及使用方法 本文来自: https://www.wendangku.net/doc/cf1181720.html, 详细来源请参考:https://www.wendangku.net/doc/cf1181720.html,/techntxt/201298191132524755545 VC++自定义控件的建立及使用方法来源:https://www.wendangku.net/doc/cf1181720.html,/ 发布日期:2012-09-08 点击次数:168 发布者IP:218.25.20.78 VC++自定义控件的使用方法 一、VC++定义自定义控件与delphi,VB有些差异。delphi,vb在file-new-other中建立。vc++在工具栏中就有 自定义控件,但必须加入控件类型。许多书籍都在类向导中建立。我这里介绍的是手动建立,其结果是一样的 。 二.建立过自定义控件类型: 2.1、把工具栏上的自定义控件放入对话框中 2.2、建立Mycontrol.h, Mycontrol.cpp文件 2.3、Mycontrol.h中的定义是 #ifndef __MYCTROLTRL_H__ #define __MYCTROLTRL_H__ #define MYWNDCLASS "mycontrol" #include class CMycontrol: public CWnd { private: public: static BOOL RegisterWndClass(); CMycontrol(); void customfun();//一个自定义方法 }; #endif 2.4 Mycontrol.cpp中的实现部分 #include "StdAfx.h" #include "mycontrol.h" CMycontrol::CMycontrol() { CMycontrol::RegisterWndClass(); } //注册控件RegisterWndClass格式是固定的不要记忆没有那个必要直接拷贝粘贴就可以。 CMycontrol::RegisterWndClass() {

MFC编程基础教程

第1章基于对话框的Windows应用程序 1.简介Windows编程的两种方法,即Windows API编程和MFC编程。 2.基于对话框的应用程序的创建过程: ?建立基于对话框的MFC 应用程序框架; ?放置控件; ?设置控件属性; ?为控件连接变量,即为控件命名; ?添加并且编写消息处理函数。 3.常用基本控件: ?静态文本框:主要用来显示文本信息,不能接受用户输入 ?命令按钮:是最常见的、应用最广泛的一种控件。在程序执行期间,当单击某个命令按钮后就会执行相应的消息处理函数。 ?编辑框:是一个文本编辑区域,用户可以在该区域输入、编辑和显示正文内容。 ?框架:将一组相关的控件框起来,达到标识一组控件的作用。 ?单选按钮:用户在一组单选按钮中最多只能选择一项。当某一项被选定后,其他选项自动变成未选状态。 ?复选框:列出了可供选择的项,用户可根据需要选择其中的一项或多项,各选项之间的状态互不相关。 ?列表框:通过显示多个选项,供用户选择,达到与用户对话的目的。 ?组合框:组合了编辑框和列表框的特性而形成的一种控件。在列表框中列出可供用户选择的项,当用户选定某项后,该项内容自动装入编辑框中。 ?滚动条:通常附在对话框上用来协助观察数据或确定位置,也可以用来作为数据输入的工具。 1.1 Windows编程基础 Windows 应用程序的主要特点是: ?具有标准的图形用户界面。 ?具有与硬件无关的特性。 ?采用“消息传递,事件驱动”的运行机制。 用Visual C++ 编写Windows 应用程序主要有两种方法:一是使用Windows 提供的应用程序接口(Application Programming Interface ,API )函数;二是使用Microsoft 提供的微软基础类(Microsoft Foundation Class ,MFC )。

从零开始学VC系列教程 二.对话框及常用控件实验

从零开始学VC系列教程二. 对话框及常用控件实验 恭喜你,进入VC学习的第二节了.这一节是人机交互的基础.所谓人机交互,说通俗点就是与机器对话.然而我们现在的技术还不能像科幻片里一样与机器人直接说话就行了.所以,我们的操作意图还得通过文本输入,命令按钮等等来实现. 本节内容:学会对话框调用及一些常用控件的使用方法. 学习目的:学习人机交互,为软件开发提供界面基础. 1.新建工程.参考第一节的方法新建一个工程,名字为Eg02完成后如下图 细心的朋友一定会发现.新建的工程里还有一个对话框,ID名是IDD_ABOUTBOX这个是做什么用的呢?我们用到的软件都会有一个版权声明.通过第一章的学习,大家应该知道怎么观看这个IDD_ABOUTBOX对话框了吧.没错!双击IDD_ABOUTBOX就可以了.我们会看到如下的一个对话框 这就是我们这个程序的关于对话框,一般用于版权声明及版本号标识.大家看到的这个对话框里有两个静态文本框和一个图像框(Picture),静态文本框我们在前一节已经介绍过了.大家可以修改一下版权所有这一行,填什么都可以,签个大名也行.完成以后你一定想看看效果,这个对话框怎么打开呢?其实VC已经为我们做好了.先按F7编译,然后按F5运行.大家可以看到

程序运行了. 单击应用程序图标,就会出现一个菜单,选最后一个[关于Eg02],关于对话框就弹出来了. 当然,这是系统为我们做好的.自己怎么在程序中调用这个对话框呢?为了演示,首先参考第一节的内容添加一个按钮,然后把按钮的ID改为IDC_BTN_ABOUTME,把标题,也就是Caption 改为[关于].最终效果如下 下面我们为按钮添加代码.相信大家一定还记得怎么进入代码吧..对了,双击[关于]按钮,在弹出的对话框中点[确定]就可以了.为了让大家更好的理解下面的操作,我们先要解释一下关于对话框的类.VC向导会为关于对话框建立一个类,大家看看下面的图

幼儿园大班科学教案:信息是如何传递的(四篇)

教学资料参考范本 幼儿园大班科学教案:信息是如何传递的(四篇)目录: 幼儿园大班科学教案:信息是如何传递的一 幼儿园大班科学教案:做纸球二 幼儿园大班科学教案:停车场三 幼儿园大班科学教案:健壮的朋友四

幼儿园大班科学教案:信息是如何传递 的一 活动目标 1、幼儿能够积极的从不同途径、用不同的方法收集传递信息。 2、幼儿在活动中了解信息传递的不同渠道,学习使用不同的信息工具。 活动准备了解相关的信息传递方式 活动过程 一、交流:我所知道的信息传递的方式。 1、启发幼儿从物体发信号、用声音发信号、用文字发信号等几个方面考虑。 2、通过讨论知道 通过手势、旗语、烟火等物体发信号 通过吹号、打铃、敲鼓、广播电话等声音发信号 用信鸽捎带、邮局传递、发传真、发电子邮件等多种文字形式发信号。 二、讲述有关人们传递信息的故事。 1、古时候长城的烽火台上燃烟火传递敌情。 2、抗日战争时期,用放倒消息树的办法报告敌人的去向等。 三、讨论:现在人们怎样传递信息? 1、引导幼儿了解常用的通讯工具。 2、让幼儿说说自己会使用哪些特训工具。 四、游戏:传话

将幼儿分为两组,分别向每组的第一个人说一句悄悄话。 开始后,再一个一个的后传,各组最后一个报告电话内容,传的又快又准的一组为胜。 五、制作朋友信息书

幼儿园大班科学教案:做纸球二 活动目标: 1、感受纸的硬软、厚薄、光滑、粗糙、弹性等不同质地和特性。 2、萌发初步的废物利用意识,知道一些废旧的材料也能做成有用的东西,体验探索的乐趣与游戏的快乐。 活动准备: 1、师生共同收集的各种材质的纸。 2、双面胶、浆糊、扭扭棒、及时贴、封装带、橡皮筋等操作材料。 活动过程: 一、纸可以做什么——萌发废物利用意识 1、最近我们一直在研究有趣的纸,收集了各种各样的纸,我们一起想一想这堆看上去没什么用的纸材料,可以做些什么好玩的东西?(引导幼儿思考,自由讲述:用纸盒做成汽车或房子、用手工纸折纸工玩等)。 2、小结:看上去没有用的纸,只要通过我们动脑筋,就可以做这么多好东西。所以只要我们动脑筋,就能把一些废物利用起来。 二、尝试做纸球——第一次操作 1、今天我们来用纸做一个大家一直会玩到的东西——纸球。你用纸球玩过那些游戏?(小投手、保龄球……)桌子上面有各种各样的纸,你可以选择一样试试看,把它做成纸球,看看是不是所有的纸都能做成纸球呢?(引导幼儿自主选择操作材料,尝试捏成纸球,了解体会各种纸制品的不同特性与质地。)

相关文档
相关文档 最新文档