项目: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。