模拟window桌面实现
2017-03-27 15:08
141 查看
正在开发中的游戏有个全屏功能--可以在window桌面背景上运行,就像一些视频播放器在桌面背景上播放一样的,花了个上午整了个Demo放出来留个纪念。
实现功能:显示图标,双击图标执行相应的程序,右击图标弹出该图标对应得菜单,点击非图标区则弹出桌面菜单。需要完整工程可以点此下载:DesktopWindow.rar。程序效果图如下:
// 获取桌面图标的相关数据
BOOL InitShellFolder()
// 根据窗口大小设置图标位置
void SetShellItemPosition()
void RunShellItem(ITEMIDLIST* pIID)
// 桌面菜单
void DesktopMenu()
// 图标菜单
void RightMenu(ITEMIDLIST* pIID)
static LRESULT CALLBACK HookWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
...{
switch (message) ...{
case WM_MENUCHAR: // only supported by IContextMenu3
if (g_pIContext3) ...{
LRESULT lResult = 0;
g_pIContext3->HandleMenuMsg2(message, wParam, lParam, &lResult);
return(lResult);
}
break;
case WM_DRAWITEM:
case WM_MEASUREITEM:
if (wParam) ...{
break; // if wParam != 0 then the message is not menu-related
}
case WM_INITMENUPOPUP:
if (g_pIContext2) ...{
g_pIContext2->HandleMenuMsg(message, wParam, lParam);
}
else ...{
g_pIContext3->HandleMenuMsg(message, wParam, lParam);
}
return(message == WM_INITMENUPOPUP ? 0 : TRUE);
break;
default:
break;
}
return ::CallWindowProc((WNDPROC) GetProp(hWnd, TEXT("oldWndProc")), hWnd, message, wParam, lParam);
}
jpg改rar
实现功能:显示图标,双击图标执行相应的程序,右击图标弹出该图标对应得菜单,点击非图标区则弹出桌面菜单。需要完整工程可以点此下载:DesktopWindow.rar。程序效果图如下:
// 获取桌面图标的相关数据
BOOL InitShellFolder()
// 根据窗口大小设置图标位置
void SetShellItemPosition()
void RunShellItem(ITEMIDLIST* pIID)
// 桌面菜单
void DesktopMenu()
// 图标菜单
void RightMenu(ITEMIDLIST* pIID)
static LRESULT CALLBACK HookWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
...{
switch (message) ...{
case WM_MENUCHAR: // only supported by IContextMenu3
if (g_pIContext3) ...{
LRESULT lResult = 0;
g_pIContext3->HandleMenuMsg2(message, wParam, lParam, &lResult);
return(lResult);
}
break;
case WM_DRAWITEM:
case WM_MEASUREITEM:
if (wParam) ...{
break; // if wParam != 0 then the message is not menu-related
}
case WM_INITMENUPOPUP:
if (g_pIContext2) ...{
g_pIContext2->HandleMenuMsg(message, wParam, lParam);
}
else ...{
g_pIContext3->HandleMenuMsg(message, wParam, lParam);
}
return(message == WM_INITMENUPOPUP ? 0 : TRUE);
break;
default:
break;
}
return ::CallWindowProc((WNDPROC) GetProp(hWnd, TEXT("oldWndProc")), hWnd, message, wParam, lParam);
}
jpg改rar
相关文章推荐
- 模拟window桌面实现
- 模拟window桌面实现
- PopupWindow进阶用法——android上实现类似UCweb的自定义menu,完全模拟系统事件
- 配置XDMCP实现在window下远程桌面Linux
- div+css实现window xp桌面图标布局(至上而下从左往右)
- Android之场景桌面(二)----模拟时钟实现
- 模拟window.open()实现页面自动弹窗
- window.Notification实现桌面通知
- 配置XDMCP实现在window下远程桌面Linux 推荐
- Android之场景桌面(二)----模拟时钟实现
- Java模拟QQ桌面截图功能实现方法
- div+css实现window xp桌面图标布局(至上而下从左往右)
- 实现模拟自动化来操作桌面
- [原]利用CSS3实现模拟一个windows7桌面的页面
- c#第一篇 在WPF的window窗体中使用httpwebrequest实现模拟登陆网页,并在webbroser控件中显示
- Window画图程序中画曲线的简单实现
- 银行家算法的模拟实现
- 用C#程序实现键盘和鼠标的模拟
- 在WebService中实现window身份验证的功能
- 如何在PB中实现透明DATAWINDOW?