金山卫士开源软件之旅(二) 容易指南:怎么创建1个基于金山卫士界面库的工程-程序设计
发表时间:2018-06-20 来源:学卫网整理相关软件相关文章人气:
SWP_NOZORDER);
}
if (bEnableParent)
{
::EnableWindow(hWndParent, TRUE);
}
if (hWndParent != NULL && ::GetActiveWindow() == m_hWnd)
::SetActiveWindow(hWndParent);
BkWinManager::SetActive(hWndLastActive);
if ( IsWindow() )
DestroyWindow();
return m_uRetCode;
}
void OnClose()
{
SendMessage(WM_COMMAND, MAKELONG(IDCANCEL, 0), NULL);
}
void EndDialog(UINT uRetCode)
{
m_uRetCode = uRetCode;
m_bExitModalLoop = TRUE;
// DestroyWindow里面直接Send了WM_DESTROY,所以不会跑到DoModal的消息循环里,所以有了下面那行代码
// DestroyWindow();
// 这句非常重要,可以让DoModal消息循环再跑一次,防止卡死在GetMessage,泪奔~~~~~~~
::PostThreadMessage(::GetCurrentThreadId(), WM_NULL, 0, 0);
}
void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
if (IsWindowEnabled())
{
if (::GetKeyState(VK_CONTROL) >= 0)
{
if (VK_ESCAPE == nChar)
{
SendMessage(WM_COMMAND, MAKELONG(IDCANCEL, 0), NULL);
}
else if (VK_RETURN == nChar)
{
SendMessage(WM_COMMAND, MAKELONG(IDOK, 0), NULL);
}
}
SetMsgHandled(FALSE);
}
}
void OnOK(UINT /*uNotifyCode*/, int /*nID*/, CWindow /*wndCtl*/)
{
BKNMCOMMAND nms;
nms.hdr.code = BKNM_COMMAND;
nms.hdr.hwndFrom = m_hWnd;
nms.hdr.idFrom = IDC_RICHVIEW_WIN;
nms.uItemID = IDOK;
nms.szItemClass = "";
LRESULT lRet = ::SendMessage(m_hWnd, WM_NOTIFY, (LPARAM)nms.hdr.idFrom, (WPARAM)&nms);
}
void OnCancel(UINT /*uNotifyCode*/, int /*nID*/, CWindow /*wndCtl*/)
{
BKNMCOMMAND nms;
nms.hdr.code = BKNM_COMMAND;
nms.hdr.hwndFrom = m_hWnd;
nms.hdr.idFrom = IDC_RICHVIEW_WIN;
nms.uItemID = IDCANCEL;
nms.szItemClass = "";
LRESULT lRet = ::SendMessage(m_hWnd, WM_NOTIFY, (LPARAM)nms.hdr.idFrom, (WPARAM)&nms);
}
public:
virtual BOOL PreTranslateMessage(MSG* pMsg)
{
return FALSE;
}
protected:
BOOL m_bExitModalLoop;
void _ModalMessageLoop()
{
BOOL bRet;
MSG msg;
for(;;)
{
if (::PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE))
{
if (WM_QUIT == msg.message)
break;
}
if (m_bExitModalLoop
软件下载:
(网视站,专业提供浏览器下载)