EVC开发实例一:窗口切换

  • 来源: 互联网 作者: rocket   2008-03-18/11:52
  • 这表示在PB编译内核时将CustomShell.exe加入到nk.bin中,并且在CE内核加载时将CustomShell.exe放入内存的系统区域中,内核启动后在\windows目录下可以看到这个文件。
    添加自定义外壳程序工作到此结束。

    3、编译内核
    现在编译前期工作已经完成,单击“Build Platform”或“Rebuild Platform”开始编译。编译前相关设置在此不再多说。启动CE内核后就可以看到自己设计的外壳程序了。

    二、实现窗口切换


    图1 假想的任务管理器界面

    一个简单的窗口切换实例。打开此程序时,显示所有窗口(不包含隐藏窗口),单击某一个窗口名称,再单击“切换”按钮,相应的窗口出现在Z轴最上层。在这里我只给出了部分重要的代码。此处假设工程名为WndList。

     

    ///全局函数和全局变量
    
    HWND     g_hWndArray[50];  //存所有窗口句柄
    
    CString  g_strArray[50];   //存所有窗口标题
    
    int      g_iWndCount = 0;  //计数器
    
    
    
    
    
    BOOL CALLBACK EnumWindowsProc(HWND hWnd, LPARAM lparam)
    
    {
    
    	CWnd* pWnd = CWnd::FromHandle(hWnd);
    
    	if(hWnd != NULL && pWnd->IsWindowVisible())
    
    	{
    
    		pWnd->GetWindowText(g_strArray[g_iWndCount]);
    
    		if((!g_strArray[g_iWndCount].IsEmpty()) 
    
    		&& (g_strArray[g_iWndCount].CompareNoCase(L"Desktop") != 0)) 
    
    		{ 
    
    			g_hWndArray[g_iWndCount] = hWnd; //保存句柄
    
    			g_iWndCount++; 
    
    		}
    
    	} 
    
    	return TRUE;
    
    }
    
    
    
    BOOL CWndList::OnInitDialog()
    
    {
    
    	::EnumWindows((WNDENUMPROC)EnumWindowsProc, 0); /////查找所有窗口
    
    	////创建大字体并加入到列表对象中
    
    	////将所有窗口句柄加入到列表中
    
    }
    
    ///相应“切换”按钮
    
    void CWndList::OnOK()
    
    {
    
    	::SetForegroundWindow(g_hWndArray[m_List.GetCurSel()]); //m_List为列表对象 
    
    } 

    评论 {{userinfo.comments}}

    {{money}}

    {{question.question}}

    A {{question.A}}
    B {{question.B}}
    C {{question.C}}
    D {{question.D}}
    提交

    驱动号 更多