周报_2012第11周(2012/03/11-2012/03/17)

项目:X保密项目

2012.03.12

// Win XP 需要判断取消操作.    By lishupeng@360.cn 2012/03/12 11:49.
    if (FileOp.fAnyOperationsAborted)
    {
        bRet = FALSE;
    }

 

const int gcn_SEC_DELAY = 100;    // 等待 HTTP Download 下载线程处理网络数据。
                                // By lishuepng@360.cn 2012/03/12 16:37

if (Report(STAT_*))
            {
                ShowWindow(SW_HIDE);
                Delay(gcn_SEC_DELAY);
                PostMessage(WM_CLOSE);
                //TerminateProcess(GetCurrentProcess(),0);

                //PostQuitMessage(-1);
                //TerminateProcess(GetCurrentProcess(),0);
            }

 

2012.03.13

\BackUp\import.fg 配置文件 –> \AppData\Roaming\360Desktop

 

2012.03.14

// DRAWENTIRE时窗口句柄为空。 RedrawWindow时窗口句柄有效。
            //m_wndMenu = ::WindowFromDC(lpDIS->hDC);
            //::GetWindowRect(m_wndMenu, &rectTmp);

 

if (ODA_SELECT == lpDIS->itemAction)
{
    // 菜单高度超过屏幕高度时,菜单项位置会变化,每次选中时需要保存菜单项位置。
    m_wndMenu = ::WindowFromDC(lpDIS->hDC);
   
    // 获取菜单的裁剪区域
    ::GetClipBox(lpDIS->hDC, &rectTmp);
   
    // 判断菜单是否被裁剪,如果被裁剪则计算顶端偏移位置。(20像素为菜单顶端和底端箭头按钮的高度)
    int nTopOffset = rectTmp.top ? 20 - rectTmp.top : 0;
   
    ::GetWindowRect(m_wndMenu, &rectTmp);
    // 系统内置 V:3 像素边框
    rectTmp.top    = rectTmp.top + lpDIS->rcItem.top + gcn_COLOR_MARGIN_TOP + 3 + nTopOffset;
    rectTmp.bottom = rectTmp.top + bmpInfo.bmHeight;
    // 系统内置 H:4 像素边框
    rectTmp.left += 4;
    m_vecIconRect.clear();
    for (int i = 0; i < s_nColorMenuItemCnt; ++i)
    {
        rectTmp.left = rectTmp.left + gcn_COLOR_MARGIN_H;               
        rectTmp.right = rectTmp.left + bmpInfo.bmWidth;               
        m_vecIconRect.push_back(rectTmp);
    }

    // 鼠标进入热区后截获环境菜单的窗口过程。    Added by Li Shupeng 2012\02\29 22:13.
    if (s_pCurMenuProc == NULL)
    {
        this->PostMessageW(UDM_CONTEXTMENU_HOOK, WPARAM(m_wndMenu), NULL);
    }
}

 

LRESULT CFolderView::OnMeasureItem(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& b_ret)
{   
    int nIDCtl = (UINT)wParam;
    LPMEASUREITEMSTRUCT lpDrawItemStruct = (LPMEASUREITEMSTRUCT)lParam;

    // Windows XP 下判断控件类型: 菜单项 TEXT_BKCOLOR_COMMAND_IDBASE(区别 Notepad++ 的自绘菜单项)
    if (ODT_MENU == lpDrawItemStruct->CtlType && TEXT_BKCOLOR_COMMAND_IDBASE == lpDrawItemStruct->itemID)


}

 

LRESULT CFolderView::OnDrawItem(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& b_ret)
{
    int nCtrlID = (UINT)wParam;
    LPDRAWITEMSTRUCT lpDIS = (LPDRAWITEMSTRUCT)lParam;   

    // Windows XP 下判断控件类型: 菜单项 TEXT_BKCOLOR_COMMAND_IDBASE(区别 Notepad++ 的自绘菜单项)
    if (ODT_MENU == lpDIS->CtlType && TEXT_BKCOLOR_COMMAND_IDBASE == lpDIS->itemID)


}

 

2012.03.15

调查截图操作异常:全屏的截图进程启动之后,再激活后台进程窗口,截图进程的窗口过程将不会再接收到键盘消息。

解决方案:创建线程监控激活的进程窗口。

 

virtual BOOL PreTranslateMessage(MSG* pMsg)
{
    if(pMsg->message==WM_KEYDOWN)
    {
        HWND hWndLiveWriter = ::FindWindowW(_T("WindowsForms10.Window.8.app.0.33c0d9d"), NULL);
        switch ((int)pMsg->wParam)
        {
        case VK_ESCAPE:
            Report(STAT_ESC);
            ShowWindow(SW_HIDE);
            Delay(gcn_SEC_DELAY);
            PostMessage(WM_CLOSE);
            return TRUE;
        case VK_SHIFT:               
            if (hWndLiveWriter)
            {
                ::ShowWindow(hWndLiveWriter, SW_SHOW);
            }
            break;
        case VK_CONTROL:               
            if (hWndLiveWriter)
            {
                ::SetForegroundWindow(m_hWnd);
            }
            break;
        }
    }

    if( CFrameWindowImpl<CMainFram>::PreTranslateMessage(pMsg) )
    {
        return TRUE;
    }
    else
    {
        return FALSE;
    }
}

 

DWORD dwThreadId = 0;
g_hThreadActive = CreateThread(
    NULL,                   // default security attributes
    0,                      // use default stack size 
    MonitorActiveThread,    // thread function name
    wndMain.m_hWnd,         // argument to thread function
    CREATE_SUSPENDED,       // use default creation flags
    &dwThreadId);            // returns the thread identifier
if (g_hThreadActive)
{
    ResumeThread(g_hThreadActive);
}


 

if (g_hThreadActive)
{
    TerminateThread(g_hThreadActive, 0);
    CloseHandle(g_hThreadActive);
    g_hThreadActive = NULL;
}

 

DWORD WINAPI MonitorActiveThread( LPVOID lpParam )
{
    while (true)
    {
        HWND hWndMainfrm = (HWND)lpParam;
        if (hWndMainfrm == NULL)
        {
            break;
        }
        HWND hWndForeground = ::GetForegroundWindow();
        if (hWndForeground && (hWndMainfrm != hWndForeground))
        {
            ::SetForegroundWindow(hWndMainfrm);
        }               
    }

    return 0;
}

转载于:https://www.cnblogs.com/DancingFish/archive/2012/03/12/2391554.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/475262.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 246. 中心对称数(哈希)

文章目录1. 题目2. 解题1. 题目 中心对称数是指一个数字在旋转了 180 度之后看起来依旧相同的数字&#xff08;或者上下颠倒地看&#xff09;。 请写一个函数来判断该数字是否是中心对称数&#xff0c;其输入将会以一个字符串的形式来表达数字。 示例 1: 输入: "69&qu…

LeetCode 276. 栅栏涂色(DP)

文章目录1. 题目2. 解题2.1 DP超时解2.2 DP解1. 题目 有 k 种颜色的涂料和一个包含 n 个栅栏柱的栅栏&#xff0c;每个栅栏柱可以用其中一种颜色进行上色。 你需要给所有栅栏柱上色&#xff0c;并且保证其中相邻的栅栏柱 最多连续两个 颜色相同。然后&#xff0c;返回所有有效…

学习编程好榜样

学习编程好榜样 忠于gaming忠于down 代码分明不忘本 逻辑清晰容错强 逻辑清晰容错强 ! 学习编程好榜样 放到哪里哪里run 愿作系统的中间件 开源主义思想放光芒 开源主义思想放光芒! 学习编程好榜样 调试跟踪永不忘 注释文档是模范 开源主义品德多高尚 …

python threading setdaemon_Python中threading的join和setDaemon的区别[带例子]

python的进程和线程经常用到&#xff0c;之前一直不明白threading的join和setDaemon的区别和用法&#xff0c;今天特地研究了一下。multiprocessing中也有这两个方法&#xff0c;同样适用&#xff0c;这里以threading的join和setDaemon举例。1、join ()方法&#xff1a;主线程A…

LeetCode 1176. 健身计划评估(滑动窗口)

文章目录1. 题目2. 解题1. 题目 你的好友是一位健身爱好者。前段日子&#xff0c;他给自己制定了一份健身计划。现在想请你帮他评估一下这份计划是否合理。 他会有一份计划消耗的卡路里表&#xff0c;其中 calories[i] 给出了你的这位好友在第 i 天需要消耗的卡路里总量。 为…

为什么苹果不再需要谷歌地图?

苹果和谷歌之间的专利大战正是如火如荼&#xff0c;在这种两军对垒的时候&#xff0c;iOS设备上的那个明晃晃的谷歌地图图标就像眼中钉肉中刺一样让苹果始终不得安宁&#xff0c;让对手的核心服务扎根到自己的核心平台中&#xff0c;这感觉肯定不好。在最新版本的iPhoto中&…

java sax解析xml_【转】java使用sax解析xml文件

从下面这个url搬运。http://hck.iteye.com/blog/1175762不过程序略有改动。关于sax(搬自百科)SAX&#xff0c;全称Simple API for XML&#xff0c;既是指一种接口&#xff0c;也是指一个软件包。SAX是事件驱动型 XML解析的一个标准接口不会改变 SAX的工作原理简单地说就是…

LeetCode 422. 有效的单词方块

文章目录1. 题目2. 解题1. 题目 给你一个单词序列&#xff0c;判断其是否形成了一个有效的单词方块。 有效的单词方块是指此由单词序列组成的文字方块的 第 k 行 和 第 k 列 (0 ≤ k < max(行数, 列数)) 所显示的字符串完全相同。 注意&#xff1a; 给定的单词数大于等于…

中断处理

首先在获得PCI配置空间资源的时候&#xff0c;就要获得中断资源&#xff0c;根据CM_PARTIAL_RESOURCE_DESCRIPTOR 结构的 Type 域来区分需要获得什么样的中断资源的时候&#xff0c;如果Type类型为&#xff1a;CmResourceTypeInterrupt&#xff0c;此时需要将中断资源从CM_PART…

java calendar计算时间差_Java Calendar 计算时间差

linux下创建文件与目录时默认被赋予了什么样的权限&quest;当我们创建一个新的文件或目录的时候,他的默认权限是什么? umask--指定当前使用者在创建文件或目录的时候默认的权限值 [rootiZ288fgkcpkZ default]# umask [roo ...x86平台转x64平台关于内联汇编不再支持的解决x8…

SVG-不是图片的图片

SVG-不是图片的图片 导语&#xff1a; 可缩放矢量图形&#xff08;Scalable Vector Graphics&#xff0c;SVG&#xff09;是基于可扩展标记语言&#xff08;XML&#xff09;&#xff0c;用于描述二维矢量图形的一种图形格式。SVG由W3C制定&#xff0c;是一个开放标准。另SVG还是…

LeetCode 1490. 克隆 N 叉树(DFS/BFS)

文章目录1. 题目2. 解题2.1 DFS2.2 BFS1. 题目 给定一棵 N 叉树的根节点 root &#xff0c;返回该树的深拷贝&#xff08;克隆&#xff09;。 N 叉树的每个节点都包含一个值&#xff08; int &#xff09;和子节点的列表&#xff08; List[Node] &#xff09;。 class Node …

奇数阶幻方 java_N(奇数)阶幻方-java实现代码

看完最强大脑&#xff0c;有一期是说N阶幻立方的&#xff0c;作为一个程序员&#xff0c;我的第一反应时我可以用程序实现&#xff0c;在此公布N(奇数)阶幻方的java实现代码&#xff1a;package com.lzugis.test;public class Practice {public static int[][] magicOdd(int n)…

NSDateFormatter设定日期格式

部分日期格式的总结&#xff1a; NSDateFormatter * dateFormatter [[[NSDateFormatter alloc] init]autorelease]; [dateFormatter setAMSymbol:"AM"]; [dateFormatter setPMSymbol:"PM"]; [dateFormatter setDateFormat:"dd/MM/yyyy hh:mmaaa"…

LeetCode 1265. 逆序打印不可变链表(递归)

文章目录1. 题目2. 解题1. 题目 给您一个不可变的链表&#xff0c;使用下列接口逆序打印每个节点的值&#xff1a; ImmutableListNode: 描述不可变链表的接口&#xff0c;链表的头节点已给出。 您需要使用以下函数来访问此链表&#xff08;您 不能 直接访问 ImmutableListNo…

zz面试题小结

如果搞过ACM的人&#xff0c;找工作的确很好找&#xff0c;基本微软、百度之类都可以很容易拿到offer&#xff0c;我不是算法牛人&#xff0c;没搞过ACM&#xff0c;没拿过什么奖&#xff0c;没进过什么实验室&#xff0c;水平一般&#xff0c;所以更能代表大众吧。 总结一些常…

java流的传递方式是_java中数据的传递方式到底是怎样的!

今天早上我了一道有关java的题。主要考点是考java中值得传递方式。之前我在javaoo里总结的是&#xff1a;基本数据类型中保存的是实际的值,引用数据类型保存的是被引用的内存地址&#xff0c;那么基本数据类型就是按值传递&#xff0c;引用数据类型就是按地址来传递的。(难道我…

LeetCode 408. 有效单词缩写

文章目录1. 题目2. 解题1. 题目 给一个 非空 字符串 s 和一个单词缩写 abbr &#xff0c;判断这个缩写是否可以是给定单词的缩写。 字符串 “word” 的所有有效缩写为&#xff1a; ["word", "1ord", "w1rd", "wo1d", "wor1&qu…

java 钩子线程_java-钩子线程

在线上Java程序中经常遇到进程程挂掉&#xff0c;一些状态没有正确的保存下来&#xff0c;这时候就需要在JVM关掉的时候执行一些清理现场的代码。Java中得ShutdownHook提供了比较好的方案。JDK在1.3之后提供了Java Runtime.addShutdownHook(Thread hook)方法&#xff0c;可以注…

LeetCode 604. 迭代压缩字符串

文章目录1. 题目2. 解题1. 题目 对于一个压缩字符串&#xff0c;设计一个数据结构&#xff0c;它支持如下两种操作&#xff1a; next 和 hasNext。 给定的压缩字符串格式为&#xff1a;每个字母后面紧跟一个正整数&#xff0c;这个整数表示该字母在解压后的字符串里连续出现的…