|
@@ -25,6 +25,11 @@ void CValueWnd::Init()
|
|
|
//添加托盘图标
|
|
//添加托盘图标
|
|
|
AddTrayIcon();
|
|
AddTrayIcon();
|
|
|
|
|
|
|
|
|
|
+ //初始化菜单窗口
|
|
|
|
|
+ pMenu = new CMenuWnd();
|
|
|
|
|
+ pMenu->Create(m_hWnd, L"智铺子收银插件菜单", WS_POPUP, WS_EX_TOOLWINDOW);
|
|
|
|
|
+ pMenu->ShowWindow(false);
|
|
|
|
|
+
|
|
|
BOOL isAdmin = CSystem::IsRunasAdmin();
|
|
BOOL isAdmin = CSystem::IsRunasAdmin();
|
|
|
|
|
|
|
|
if(isAdmin)
|
|
if(isAdmin)
|
|
@@ -243,7 +248,7 @@ LRESULT CValueWnd::OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHand
|
|
|
m_pm.AttachDialog(pRoot);
|
|
m_pm.AttachDialog(pRoot);
|
|
|
|
|
|
|
|
// 把自己加入到CPaintManagerUI的m_aNotifiers数组中,用于处理Notify函数
|
|
// 把自己加入到CPaintManagerUI的m_aNotifiers数组中,用于处理Notify函数
|
|
|
- m_pm.AddNotifier(this);
|
|
|
|
|
|
|
+ //m_pm.AddNotifier(this);
|
|
|
|
|
|
|
|
//进行一些初始化工作
|
|
//进行一些初始化工作
|
|
|
Init();
|
|
Init();
|
|
@@ -320,6 +325,74 @@ LRESULT CValueWnd::OnNcHitTest(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bH
|
|
|
return HTCLIENT;
|
|
return HTCLIENT;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+LRESULT CValueWnd::OnLButtonDown(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
|
|
|
|
|
+{
|
|
|
|
|
+/*
|
|
|
|
|
+ //获取鼠标点击位置
|
|
|
|
|
+ int xPos = LOWORD(lParam);
|
|
|
|
|
+ int yPos = HIWORD(lParam);
|
|
|
|
|
+
|
|
|
|
|
+ //將位置转换为屏幕坐标
|
|
|
|
|
+ POINT pt = { xPos,yPos };
|
|
|
|
|
+ ClientToScreen(m_hWnd, &pt);
|
|
|
|
|
+
|
|
|
|
|
+ RECT menuWndRect = { 0 };
|
|
|
|
|
+ ::GetWindowRect(pMenu->GetHWND(), &menuWndRect);
|
|
|
|
|
+
|
|
|
|
|
+ if (pt.x <= menuWndRect.left || pt.x >= menuWndRect.right
|
|
|
|
|
+ || pt.y <= menuWndRect.top || pt.y >= menuWndRect.bottom)
|
|
|
|
|
+ {
|
|
|
|
|
+ pMenu->ShowWindow(false);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ bHandled = FALSE;
|
|
|
|
|
+ return 0;*/
|
|
|
|
|
+
|
|
|
|
|
+ bHandled = FALSE;
|
|
|
|
|
+ return 0;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+LRESULT CValueWnd::OnRButtonDown(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
|
|
|
|
|
+{
|
|
|
|
|
+/*
|
|
|
|
|
+ int xPos = LOWORD(lParam);
|
|
|
|
|
+ int yPos = HIWORD(lParam);
|
|
|
|
|
+
|
|
|
|
|
+ POINT pt = { xPos,yPos };
|
|
|
|
|
+
|
|
|
|
|
+ //可能是因为整个窗口都是标题区域,这里不需要做转换
|
|
|
|
|
+ //ClientToScreen(m_hWnd, &pt);
|
|
|
|
|
+
|
|
|
|
|
+ pMenu->ShowWindow(true);
|
|
|
|
|
+
|
|
|
|
|
+ ::SetWindowPos(pMenu->GetHWND(), NULL, pt.x, pt.y, 0, 0, SWP_NOSIZE | SWP_NOACTIVATE);
|
|
|
|
|
+
|
|
|
|
|
+ bHandled = FALSE;
|
|
|
|
|
+ return 0;*/
|
|
|
|
|
+
|
|
|
|
|
+ //获取鼠标坐标
|
|
|
|
|
+ POINT pt;
|
|
|
|
|
+ GetCursorPos(&pt);
|
|
|
|
|
+ //右击后点别地可以清除“右击出来的菜单”
|
|
|
|
|
+ SetForegroundWindow(m_hWnd);
|
|
|
|
|
+ //托盘菜单 win32程序使用的是HMENU,如果是MFC程序可以使用CMenu
|
|
|
|
|
+ HMENU hMenu;
|
|
|
|
|
+ //生成托盘菜单
|
|
|
|
|
+ hMenu = CreatePopupMenu();
|
|
|
|
|
+ //添加菜单,关键在于设置的一个标识符 WM_ONCLOSE 点击后会用到
|
|
|
|
|
+ AppendMenu(hMenu, MF_STRING, WM_ONCLOSE, _T("退出"));
|
|
|
|
|
+ //弹出菜单,并把用户所选菜单项的标识符返回
|
|
|
|
|
+ int cmd = TrackPopupMenu(hMenu, TPM_RETURNCMD, pt.x, pt.y, NULL, m_hWnd, NULL);
|
|
|
|
|
+ //如果标识符是WM_ONCLOSE则关闭
|
|
|
|
|
+ if (cmd == WM_ONCLOSE)
|
|
|
|
|
+ {
|
|
|
|
|
+ //退出程序
|
|
|
|
|
+ ::PostQuitMessage(0);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return 0;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
LRESULT CValueWnd::OnKexianUpdate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
|
|
LRESULT CValueWnd::OnKexianUpdate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
|
|
|
{
|
|
{
|
|
|
//收到了客显数据消息,读取客显数据
|
|
//收到了客显数据消息,读取客显数据
|
|
@@ -370,7 +443,12 @@ LRESULT CValueWnd::HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|
|
case WM_NCACTIVATE:
|
|
case WM_NCACTIVATE:
|
|
|
lRes = OnNcActivate(uMsg, wParam, lParam, bHandled);
|
|
lRes = OnNcActivate(uMsg, wParam, lParam, bHandled);
|
|
|
break;
|
|
break;
|
|
|
-
|
|
|
|
|
|
|
+ case WM_NCLBUTTONDOWN:
|
|
|
|
|
+ lRes = OnLButtonDown(uMsg, wParam, lParam, bHandled);
|
|
|
|
|
+ break;
|
|
|
|
|
+ case WM_NCRBUTTONDOWN:
|
|
|
|
|
+ lRes = OnRButtonDown(uMsg, wParam, lParam, bHandled);
|
|
|
|
|
+ break;
|
|
|
case WM_NCCALCSIZE:
|
|
case WM_NCCALCSIZE:
|
|
|
lRes = OnNcCalcSize(uMsg, wParam, lParam, bHandled);
|
|
lRes = OnNcCalcSize(uMsg, wParam, lParam, bHandled);
|
|
|
break;
|
|
break;
|
|
@@ -382,10 +460,9 @@ LRESULT CValueWnd::HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|
|
case WM_NCHITTEST:
|
|
case WM_NCHITTEST:
|
|
|
lRes = OnNcHitTest(uMsg, wParam, lParam, bHandled);
|
|
lRes = OnNcHitTest(uMsg, wParam, lParam, bHandled);
|
|
|
break;
|
|
break;
|
|
|
- case WM_SHOWTASK:
|
|
|
|
|
|
|
+ case WM_SHOWTASK:
|
|
|
lRes = OnTrayIcon(uMsg, wParam, lParam, bHandled);
|
|
lRes = OnTrayIcon(uMsg, wParam, lParam, bHandled);
|
|
|
break;
|
|
break;
|
|
|
-
|
|
|
|
|
case WM_HOOK_MESSAGE:
|
|
case WM_HOOK_MESSAGE:
|
|
|
lRes = OnKexianUpdate(uMsg, wParam, lParam, bHandled);
|
|
lRes = OnKexianUpdate(uMsg, wParam, lParam, bHandled);
|
|
|
break;
|
|
break;
|