📄 backgroundwnd.cpp
字号:
//this is part of my crackpot background-image-in-richedit scheme
#include "stdafx.h"
#include "Netmsg.h"
#include "BackgroundWnd.h"
#include "Conversation.h"
#include "ConvEdit.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CBackgroundWnd
CBackgroundWnd::CBackgroundWnd()
{
m_Chat = NULL;
}
CBackgroundWnd::~CBackgroundWnd()
{
}
BEGIN_MESSAGE_MAP(CBackgroundWnd, CWnd)
//{{AFX_MSG_MAP(CBackgroundWnd)
ON_WM_PAINT()
ON_WM_TIMER()
ON_WM_SIZE()
ON_NOTIFY(EN_LINK, IDC_CHAT, OnRichEditExLink)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CBackgroundWnd message handlers
void CBackgroundWnd::OnPaint()
{
CPaintDC dc(this);
CConversation *pParent;
pParent = (CConversation *)GetParent();
RECT rect;
GetClientRect(&rect);
if (OSVER & WIN_WINNT)
dc.FillSolidRect(&rect, RGB(255, 255, 255));
if (GetApp()->View->bmConvBack && (OSVER & WIN_WINNT))
{
BITMAP bmInfo;
POINT point;
SIZE size;
CBitmap::FromHandle(GetApp()->View->bmConvBack)->GetBitmap(&bmInfo);
point.y = rect.bottom - bmInfo.bmHeight;
point.x = rect.right - bmInfo.bmWidth - (pParent->m_Chat.m_bHasScrollBar
? GetSystemMetrics(SM_CXVSCROLL) : 0);
size.cy = bmInfo.bmHeight;
size.cx = bmInfo.bmWidth;
DrawBitmap(&dc, CRect(point.x, point.y, point.x + bmInfo.bmWidth, point.y +
bmInfo.bmHeight), NULL, CBitmap::FromHandle(GetApp()->View->bmConvBack));
}
}
void CBackgroundWnd::OnTimer(UINT nIDEvent)
{
KillTimer(nIDEvent);
RedrawWindow();
CWnd::OnTimer(nIDEvent);
}
BOOL CBackgroundWnd::PreCreateWindow(CREATESTRUCT& cs)
{
WNDCLASS wnd;
wnd.lpfnWndProc = ::DefWindowProc;
wnd.style = NULL;
wnd.hIcon = NULL;
wnd.hCursor = NULL;
wnd.hInstance = AfxGetInstanceHandle();
wnd.lpszClassName = "ConvBkgndClass";
wnd.hbrBackground = NULL;
wnd.cbClsExtra = 0;
wnd.cbWndExtra = 0;
wnd.lpszMenuName = NULL;
AfxRegisterClass(&wnd);
cs.lpszClass = "ConvBkgndClass";
return CWnd::PreCreateWindow(cs);
}
void CBackgroundWnd::OnSize(UINT nType, int cx, int cy)
{
CWnd::OnSize(nType, cx, cy);
if (m_Chat)
m_Chat->MoveWindow(0, 0, cx, cy);
}
void CBackgroundWnd::OnRichEditExLink(NMHDR* pNotifyHeader, LRESULT* pResult)
{
ENLINK* pENLink = (ENLINK *)pNotifyHeader;
*pResult = 0;
switch (pENLink->msg)
{
case WM_LBUTTONDOWN:
{
CString URL;
CHARRANGE CharRange;
m_Chat->GetSel(CharRange);
m_Chat->SetSel(pENLink->chrg);
URL = m_Chat->GetSelText();
m_Chat->SetSel(CharRange);
ShellExecute(GetSafeHwnd(), "open", URL, NULL, NULL, SW_SHOWNORMAL);
*pResult = 1;
}
break;
case WM_LBUTTONUP:
{
*pResult = 1;
}
break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -