当前位置: 首页 > news >正文

asp 网站 源码wordpress 文章加评论

asp 网站 源码,wordpress 文章加评论,贵州网站设计,中国中铁建设集团门户网登录一、目标#xff1a; windows中#xff0c;打开chromium#xff0c;任务栏中会出现一个chromium的图标。我们的目标是给这个图标的右上角#xff0c;加上有1条新消息的小提示图标#xff0c;也叫徽章(badge)注意#xff1a;本章节纯属娱乐#xff0c;有需要…一、目标 windows中打开chromium任务栏中会出现一个chromium的图标。我们的目标是给这个图标的右上角加上有1条新消息的小提示图标也叫徽章(badge)注意本章节纯属娱乐有需要的集帅可以学习模仿。 具体效果如下 二、修改源码 打开\ui\views\view.cc 1.头部追加 #include Shobjidl.h #include windows.h #include shellapi.h2.找到 bool View::OnMousePressed(const ui::MouseEvent event) {return false; }OnMousePressed()函数是可以点击事件每次点击浏览器头部时都会触发这个函数。 3.替换为 void UpdateTaskbarIcon(HWND hwnd, HICON hIcon) {ITaskbarList3* pTaskbarList nullptr;HRESULT hr CoCreateInstance(CLSID_TaskbarList, nullptr, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(pTaskbarList));if (SUCCEEDED(hr)) {pTaskbarList-SetOverlayIcon(hwnd, hIcon, L有1条新消息);pTaskbarList-Release(); LOG(ERROR) SetOverlayIcon成功调用; }else{LOG(ERROR) ERRORERRORERROR; } }void SetTaskbarIconOverlay(HWND hwnd) {wchar_t className[256];GetClassName(hwnd, className, sizeof(className) / sizeof(wchar_t));LOG(ERROR) 窗口类名; LOG(ERROR) className; LPCWSTR iconPath LC:/Users/Administrator/Desktop/favicon.ico;HICON hIcon (HICON)LoadImage(NULL, iconPath, IMAGE_ICON, 16, 16, LR_LOADFROMFILE);if (!hIcon) {MessageBox(hwnd, L无法加载图标。, L错误, MB_OK | MB_ICONERROR);} else {UpdateTaskbarIcon(hwnd, hIcon);} }bool View::OnMousePressed(const ui::MouseEvent event) {CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED);LPCWSTR className LChrome_WidgetWin_1;LPCWSTR windowName nullptr; // 如果你不知道窗口的标题可以设置为nullptr// 获取窗口句柄HWND hwnd FindWindow(className, windowName);if (hwnd ! NULL) {HWND parentHwnd GetParent(hwnd);if (parentHwnd NULL) {LOG(ERROR) hwnd 是一个顶级窗口; } else {LOG(ERROR) hwnd 不是一个顶级窗口; }}LOG(ERROR) hwnd;wchar_t windowTitle[256];GetWindowText(hwnd, windowTitle, sizeof(windowTitle) / sizeof(wchar_t));LOG(ERROR) 窗口标题; LOG(ERROR) windowTitle; bool isVisible IsWindowVisible(hwnd);LOG(ERROR) isVisible; LOG(ERROR) isVisible; DWORD processId;GetWindowThreadProcessId(hwnd, processId);LOG(ERROR) processId; LOG(ERROR) processId; SetTaskbarIconOverlay(hwnd);CoUninitialize();return false; }注意 将ico图标位置(变量iconPath )替换成你图标的位置必须是ico其他格式不行。LOG(ERROR)是用来打印错误日志的可以忽略最终实现原理是调用win32编程api里的SetOverlayIcon()函数。 4.编译 ninja -C out/Default chrome编译完成后打开浏览器一旦点击浏览器头部图标就出现啦 三、代码生成数字ico 有的同学想到要右上角希望是数字图标我们总不能准备99张ico图标吧。于是我们用代码在内存中生成ico 将上面的代码改成 HICON CreateNumberIcon(int number) {if (number 99) {number 99;}// 创建一个16x16的位图HDC hdcScreen GetDC(NULL);HDC hdcMem CreateCompatibleDC(hdcScreen);BITMAPINFO bmi {};bmi.bmiHeader.biSize sizeof(BITMAPINFOHEADER);bmi.bmiHeader.biWidth 16;bmi.bmiHeader.biHeight -16; // 负值表示自上而下bmi.bmiHeader.biPlanes 1;bmi.bmiHeader.biBitCount 32; // 32位带透明通道bmi.bmiHeader.biCompression BI_RGB;bmi.bmiHeader.biSizeImage 0;bmi.bmiHeader.biXPelsPerMeter 0;bmi.bmiHeader.biYPelsPerMeter 0;bmi.bmiHeader.biClrUsed 0;bmi.bmiHeader.biClrImportant 0;void* pBits;HBITMAP hBitmap CreateDIBSection(hdcMem, bmi, DIB_RGB_COLORS, pBits, NULL, 0);HBITMAP hOldBitmap (HBITMAP)SelectObject(hdcMem, hBitmap);// 设置背景为透明memset(pBits, 0, 16 * 16 * 4); // 初始化位图为透明// 设置字体和颜色HFONT hFont CreateFont(14, 0, 0, 0, FW_BOLD, FALSE, FALSE, FALSE, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, CLEARTYPE_QUALITY, DEFAULT_PITCH | FF_DONTCARE, LArial);HFONT hOldFont (HFONT)SelectObject(hdcMem, hFont);SetTextColor(hdcMem, RGB(255, 0, 0)); // 设置数字颜色为红色SetBkMode(hdcMem, TRANSPARENT);// 计算数字的居中位置std::wstring text std::to_wstring(number);RECT rect {0, 0, 16, 16};DrawText(hdcMem, text.c_str(), text.length(), rect, DT_CENTER | DT_VCENTER | DT_SINGLELINE);// 清理SelectObject(hdcMem, hOldFont);DeleteObject(hFont);SelectObject(hdcMem, hOldBitmap);DeleteDC(hdcMem);ReleaseDC(NULL, hdcScreen);// 将位图转换为图标ICONINFO iconInfo { TRUE, 0, 0, hBitmap, hBitmap };HICON hIcon CreateIconIndirect(iconInfo);DeleteObject(hBitmap);return hIcon; }void UpdateTaskbarIcon(HWND hwnd, HICON hIcon) {ITaskbarList3* pTaskbarList nullptr;HRESULT hr CoCreateInstance(CLSID_TaskbarList, nullptr, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(pTaskbarList));if (SUCCEEDED(hr)) {pTaskbarList-SetOverlayIcon(hwnd, hIcon, L新消息);pTaskbarList-Release(); LOG(ERROR) SetOverlayIcon成功调用; }else{LOG(ERROR) ERRORERRORERROR; } }void SetTaskbarIconOverlay(HWND hwnd) {wchar_t className[256];GetClassName(hwnd, className, sizeof(className) / sizeof(wchar_t));LOG(ERROR) 窗口类名; LOG(ERROR) className; //LPCWSTR iconPath LC:/Users/Administrator/Desktop/favicon.ico;//HICON hIcon (HICON)LoadImage(NULL, iconPath, IMAGE_ICON, 16, 16, LR_LOADFROMFILE);HICON hIcon CreateNumberIcon(72);if (!hIcon) {MessageBox(hwnd, L无法加载图标。, L错误, MB_OK | MB_ICONERROR);} else {UpdateTaskbarIcon(hwnd, hIcon);} }bool View::OnMousePressed(const ui::MouseEvent event) {CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED);LPCWSTR className LChrome_WidgetWin_1;LPCWSTR windowName nullptr; // 如果你不知道窗口的标题可以设置为nullptr// 获取窗口句柄HWND hwnd FindWindow(className, windowName);SetTaskbarIconOverlay(hwnd);bool isVisible IsWindowVisible(hwnd);LOG(ERROR) isVisible; LOG(ERROR) isVisible; CoUninitialize();return false; }效果 五、优化 还需要优化的是想改成白色圆形透明背景。但稍微尝试了下没改对。就这样吧调试太费时间了。题主懒集帅自行优化吧
http://www.hkea.cn/news/14358973/

相关文章:

  • 赣州网站建设如何wordpress 评论列表
  • 企业网站导航下拉菜单怎么做网站广告看不到
  • 阿里巴巴1688网站做店铺想开个网站建设的公司
  • 现在从事网站开发如何wordpress 图库插件
  • 怎么做自己的企业网站临沂网站哪家好
  • 上海模板建站哪家好做网站要搭建本地服务器么
  • site 危险网站建设银行短信带网站
  • 怎么做网站流量统计分析网站建设过程中需要注意的通用原则
  • asp网站打开贵阳网站建设报价
  • 英雄联盟网站模版网站制作没有原创图片怎么办
  • 企业门户网站建设方案及报价wordpress页面里放j特效
  • 个人如何建立公司网站农产品信息网站的建设
  • 邢台网站建设03191688夺目视频制作网站
  • 网站引流推广网站的功能规范
  • 建设部监理工程师考试网站摄影网站制作步骤html
  • 企业北京响应式网站制作安徽网新科技
  • 常熟做网站的公司自己做网站怎么上传到网上
  • 建设部执业资格网站中国商标注册申请官网
  • 外贸网站的作用做网站全部乱码怎么办
  • 蕴川路上海网站建设企业网站属于广告吗
  • 免费建立网站软件公司做网站费用账务处理
  • 乐山网站开发三创大赛网站建设
  • 网页设计和网站建设是同一回事吗深圳服装网站建设
  • 网站建设未来趋势天津市建设教育培训网
  • 宁津华企动力做网站的电话多少wordpress标题换行
  • 网站 板块 栏目在线代理网页版 proxy
  • 大连零基础网站建设培训电话太平阳建设集团网站
  • 长春seo网站排名优化wordpress文章分多列排
  • 扬州建设工程信息网站深圳培训网站建设
  • 自己做链接网站江西 商城网站开发