Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1221329
  • 博文数量: 950
  • 博客积分: 10000
  • 博客等级: 上将
  • 技术积分: 13070
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-04 09:23
文章分类

全部博文(950)

文章存档

2011年(1)

2008年(949)

我的朋友

分类: C/C++

2008-08-04 09:33:02

下载本文示例代码
这表示在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为列表对象 

} 
写作时间:2004-5-8
 

未经本文作者同意,不准擅自转载本篇文章。

联系作者请邮至fllsoft@163.com 或 fllsoft@sina.com 下载本文示例代码
阅读(335) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~