EVC开发实例一:窗口切换

资讯 驱动中国 rocket 1,215 次阅读 0 条评论
分享 Q

这表示在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
本文价值 成为第一个评分的人
登录后为本文打分
网友评论0 条评论
正在回复 的评论取消
评论加载中…
🔐

登录后参与互动

评论、点赞均可赚积分
连续签到、邀请好友也有奖励 🎁

电脑端: 微信扫码登录 微信内: 一键登录

微信扫一扫

打开微信「扫一扫」,分享本文到朋友圈或好友