📄 popuplogdlg.h
字号:
// PopupLogDlg.h : interface of the CPopupLogDlg class
//
/////////////////////////////////////////////////////////////////////////////
#ifndef __PopupLogDlg_h__
#define __PopupLogDlg_h__
class CPopupLogDlg : public CDialogImpl<CPopupLogDlg>
{
public:
enum { IDD = IDD_POPUP_LOG };
CDlgItemResizer m_Resizer;
CListViewCtrl m_listLog;
BEGIN_MSG_MAP(CPopupLogDlg)
MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
MESSAGE_HANDLER(WM_SIZE, OnSize)
MESSAGE_HANDLER(WM_CONTEXTMENU, OnContextMenu)
END_MSG_MAP()
LRESULT OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
{
//add controls to resize manager
m_Resizer.Add(m_hWnd, IDC_LOG_LIST,
RESIZE_LOCKLEFT|RESIZE_LOCKRIGHT|RESIZE_LOCKTOP|RESIZE_LOCKBOTTOM);
//set grid style for list control
m_listLog.Attach(GetDlgItem(IDC_LOG_LIST));
DWORD dwStyle;
dwStyle = m_listLog.SendMessage(LVM_GETEXTENDEDLISTVIEWSTYLE);
dwStyle |= LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT | LVS_EX_LABELTIP;
m_listLog.SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE, 0, (LPARAM)dwStyle);
// set column header
CString sHeaderTitle;
LV_COLUMN lvc;
lvc.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
sHeaderTitle.LoadString(IDS_LOG_TIME);
lvc.iSubItem = 0;
lvc.pszText = sHeaderTitle.LockBuffer();
lvc.cx = 120;
lvc.fmt = LVCFMT_LEFT;
m_listLog.InsertColumn(0, &lvc);
sHeaderTitle.UnlockBuffer();
sHeaderTitle.LoadString(IDS_LOG_TITLE);
lvc.iSubItem = 1;
lvc.pszText = sHeaderTitle.LockBuffer();
lvc.cx = 150;
lvc.fmt = LVCFMT_LEFT;
m_listLog.InsertColumn(1, &lvc);
sHeaderTitle.UnlockBuffer();
sHeaderTitle.LoadString(IDS_LOG_URL);
lvc.iSubItem = 2;
lvc.pszText = sHeaderTitle.LockBuffer();
lvc.cx = 150;
lvc.fmt = LVCFMT_LEFT;
m_listLog.InsertColumn(2, &lvc);
sHeaderTitle.UnlockBuffer();
sHeaderTitle.LoadString(IDS_LOG_TYPE);
lvc.iSubItem = 3;
lvc.pszText = sHeaderTitle.LockBuffer();
lvc.cx = 60;
lvc.fmt = LVCFMT_LEFT;
m_listLog.InsertColumn(3, &lvc);
sHeaderTitle.UnlockBuffer();
sHeaderTitle.LoadString(IDS_LOG_FILTER);
lvc.iSubItem = 4;
lvc.pszText = sHeaderTitle.LockBuffer();
lvc.cx = 110;
lvc.fmt = LVCFMT_LEFT;
m_listLog.InsertColumn(4, &lvc);
sHeaderTitle.UnlockBuffer();
return TRUE;
}
LRESULT OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
m_Resizer.Resize(m_hWnd);
return 0;
}
LRESULT OnContextMenu(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
CPoint point;
CRect rectLog;
point.x = GET_X_LPARAM(lParam);
point.y = GET_Y_LPARAM(lParam);
m_listLog.GetWindowRect(&rectLog);
if (! rectLog.PtInRect(point))
{
bHandled = FALSE;
return 0;
}
int nIndex = m_listLog.GetNextItem(-1,LVNI_SELECTED);
CMenu menu;
menu.LoadMenu(IDR_POPUP_LOG);
CMenuHandle menuPopup = menu.GetSubMenu(0);
if (nIndex < 0)
{
::EnableMenuItem(menuPopup, ID_LOG_EXCLUDE, MF_BYCOMMAND | MF_GRAYED);
::EnableMenuItem(menuPopup, ID_LOG_GOTO_FILTER, MF_BYCOMMAND | MF_GRAYED);
::EnableMenuItem(menuPopup, ID_LOG_COPY_URL, MF_BYCOMMAND | MF_GRAYED);
}
else
{
g_Global.m_lockPopupLog.ReadLock();
nIndex = m_listLog.GetItemData(nIndex);
if (g_Global.m_vecPopupLog[nIndex]->m_lKillType == KILLED_BY_SIZE)
{
::EnableMenuItem(menuPopup, ID_LOG_GOTO_FILTER, MF_BYCOMMAND | MF_GRAYED);
}
g_Global.m_lockPopupLog.ReadUnlock();
}
::TrackPopupMenu(menuPopup,
TPM_RIGHTBUTTON | TPM_VERPOSANIMATION | TPM_VERTICAL,
point.x, point.y, 0, ::GetParent(m_hWnd), NULL);
return 0;
}
};
#endif //__PopupLogDlg_h__
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -