EVC开发实例一:窗口切换
这表示在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为列表对象
}
版权声明:本文由驱动中国整理发布,转载需注明出处与原文链接。如有疑问请联系
editor@qudong.com。
本文价值
★★★★★
—
成为第一个评分的人
登录后为本文打分
评论加载中…