单击一个对话框某个区域打开另一个对话框 VC 6.0
好用环境是VC6.0求助两种方法。第一种是单击对话框内任意区域弹出另一对话框并关闭原对话框。第二种是对话框三秒后谈粗另一对话框并关闭原对话框。另外系统出现这个错误,不知道...
好用环境是VC 6.0
求助两种方法。
第一种是单击对话框内任意区域弹出另一对话框并关闭原对话框。
第二种是对话框三秒后谈粗另一对话框并关闭原对话框。
另外系统出现这个错误,不知道怎么解决 展开
求助两种方法。
第一种是单击对话框内任意区域弹出另一对话框并关闭原对话框。
第二种是对话框三秒后谈粗另一对话框并关闭原对话框。
另外系统出现这个错误,不知道怎么解决 展开
4个回答
展开全部
思路有很多啊
你描述的现象在vc里叫 闪屏界面 或 启动界面
1、利用组件库中的Splash Screen组件生成Splash1.cpp 和Splash1.h 这两个文件(也就是基于框架类的应用程序添加启动画面的步骤)
(1)用Photoshop等制作启动画面图像,保存为bmp格式。
(2)用Appwizard建一个基于单文档的工程Splash。
(3)在资源中插入位图资源
打开VC++的资源编辑器,用鼠标右键单击Resources文件夹,选择Import命令,插入所制作的位图。如果位图超过256色,VC会弹出一个对话框,提示位图已经插入但不能在位图编辑器中显示,确定即可。将位图ID改为IDB_SPLASH。
(4)添加Splash Screen控件
①选择菜单“project”/“Add To Project”/“Conponents and Controls”打开对话框,在列表框中双击“Visual C++ Conponents”选项,选择“Splash Screen”控件,然后单击“Insert”。
②确认或修改类名和位图资源ID,单击OK确认。
③编译、连接,漂亮的启动画面就显示出来了。
(5)如果需要改变启动画面的停留时间,就修改SetTimer()函数的第二个参数,默认是750 毫秒。该函数所在位置:
int CSplashWnd::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
...
// Set a timer to destroy the splash screen.
SetTimer(1, 2000, NULL); //修改第二个参数以调整画面停留时间
return 0;
}
这样就生成了Splash1.cpp 和Splash1.h 这两个文件
2、制作基于对话框的应用程序启动画面
(1)建立基于对话框的工程Cover。
(2)文件移植
①将Splash1.cpp 和Splash1.h 两个文件从步骤一建立的工程拷贝到Cover工程中,并且分别加入到Source Files和Header Files中;
②导入位图文件到工程的资源中,改ID为IDB_SPLASH。
(3)修改代码,实现启动画面的调用
①添加CCoverApp 的InitInstance() 函数代码
#include "Splash1.h" //加在Cover.cpp文件的头文件调用部位
BOOL CCoverApp::InitInstance()
{
CCommandLineInfo cmdInfo;
ParseCommandLine(cmdInfo);
CSplashWnd::EnableSplashScreen(cmdInfo.m_bShowSplash);
...
}
②使用ClassWizard 添加OnCreate() 函数到对话框类CCoverDlg中,并修改代码#include "Splash1.h" //加在CoverDlg.cpp文件的头文件调用部位
int CCoverDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
...
CSplashWnd::ShowSplashScreen(this); //显示启动画面
...
}
3、使得启动画面消失后再显示主程序
①在CCoverDlg类中添加WM_TIMER消息响应函数
void CCoverDlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
this->MoveWindow(300,300,600,400);
CDialog::OnTimer(nIDEvent);
}
② 在intCCoverDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)中添加如下代码:
CSplashWnd::ShowSplashScreen(this);
this->MoveWindow(0,0,0,0);
this->SetTimer(1,2000,NULL);//注意这个2000一点要等于步骤1中的2000
return 0;
③在void CCoverDlg::OnPaint()的末尾添加如下代码:
this->KillTimer(1);
////////////////////////////////////////////////////////////////////////////////////////
以上代码 描述了Splash Screen控件的实用方法
但是这个控件只能在文档类程序中实用。
从你整个描述来看,你并没有说明是什么程序,文档类 还是 对话框类
如果不实用控件 设计思路如何呢
首先,登陆框是是父窗口,在登陆框 类里 创建一个 对话框 成员,首先要保证 在登陆框show之前,(一般是初始化里)优先show这个欢迎界面,由于是堵塞的,只要欢迎界面不销毁,登陆界面始终不会显示,然后为欢迎界面添加一个鼠标单击消息,一旦单击就销毁,然后程序没了阻塞,继续运行而显示登陆界面
你描述的现象在vc里叫 闪屏界面 或 启动界面
1、利用组件库中的Splash Screen组件生成Splash1.cpp 和Splash1.h 这两个文件(也就是基于框架类的应用程序添加启动画面的步骤)
(1)用Photoshop等制作启动画面图像,保存为bmp格式。
(2)用Appwizard建一个基于单文档的工程Splash。
(3)在资源中插入位图资源
打开VC++的资源编辑器,用鼠标右键单击Resources文件夹,选择Import命令,插入所制作的位图。如果位图超过256色,VC会弹出一个对话框,提示位图已经插入但不能在位图编辑器中显示,确定即可。将位图ID改为IDB_SPLASH。
(4)添加Splash Screen控件
①选择菜单“project”/“Add To Project”/“Conponents and Controls”打开对话框,在列表框中双击“Visual C++ Conponents”选项,选择“Splash Screen”控件,然后单击“Insert”。
②确认或修改类名和位图资源ID,单击OK确认。
③编译、连接,漂亮的启动画面就显示出来了。
(5)如果需要改变启动画面的停留时间,就修改SetTimer()函数的第二个参数,默认是750 毫秒。该函数所在位置:
int CSplashWnd::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
...
// Set a timer to destroy the splash screen.
SetTimer(1, 2000, NULL); //修改第二个参数以调整画面停留时间
return 0;
}
这样就生成了Splash1.cpp 和Splash1.h 这两个文件
2、制作基于对话框的应用程序启动画面
(1)建立基于对话框的工程Cover。
(2)文件移植
①将Splash1.cpp 和Splash1.h 两个文件从步骤一建立的工程拷贝到Cover工程中,并且分别加入到Source Files和Header Files中;
②导入位图文件到工程的资源中,改ID为IDB_SPLASH。
(3)修改代码,实现启动画面的调用
①添加CCoverApp 的InitInstance() 函数代码
#include "Splash1.h" //加在Cover.cpp文件的头文件调用部位
BOOL CCoverApp::InitInstance()
{
CCommandLineInfo cmdInfo;
ParseCommandLine(cmdInfo);
CSplashWnd::EnableSplashScreen(cmdInfo.m_bShowSplash);
...
}
②使用ClassWizard 添加OnCreate() 函数到对话框类CCoverDlg中,并修改代码#include "Splash1.h" //加在CoverDlg.cpp文件的头文件调用部位
int CCoverDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
...
CSplashWnd::ShowSplashScreen(this); //显示启动画面
...
}
3、使得启动画面消失后再显示主程序
①在CCoverDlg类中添加WM_TIMER消息响应函数
void CCoverDlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
this->MoveWindow(300,300,600,400);
CDialog::OnTimer(nIDEvent);
}
② 在intCCoverDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)中添加如下代码:
CSplashWnd::ShowSplashScreen(this);
this->MoveWindow(0,0,0,0);
this->SetTimer(1,2000,NULL);//注意这个2000一点要等于步骤1中的2000
return 0;
③在void CCoverDlg::OnPaint()的末尾添加如下代码:
this->KillTimer(1);
////////////////////////////////////////////////////////////////////////////////////////
以上代码 描述了Splash Screen控件的实用方法
但是这个控件只能在文档类程序中实用。
从你整个描述来看,你并没有说明是什么程序,文档类 还是 对话框类
如果不实用控件 设计思路如何呢
首先,登陆框是是父窗口,在登陆框 类里 创建一个 对话框 成员,首先要保证 在登陆框show之前,(一般是初始化里)优先show这个欢迎界面,由于是堵塞的,只要欢迎界面不销毁,登陆界面始终不会显示,然后为欢迎界面添加一个鼠标单击消息,一旦单击就销毁,然后程序没了阻塞,继续运行而显示登陆界面
展开全部
什么啊
追问
是这样的,我正在使用VC6.0做一个程序,我做了一个欢迎界面,用户使用系统时第一个可以看到它,但是我现在希望系统弹出欢迎界面后单击这个欢迎界面的某一区域,系统就跳转到登录界面,我想知道添加何类消息映射可以实现。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不懂...是lz想用VC6.0实现上述功能呢 还是让VC6.0的窗口变成那种风格??
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
懂...是lz想用VC6.0实现上述功能呢 还是让VC6.0的窗口变成那种风格??
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询