您的位置:首页 > 其它

模拟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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: