主框架的ActivateFrame中自行设置。
修改参数为SW_HIDE;即可隐藏,免去闪烁的一面。如果还闪,请追问,我之前也遇到这个问题,后来解决了,我现在翻找代码,预计是修改这个。
首先你要新建一个对话框,并为这个对话框新建一个类,假如为CMyDlg。在应用程序类(CApp)的InitInstance()函数里AfxEnableControlContainer();这句话后面添加如下代码(当然要包含头文件MyDlgh):
CMyDlg dlg;
if (dlgDoModal() != IDOK)
{
return FALSE;
}
调用的时候没有附带参数,应该形如:
void CAdd::OnEnChangeEdit1()
{
EditCombo_CHANGE("AAA", "BBB", "CCC", "DDD");
// TODO: 在此添加控件通知处理程序代码
}
利用组件库中的Splash Screen组件生成Splash1cpp 和Splash1h 这两个文件(也就是基于框架类的应用程序添加启动画面的步骤)……
步骤/方法
1利用组件库中的Splash Screen组件生成Splash1cpp 和Splash1h 这两个文件(也就是基于框架类的应用程序添加启动画面的步骤)
(1)用Photoshop等制作启动画面图像,保存为bmp格式。
(2)用Appwizard建一个基于单文档的工程Splash。
(3)在资源中插入位图资源
打开VC++的资源编辑器,用鼠标右键单击Resources文件夹,选择Import命令,插入所制作的位图。如果位图超过256色,VC会d出一个对话框,提示位图已经插入但不能在位图编辑器中显示,确定即可。将位图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;
}
这样就生成了Splash1cpp 和Splash1h 这两个文件
2制作基于对话框的应用程序启动画面
(1)建立基于对话框的工程Cover。
(2)文件移植
①将Splash1cpp 和Splash1h 两个文件从步骤一建立的工程拷贝到Cover工程中,并且分别加入到Source Files和Header Files中;
②导入位图文件到工程的资源中,改ID为IDB_SPLASH。
(3)修改代码,实现启动画面的调用
①添加CCoverApp 的InitInstance() 函数代码
#include "Splash1h" //加在Covercpp文件的头文件调用部位
BOOL CCoverApp::InitInstance()
{
CCommandLineInfo cmdInfo;
ParseCommandLine(cmdInfo);
CSplashWnd::EnableSplashScreen(cmdInfom_bShowSplash);
}
②使用ClassWizard 添加OnCreate() 函数到对话框类CCoverDlg中,并修改代码#include "Splash1h" //加在CoverDlgcpp文件的头文件调用部位
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);
能。mfc的消息处理函数能传参,一个是引用的程序,一个是被引用的程序,如果引用他人,需要传递参数找到运行的程序,并且传递消息过去。mfc是微软基础类库的简称,是微软公司实现的一个c++类库。
#include
ShellExecute
A(NULL,
"open",
"res\\exe",
NULL,
NULL,
SW_SHOW);//第三个参数是路径,可以是
绝对路径
,
也可以相对路径
非Unicode可能是ShellExecute();参数相同
注意:
如果调用的程序跟主程序在同一目录下路径参数直接用文件名就可以了
调试时把调用的文件放到res的上一级目录,
打包时跟主程序放到一起就可以了
设法获取每一个对话框对应的对象或对象指针,然后通过他们的对象或对象指针来访问他们的成员。对话框点确认后就关闭只是对话框的界面显示而已,如堕对话框对象还在,那么对话框对象里面的数据仍然还在。比如对话框类 CDlg 里面有变量a,那么如下代码
CDlg dlg
dlgDoModal()
那么此时会显示一个对话框,用户点击确定的时候把某个值保存道理变量a,虽然此时对话框是关闭了,但是对话框对象dlg还存在,那么dlg中成员变量a的值还是存在并有效的。
以上就是关于新手 关于VS2010 MFC 程序启动时隐藏主窗口要先闪一下的问题...全部的内容,包括:新手 关于VS2010 MFC 程序启动时隐藏主窗口要先闪一下的问题...、我想请问,我在MFC单文档中,加了个对话框,怎么 *** 作可以先运行对话框,得到参数后再运行单文档呢、用MFC编了程序,调用时d出“函数调用缺少参数列表请使用“&CAdd::EditCombo_CHANGE”创建指向成员的指针等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)