您的位置:首页 > 大数据 > 人工智能

paip.提高用户体验----增添开始菜单类似360小助手按钮总结 (补充c925)

2013-09-25 20:21 621 查看
paip.提高用户体验----增添开始菜单类似360小助手按钮总结 (补充c925)

作者Attilax , EMAIL:1466519819@qq.com

来源:attilax的专栏

地址:http://blog.csdn.net/attilax

1.加按钮

/////////////////

昨日.就是可以找到Shell_TrayWnd ..就是CreateWindowEx fail..今天用API Monitor V2 (Alpha-r5) 跟踪累挂..是个好东东.也能API上断点调试了...

发现CLASS,TITLE是乱码, 我的代码黑头是 (LPCWSTR)"button" ..不个哪更改成 L"button", L"atiBtn",一挂噪好兰..阿.原来中个阿..

其实这个按钮不是个扩展..走是个普通窗体..袖管哪个窗体也能了..

2.扩展位置

/////////////////

按钮加是加上兰.就是内个位置腾不开..over着了..API Monitor 跟踪累挂360小助手的.好像是有TIMMER 定时 MoveWindow了..走做磊个timmer,定时刷新ReBarWindow32的位置..



3.任务栏结构如下:

//////////////////////

Shell_TrayWnd

|- Button

|- TrayNotifyWnd

| |- TrayClockWClass

| \- ToolbarWindow32

\- ReBarWindow32

|- MSTaskSwWClass

| \- SysTabControl32

\- ToolbarWindow32



4.源码

--------------------

//AppWnd= FindWindow(L"Notepad",NULL );

//add satrt menu buttonNULL CreateWindow Shell_TrayWnd

find_taskbar:

HWND WinhandTask= FindWindow(L"Shell_TrayWnd",NULL);

//WinhandTask= FindWindowEx(WinhandTask, 0,L"Button", NULL);

qDebug()<<"---ati:WinhandTask-----"<<WinhandTask;

move_toolbar:

DWORD cs_style=WS_VISIBLE ; // WS_CHILD | |

HWND ReBarWin=FindWindowExW (WinhandTask, NULL, L"ReBarWindow32", NULL );

qDebug()<<"---ati:ReBarWin-----"<<ReBarWin;

// WINBOOL ReBarWinMoveResult= MoveWindow ( ReBarWin, 0, 0, 0x0000006e,700, TRUE );

// qDebug()<<"---ati:ReBarWinMoveResultaa-----"<<ReBarWinMoveResult;

WINBOOL ReBarWinMoveResult= MoveWindow ( ReBarWin, 0, 0, 0x0000006e,600, TRUE );

qDebug()<<"---ati:ReBarWinMoveResult-----"<<ReBarWinMoveResult;

ReBarWinMoveResult= MoveWindow ( ReBarWin, 0, 100, 0x0000006e,600, TRUE );

qDebug()<<"---ati:ReBarWinMoveResult-----"<<ReBarWinMoveResult;

create_start_menu_button:

// WS_BORDER;

int cs_x= 1;

int cs_y= 30;

int cs_cx= 45;

int cs_cy= 30;

/*

//WS_EX_APPWINDOW WS_EX_CLIENTEDGE

//WS_EX_LAYERED temin effect

//WS_VISIBLE|WS_OVERLAPPED|WS_SYSMENU|WS_POPUP

// WS_CHILD | WS_VISIBLE | WS_BORDER,

//WS_OVERLAPPED

// Over lapped

// 创建一个重叠的窗口,有一个标题栏和一个边框,等同于WS_TILED风格

//WS_EX_APPWINDOW 当窗口可视时,强制位于任务栏顶层 WS_EX_APPWINDOW

// | WS_VISIBLE| WS_OVERLAPPED

//WS_POPUP 创建pop-up窗口,不能与WS_CHILD风格共用

//WS_EX_TOPMOST 创建窗口在所有未设置该属性的窗口的上面,并保持这一状态,甚至窗口被停用,添加或删除这一风格,使用SetWindowPos函数

//WS_EX_TOOLWINDOW

//WS_EX_LAYERED WS_CLIPSIBLINGS

*/

HWND mybtnc922= CreateWindowEx( WS_EX_TOPMOST|WS_EX_TOOLWINDOW ,

L"button",

L"atiBtn",

WS_VISIBLE|WS_POPUP,

cs_x,

cs_y,

cs_cx,

cs_cy,

WinhandTask,

NULL,

(HINSTANCE) 0x00400000,

NULL);

// CreateWindowEx ( WS_EX_CLIENTEDGE,

// L"button",

// L"contrl title",

// WS_VISIBLE ,

// 200,

// 50,

// 160,

// 70,

// AppWnd,

// NULL ,

// NULL,

// NULL

// );

qDebug()<<"---ati:mybtnc922-----"<<mybtnc922;

qDebug()<<"---ati:WS_VISIBLE-----"<<(int)WS_VISIBLE;

//SetParent(mybtnc922,WinhandTask);

//move_btn:

// WINBOOL mybtnc922_move_btn_result= MoveWindow ( mybtnc922, 5, 60, 45,30, TRUE );

// qDebug()<<"---ati:move_btn-----"<<mybtnc922_move_btn_result;

//move_btn2:

// mybtnc922_move_btn_result= MoveWindow ( mybtnc922, 10, 60, 45,30, TRUE );

// qDebug()<<"---ati:move_btn-----"<<mybtnc922_move_btn_result;

// ReBarWinMoveResult= MoveWindow ( ReBarWin, 0, 100, 0x0000006e,600, TRUE );

//qDebug()<<"---ati:ReBarWinMoveResult-----"<<ReBarWinMoveResult;

///end start menu btn

qDebug()<<GetLastError();

create_start_menu_button_End:

timer_4_refresh_taskbar:

QTimer* timer=new QTimer();

taskbar* taskbarCls=new taskbar();

QObject:: connect(timer,SIGNAL(timeout()),taskbarCls,SLOT(refresh_taskbar()));

timer->start(200);

参考:

paip.提高用户体验----增添开始菜单类似360小助手按钮总结

WinAPI FindWindow、FindWindowEx - 查找窗口 - 万一 - 博客园.htm

VC++ 高手进 :findwindow函数怎么获取不到这个窗口?_百度知道.htm

用C++ Builder在Windows“开始”按钮上绘图 - CSDN论坛 - CSDN.NET.htm

C# CreateWindowEx创建按钮事件 - CSDN论坛 - CSDN.NET.htm

CreateWindowEx_百度百科.htm

CreateWindowEx函数 作用翻译 (一)_idol_新浪博客.htm.lnk

CreateWindowEx函数 作用翻译 (二)_idol_新浪博客.htm

关于CreateWindowEx的显示问题 - CSDN论坛 - CSDN.NET.htm

如何用CreateWindowEx创建一个BUTTON(VC,Win32)_百度知道.htm

FindWindow返回句柄失败, GetLastError()却返回0!!!! 易语言俱乐部 - 易语言汉语编程官方论坛.htm

HOW TO:将程序窗口嵌入到任务栏中 - Alexis·M - 博客频道 - CSDN.NET.htm

D:\Program Files\360\360Safe\SoftMgr\SML\SoftMgrLite.exe
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: