周报_2012第09周(2012/02/26-2012/03/03)

项目:X保密项目

2012.02.29

WTL反射CMenu自绘消息(MEASUREITEM\DRAWITEM),GDI绘制菜单项8个颜色区域。 已完成

#include "FenceMenu.h"

MESSAGE_HANDLER(WM_MEASUREITEM, OnMeasureItem)
MESSAGE_HANDLER(WM_DRAWITEM, OnDrawItem)
CHAIN_MSG_MAP_MEMBER(m_menuFence)

MESSAGE_HANDLER(UDM_CONTEXTMENU_HOOK, OnMenuHook)

LRESULT    OnMouseMove(UINT uMsg,WPARAM wParam,LPARAM lParam,BOOL& bHandled);

LRESULT    OnMenuHook(UINT uMsg,WPARAM wParam,LPARAM lParam,BOOL& bHandled);

/*****************************************************************************\
    @file:    FolderView.h
    @brief:      brief description.
    @author:     lishupeng
    @create date:   2012-2-29 (21:48)
    @version:    ver1.0.0
    @func_name:
    @param [IN]:  first value.
    @param [IN]:  second value.
    @param [IN]:  ...
    @param [OUT]:  return value.
    @note:    Fence Screen ContextMenu Hook钩子窗口过程
    @detailed history description:
    ver -> date -> author -> actions
    1.0.0 -> 2012-2-29 -> lishupeng -> create
\*****************************************************************************/
static LRESULT CALLBACK HookContextMenuWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);

CFenceMenu m_menuFence;

int m_nColorMenuSel;

static WNDPROC            s_pOldProc;
static WNDPROC            s_pCurMenuProc;
static IContextMenu2*    s_pIContext2;

static IContextMenu3*    s_pIContext3;

static HBITMAP                 m_hIconChangeTxtBk;
static map<DWORD, HBITMAP>     m_mapIconsChangeTxtBk;//高位为1是文件名染色的背景图片,高位为0是数字图片。

static const TCHAR *s_arrColorMenuNames[] =
{
    _T("红色"),
    _T("橘黄"),
    _T("淡黄"),
    _T("嫩绿"),
    _T("天蓝"),
    _T("紫红"),
    _T("灰色"),
    _T("还原"),
};

// 16进制颜色RGB值、注意RGB顺序
static const COLORREF s_arrMenuRGB[] =
{
    0x0000FF,
    0x00A5FF,
    0x00FFFF,
    0x008000,
    0xFF0000,
    0x800080,
    0x6E6F73
};

 

// 通过自绘消息取得的环境菜单的窗口句柄
static HWND m_wndMenu = NULL;

const int gcn_COLOR_MENU_CNT = 8;
const int gcn_COLOR_MARGIN_TOP = 20;
const int gcn_COLOR_MARGIN_H = 20;
const int gcn_CONTEXTMENU_WIDTH = 200;
const int gcn_CONTEXTMENU_HEIGHT = 40;

if(InsertMenuW(hMenu, nPos, MF_POPUP|MF_BYPOSITION|MF_OWNERDRAW
, TEXT_BKCOLOR_COMMAND_IDBASE/*(UINT_PTR)(&m_menuFence)*/, L"更改文字背景色"))

POINT pt;
GetCursorPos(&pt);
idCmd = TrackPopupMenu(hMenu, TPM_LEFTALIGN | TPM_RETURNCMD | TPM_RIGHTBUTTON, pt.x, pt.y);

if (TEXT_BKCOLOR_COMMAND_IDBASE == idCmd)
{
cmi.cbSize = sizeof(CMINVOKECOMMANDINFO);
cmi.fMask = 0;
cmi.hwnd = m_pDUIContainer->m_hWnd;
cmi.lpVerb = MAKEINTRESOURCEA(idCmd/*-1*/);
cmi.lpParameters = NULL;
cmi.lpDirectory = NULL;
cmi.nShow = SW_SHOWNORMAL;
cmi.dwHotKey = 0;
cmi.hIcon = NULL;

if (!b64Program)
{
hr= spContextMenu->InvokeCommand(&cmi);
}

//INT nColorIndex = idCmd - TEXT_BKCOLOR_COMMAND_IDBASE;
if (m_nColorMenuSel >= 0)
{
pAppInfo->SetTextBkColorIndex(gcn_COLOR_MENU_CNT - 1 - m_nColorMenuSel);
//pAppInfo->SetTextBkColorIndex(nColorIndex);
InvalidateRect(NULL);
}
}

LRESULT CFolderView::OnMeasureItem(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& b_ret)
{
int nIDCtl = (UINT)wParam;
LPMEASUREITEMSTRUCT lpDrawItemStruct = (LPMEASUREITEMSTRUCT)lParam;
//lpDrawItemStruct->itemWidth = ::GetSystemMetrics(SM_CXMENUSIZE);
lpDrawItemStruct->itemWidth = gcn_CONTEXTMENU_WIDTH;
lpDrawItemStruct->itemHeight = gcn_CONTEXTMENU_HEIGHT;

return 1;
}

 

在右键菜单的自绘事件中,挂入钩子截获菜单窗口过程,分析消息(ID: 485),筛选出菜单项的mousemove事件、ncpaint/paint事件、ncdestroy/destroy事件。通知菜单项自身重绘,菜单销毁时恢复原有窗口过程。         30%     22:37

 

2012.03.01

判断鼠标位置绘制hover状态的图标。(用户体验产品设计-闫磊)

 

2012.03.02

截图进程功能需求:

1、增加截图统计:用户点击侧边栏截图按钮、消息盒子、意见反馈、快捷键启动360截图,均发送该统计http://stat.apc.360.cn/stat.html?type=new&action=snapshot&from=0&uid=1&pid=h_home&m=e0a9b0b3c25a85517a4873626575b29a&modulever=1.4.0.1135&appver=1.4.0.1135)。

action:= snapshot截图

from:= 0调起截图;=1矩形工具;=2圆形工具;=3箭头工具;=4画刷工具;=5荧光笔工具;=6文本工具;=7撤销编辑;=8保存选中区域;=9取消;=10完成=11分享/发微博;=12右键取消;=13右键显示菜单;=14右键矩形工具;=15右键圆形工具;=16右键箭头工具;=17右键画刷工具;=18右键荧光笔;=19右键文本工具;=20右键撤销编辑;=21右键重新选择绘图区域;=22右键完成截图=23右键保存;=24右键退出截图

 

/*****************************************************************************\
    @file:    MainFram.h
    @brief:      brief description.
    @author:     lishupeng
    @create date:   2012-3-2 (18:12)
    @version:    ver1.0.0
    @func_name:
    @param [IN]:  first value.
    @param [IN]:  second value.
    @param [IN]:  ...
    @param [OUT]:  return value.
    @note:    (=9取消;=10完成;=22右键完成截图;=24右键退出截图)4个操作要求
                延迟发送统计信息
    @detailed history description:
    ver -> date -> author -> actions
    1.0.0 -> 2012-3-2 -> lishupeng -> create
\*****************************************************************************/
void Delay(int time); //time为秒数

void CMainFram::Delay(int time) //time为秒数
{
    clock_t now = clock();
    while(clock() - now < time);
}

此方案不能解决问题(统计消息在进程结束之前不能成功发送),建议等待信号量。

18:00 已完成

 

2、截图鼠标移动跟随框性能调查。

在我的计算机上没有问题,已反馈产品设计张金瑞,需要进一步调查此问题先联系梁志辉。 18:38 已完成

 

项目:放射源监控地理信息系统

2012.03.02

用户角色功能权限

在 ASP.NET MVC 3.0 中应用 M$ Membership 角色权限控制模块,实现用户注册、登录、修改密码、Action的[Authorize]权限控制功能,VS2010 + SQL Server 2008,C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regsql.exe。

posted @ 2012-03-02 16:35  DancingFish  阅读(204)  评论(0编辑  收藏  举报