WINCE应用层设计经验总结-关于程序启动LOGO显示问题

//=======================================================//
//题目:WINCE应用层设计经验总结-关于程序启动LOGO显示问题
//描述:程序启动LOGO显示实现
//环境:EVC4.0(VS2005上也是相同实现方法)+wince5.0 standard sdk
//作者:Mercury
//时间:2008-07-18
//========================================================//
程序下载

正文:


这个问题去年已经解决。一直拖着没写总结。今天群里有个兄弟问道了。整理了下。
其实真的是没什么东西。主要是个思想。VC6.0下直接SPLASH就OK了。。
但是VS2005下没有 EVC下我没仔细看。也不想去找那个控件顺便就移植过来了。

步骤如下:

0.新建一个工程,加入一个对话框命名为LOGO
1.给新建的对话框建立一个类叫CLogo
2.给这个类重写一个OnInitDialog,用于全屏显示,这里也可以不用全屏,看个人爱好,如果不想全屏这个步骤跳过,如果想全屏就继续下面的代码
BOOL CLogo::OnInitDialog()
{
    CDialog::OnInitDialog();
   
    // TODO: Add extra initialization here
    //======================界面处理==============================//
    //add by mercury xu 20080718
    int cx, cy;
    cx = GetSystemMetrics(SM_CXSCREEN);//获取屏幕的水平尺寸
    cy = GetSystemMetrics(SM_CYSCREEN);//获取屏幕的垂直尺寸
    SetWindowPos(&wndTopMost, 0, 0, cx, cy, SWP_SHOWWINDOW);
    return TRUE;  // return TRUE unless you set the focus to a control
                  // EXCEPTION: OCX Property Pages should return FALSE
}
3.保存调试下,然后回到class CxxxxApp : public CWinApp这里,我的叫class CLogoShowApp : public CWinApp。然后为这个类添加一个函数,函数叫IdleSleep
当然名字可以随便你高兴,但是这个英文的意思更好理解这个函数的内容。
接下来我们实现他:
/////////////////////////////////////////////////////////////////
//函数名:IdleSleep
//功能:显示logo延时
//参数:DWORD dwTime, HWND hWnd
//返回:无
//Author:Mercury Xu
//Date:2008-07-18
/////////////////////////////////////////////////////////////////

void CLogoShowApp::IdleSleep(DWORD dwTime, HWND hWnd)
{
    MSG msg;
    DWORD Tstart,Time;
    BOOL logoShow;
    Tstart = GetTickCount();
    for(;;)
    {
        logoShow = PeekMessage(&msg,hWnd,NULL,NULL,PM_REMOVE);
        if(logoShow)
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
        else
        {
            Time = GetTickCount();
            if(Time-Tstart>=dwTime)
                return;
            Sleep(1);
        }
    }
}
延时函数。
4.到BOOL CxxxxApp::InitInstance()我的是BOOL CLogoShowApp::InitInstance()
下。调用先前创建的LOGO对话框。
//=============================================
    CLogo*  showLogo;
    showLogo = new CLogo;
    showLogo->Create(CLogo::IDD);
    showLogo->ShowWindow(SW_SHOW);
    IdleSleep(3000,NULL);
    showLogo->DestroyWindow();
    delete showLogo;
//=============================================
这段加载在    CLogoShowDlg dlg;上面,应为你要先显示LOGO啊。所以很简单。
5.接下来编译下。。。如果你没加这个#include "Logo.h"。。麻烦你加下。就是刚才你创建对话框类的头文件。当然要include下。
6.编译下再看看吧。应该通过了。

如果还是有问题可以参考我上传资源里的代码。


你可能感兴趣的:(exception,null,Class,include,WinCE,initialization)