亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? tlabeledit.cpp

?? 類似于OutLook窗口的XFloorWnd ActiveX控件源程序
?? CPP
字號(hào):
/************************************
  REVISION LOG ENTRY
  Revision By: Mihai Filimon
  Revised on 8/23/98 19:32:46
  Comments: TLabelEdit.cpp : implementation file
 ************************************/

#include "stdafx.h"
#include "TLabelEdit.h"
#include "TLabelList.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

// Name of the window class
#define wndClassName _T("TLabelEdit")
CBrush CTLabelEdit::m_brBkGnd(GetSysColor(COLOR_APPWORKSPACE));

/////////////////////////////////////////////////////////////////////////////
// CTLabelEdit

// Function name	: WindowProcEdit
// Description	    : With this, edit control can beremoved from this
// Return type		: LRESULT CALLBACK 
// Argument         : HWND hwnd
// Argument         : UINT uMsg
// Argument         : WPARAM wParam
// Argument         : LPARAM lParam
LRESULT CALLBACK WindowProcEdit(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
	switch (uMsg)
	{
		case WM_KILLFOCUS:
			{
				if (CTLabelEdit* pLabel = (CTLabelEdit*)GetWindowLong(hwnd, GWL_USERDATA))
					pLabel->HideEdit();
			}
		return 0;
	}
	return  CallWindowProc(CTLabelEdit::m_wndEditDefaultWndProc, hwnd,uMsg,wParam,lParam);
}

WNDPROC CTLabelEdit::m_wndEditDefaultWndProc = NULL;
CWnd* CTLabelEdit::m_pWndEdit = NULL;

// Function name	: CTLabelEdit::CTLabelEdit
// Description	    : Default constructor
// Return type		: 
// Argument         : LPCTSTR pDefaultText
CTLabelEdit::CTLabelEdit(LPCTSTR pDefaultText):m_sDefaultString(pDefaultText)
{
}

// Function name	: CTLabelEdit::~CTLabelEdit
// Description	    : virtual destructor
// Return type		: 
CTLabelEdit::~CTLabelEdit()
{
	if (m_pWndEdit && IsEditDestroyable()) delete m_pWndEdit;
	m_pWndEdit = NULL;
}

BEGIN_MESSAGE_MAP(CTLabelEdit, CWnd)
	//{{AFX_MSG_MAP(CTLabelEdit)
	ON_WM_LBUTTONDOWN()
	ON_WM_SETFOCUS()
	ON_WM_CTLCOLOR()
	ON_WM_PAINT()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CTLabelEdit message handlers

// Function name	: CTLabelEdit::RegClassLabelEdit
// Description	    : Call this function to register a new class window
// Return type		: BOOL 
BOOL CTLabelEdit::RegClassLabelEdit()
{
	WNDCLASS wndClass;
		wndClass.style = CS_DBLCLKS;
		wndClass.lpfnWndProc = ::DefWindowProc;
		wndClass.cbClsExtra = NULL;
		wndClass.cbWndExtra = NULL;
		wndClass.hInstance = AfxGetInstanceHandle();
		wndClass.hIcon = NULL;
		wndClass.hCursor = NULL;
		wndClass.hbrBackground = (HBRUSH)m_brBkGnd;
		wndClass.lpszMenuName = NULL;
		wndClass.lpszClassName = wndClassName;
	return AfxRegisterClass(&wndClass);
}

// Function name	: CTLabelEdit::PreSubclassWindow
// Description	    : To work this control, must be subclassed
// Return type		: void 
void CTLabelEdit::PreSubclassWindow() 
{
	CWnd::PreSubclassWindow();
}

// Function name	: CTLabelEdit::OnLButtonDown
// Description	    : Because this control is in fact a stati control, this do not have a focus never. I forced this
// Return type		: void 
// Argument         : UINT nFlags
// Argument         : CPoint point
void CTLabelEdit::OnLButtonDown(UINT nFlags, CPoint point) 
{
	SetFocus();

	CWnd::OnLButtonDown(nFlags, point);
}

// Function name	: CTLabelEdit::OnSetFocus
// Description	    : When control is focussed then edit will take the control. No?:)
// Return type		: void 
// Argument         : CWnd* pOldWnd
void CTLabelEdit::OnSetFocus(CWnd* pOldWnd) 
{
	CWnd::OnSetFocus(pOldWnd);

	ShowEdit();

}

// Function name	: CTLabelEdit::SetText
// Description	    : Put the text
// Return type		: void 
// Argument         : LPCSTR lpszCaption
void CTLabelEdit::SetText(LPCSTR lpszCaption)
{
	CString sCaption(lpszCaption);
	SetWindowText(sCaption.IsEmpty() ? (LPCTSTR)m_sDefaultString : lpszCaption);
}

// Function name	: CTLabelEdit::GetText
// Description	    : Return the text from this
// Return type		: CString 
CString CTLabelEdit::GetText()
{
	CString sCaption;
	GetWindowText(sCaption);
	sCaption = sCaption == m_sDefaultString ? _T("") : sCaption;
	return sCaption;
}

// Function name	: CTLabelEdit::OnCtlColor
// Description	    : Put a decent color in edit mode!
// Return type		: HBRUSH 
// Argument         : CDC* pDC
// Argument         : CWnd* pWnd
// Argument         : UINT nCtlColor
HBRUSH CTLabelEdit::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
	HBRUSH hbr = CWnd::OnCtlColor(pDC, pWnd, nCtlColor);

	pDC->SetTextColor(GetSysColor(COLOR_HIGHLIGHT));
	
	// TODO: Return a different brush if the default is not desired
	return hbr;
}

// Function name	: CTLabelEdit::IsEditDestroyable
// Description	    : This function retunr TRUE because in HideEdit the edit control have to be destroyed
// Return type		: BOOL 
BOOL CTLabelEdit::IsEditDestroyable()
{
	return TRUE;
}

// Function name	: CTLabelEdit::ShowEdit
// Description	    : Create the edit control to allow editing in label control/
// Return type		: void 
void CTLabelEdit::ShowEdit()
{
	CRect rect; GetClientRect(rect);
	if (m_pWndEdit) HideEdit();
	m_pWndEdit = new CEdit();
	m_pWndEdit->CreateEx(WS_EX_CLIENTEDGE, _T("Edit"),NULL, WS_CHILD | ES_NOHIDESEL | ES_LEFT | ES_AUTOHSCROLL , rect.left, rect.top, rect.Width(), rect.Height(), m_hWnd, NULL);
	ASSERT (m_pWndEdit && ::IsWindow(m_pWndEdit->m_hWnd));
	m_pWndEdit->SetFont(GetParent()->GetFont());
	CString sCaption;
	GetWindowText(sCaption);
	m_pWndEdit->SetWindowText(sCaption);
	m_pWndEdit->ShowWindow(SW_SHOW);
	((CEdit*)m_pWndEdit)->SetSel(MAKELONG(0,-1));
	m_wndEditDefaultWndProc = (WNDPROC)SetWindowLong(m_pWndEdit->m_hWnd, GWL_WNDPROC, (long)WindowProcEdit);
	CWnd* pWnd = (CWnd*)m_pWndEdit;
	SetWindowLong(pWnd->m_hWnd, GWL_USERDATA, (long)this);
	pWnd->SetWindowPos(0,0,0,0,0, SWP_NOSIZE | SWP_NOMOVE | SWP_NOZORDER | SWP_DRAWFRAME | SWP_FRAMECHANGED | SWP_SHOWWINDOW);
	pWnd->SetFocus();
}

// Function name	: CTLabelEdit::HideEdit
// Description	    : Hide or destroy the edit control. If edit is destroyable...
// Return type		: void 
void CTLabelEdit::HideEdit()
{
	if (::IsWindow(m_hWnd))
		if (m_pWndEdit && m_wndEditDefaultWndProc)
			if (::IsWindow(m_pWndEdit->m_hWnd))
			{
				(WNDPROC)SetWindowLong(m_pWndEdit->m_hWnd, GWL_WNDPROC, (long)m_wndEditDefaultWndProc);
				m_wndEditDefaultWndProc = NULL;
				CString sCaption;
				m_pWndEdit->GetWindowText(sCaption);
				SetText(sCaption);
				if (IsEditDestroyable())
				{
					// Do not call DestroyWindow because, you have created m_pWndEdit with CreateE API function. OK?!
					::DestroyWindow(m_pWndEdit->m_hWnd);
					delete m_pWndEdit;
				}
				else
				{
					CTLabelList* pList = (CTLabelList*)this;
					pList->ShowWindow(SW_SHOW);
					pList->GetWindowControl()->ShowWindow(SW_HIDE);
				}
				m_pWndEdit = NULL;
			}
}

// Function name	: CTLabelList::ShowEdit
// Description	    : Show the list control in case CLabelList
// Return type		: void 
void CTLabelList::ShowEdit()
{
	CRect rect; GetClientRect(rect);
	CWnd* pWnd = GetWindowControl();
	if (m_pWndEdit)
		HideEdit();
	pWnd->ShowWindow(SW_SHOW);
	// For draw
	pWnd->SetWindowPos(&CWnd::wndBottom,0,0,0,0, SWP_NOSIZE | SWP_NOMOVE | SWP_SHOWWINDOW);
	pWnd->SetFocus();
	m_pWndEdit = GetEditControl();
	ASSERT (m_pWndEdit != NULL);
	SetWindowLong(m_pWndEdit->m_hWnd, GWL_USERDATA, (long)this);
	m_wndEditDefaultWndProc = (WNDPROC)SetWindowLong(m_pWndEdit->m_hWnd, GWL_WNDPROC, (long)WindowProcEdit);
	ShowWindow(SW_HIDE); // for relay LButtonDown to this control...see wndBottom
}

// Function name	: CTLabelEdit::Init
// Description	    : 
// Return type		: void 
void CTLabelEdit::Init()
{
	ASSERT (GetParent() != NULL);
	CRect rect; GetClientRect(rect);
	CString sCaption;
	GetWindowText(sCaption);
	SetText(sCaption);
}

// Function name	: CTLabelEdit::OnPaint
// Description	    : OnDraw function...
// Return type		: void 
void CTLabelEdit::OnPaint() 
{
	CPaintDC dc(this); // device context for painting
	
	CRect rect; GetClientRect(rect);
	dc.DrawEdge(rect, EDGE_RAISED, BF_RECT);
	CString sCaption; GetWindowText(sCaption);
	dc.SetBkMode(TRANSPARENT);
	CFont* pFont = dc.SelectObject(&m_font);
		dc.DrawText(sCaption, rect, DT_CENTER | DT_VCENTER| DT_SINGLELINE);
	dc.SelectObject(pFont);
}

// Function name	: CTLabelEdit::WindowProc
// Description	    : default window procedure
// Return type		: LRESULT 
// Argument         : UINT message
// Argument         : WPARAM wParam
// Argument         : LPARAM lParam
LRESULT CTLabelEdit::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) 
{
	
	switch (message)
	{
		case WM_SETFONT:
			if (CFont* pFont = CFont::FromHandle((HFONT)wParam))
			{
				LOGFONT logFont;
				pFont->GetLogFont(&logFont);
				m_font.DeleteObject();
				m_font.CreateFontIndirect((const LOGFONT*)&logFont);
				Invalidate();
				break;
			}
		case WM_SETTEXT:
			{
				Invalidate();
				break;
			}
	}
	
	return CWnd::WindowProc(message, wParam, lParam);
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久嫩草精品久久久精品| 日韩女优视频免费观看| 国产盗摄视频一区二区三区| 偷拍与自拍一区| 综合激情成人伊人| 国产三区在线成人av| 欧美视频在线一区二区三区| 成人app下载| 成人免费视频视频在线观看免费| 久久成人羞羞网站| 日韩激情视频网站| 秋霞电影一区二区| 日韩一区在线播放| 国产精品白丝在线| 国产精品美女久久久久久久久| 久久久久久久免费视频了| 精品国产乱码久久久久久夜甘婷婷 | 欧美一卡在线观看| 欧美男生操女生| 678五月天丁香亚洲综合网| 91色视频在线| 91亚洲精品久久久蜜桃| 在线一区二区观看| 色综合欧美在线视频区| 欧美日韩一区二区在线视频| 91福利小视频| 欧美男生操女生| 555夜色666亚洲国产免| 日韩视频中午一区| 亚洲精品一区二区三区福利| 久久久综合网站| 欧美高清在线一区二区| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 92国产精品观看| 国产jizzjizz一区二区| www.色精品| 欧美午夜精品久久久久久超碰| 91亚洲国产成人精品一区二区三| 一本色道久久综合狠狠躁的推荐 | 国产精品1区2区3区在线观看| 日本午夜一区二区| 久久成人羞羞网站| zzijzzij亚洲日本少妇熟睡| 欧洲精品视频在线观看| 欧美日本韩国一区| 久久久亚洲高清| 国产精品久久久久国产精品日日| 亚洲日本在线a| 亚洲国产欧美在线| 黑人巨大精品欧美一区| 国产美女在线观看一区| 99久久精品免费| 欧美顶级少妇做爰| 久久精品人人爽人人爽| 亚洲综合丝袜美腿| 激情五月婷婷综合| 奇米色777欧美一区二区| 国产精品一区二区三区四区| 色噜噜偷拍精品综合在线| 欧美一区二区三区系列电影| 国产人成一区二区三区影院| 亚洲黄色免费电影| 国内精品久久久久影院薰衣草| 成a人片亚洲日本久久| 91.com在线观看| 久久精品亚洲国产奇米99| 一区二区三区国产精品| 国产在线视视频有精品| 在线欧美小视频| 欧美精品一区二区三区蜜桃视频| 亚洲日本乱码在线观看| 蜜臀久久久99精品久久久久久| 成人激情校园春色| 欧美一区二区三区免费观看视频| 国产精品毛片无遮挡高清| 天天色综合天天| 国产精品原创巨作av| 精品视频一区二区不卡| 国产日产精品1区| 日韩综合在线视频| 99re热视频精品| 精品剧情在线观看| 午夜一区二区三区视频| 成人avav影音| 国产欧美日韩亚州综合| 亚洲精品v日韩精品| 国产精品亚洲视频| 欧美一级夜夜爽| 一区二区三区精品视频在线| 豆国产96在线|亚洲| 日韩欧美一级精品久久| 亚洲猫色日本管| 国产成人精品免费| 日韩免费性生活视频播放| 亚洲国产综合色| 国产成人鲁色资源国产91色综| 欧美另类变人与禽xxxxx| 亚洲欧美乱综合| 成人av动漫网站| 国产女人aaa级久久久级| 亚洲成av人片在www色猫咪| 99久久国产综合精品色伊| 久久嫩草精品久久久精品一| 麻豆精品视频在线观看免费| 99精品热视频| 国产精品乱码一区二区三区软件 | 亚洲成人自拍一区| 欧美视频日韩视频| 天天av天天翘天天综合网 | 欧美国产精品中文字幕| 国产·精品毛片| 亚洲国产激情av| 99久久免费视频.com| ...中文天堂在线一区| 99精品欧美一区二区三区综合在线| 亚洲素人一区二区| 色94色欧美sute亚洲线路一久 | 不卡视频一二三| 亚洲欧美色综合| 欧美三级韩国三级日本一级| 日韩高清国产一区在线| 欧美成人精品3d动漫h| 国产成人精品免费| 亚洲欧美国产高清| 欧美高清视频在线高清观看mv色露露十八| 亚洲图片欧美一区| 精品盗摄一区二区三区| 国产成人av自拍| 亚洲精品国产无天堂网2021| 欧美日韩一区二区在线观看视频 | 日韩精品在线一区| 国产成人亚洲精品青草天美 | 色狠狠一区二区| 蜜桃视频一区二区三区在线观看| 亚洲精品一区二区三区影院 | 亚洲视频综合在线| 8x8x8国产精品| 成人网页在线观看| 亚洲高清免费一级二级三级| 精品三级在线看| 91污在线观看| 蜜臀久久久久久久| 国产精品久久久久久亚洲伦| 欧美日韩在线播放三区| 国产乱子伦一区二区三区国色天香| 国产精品久久99| 51精品秘密在线观看| 成人精品免费网站| 日日夜夜精品视频天天综合网| 久久久电影一区二区三区| 色欧美日韩亚洲| 国产一区二区三区| 亚洲综合精品自拍| 国产亚洲污的网站| 91精品国产免费久久综合| 成人不卡免费av| 免费观看在线综合| 一区二区三区在线观看网站| 久久综合久色欧美综合狠狠| 欧美在线免费播放| 国产河南妇女毛片精品久久久| 亚洲午夜一二三区视频| 国产午夜精品美女毛片视频| 91精品国产综合久久久久久| av在线综合网| 韩国女主播一区| 亚洲成av人片一区二区三区| 中文字幕一区二区三区四区不卡| 日韩精品在线一区二区| 欧美日韩一级二级| 99久久精品99国产精品| 国产剧情一区二区三区| 天天影视涩香欲综合网| 亚洲猫色日本管| 国产精品久久久久一区二区三区| 精品国产三级电影在线观看| 在线电影院国产精品| 91麻豆福利精品推荐| 成人午夜视频福利| 国产一区二区三区黄视频| 日韩在线一区二区| 一区二区高清免费观看影视大全| 国产精品欧美极品| 久久精品夜色噜噜亚洲a∨| 精品日韩欧美在线| 91精品欧美一区二区三区综合在 | 欧美三级日韩三级国产三级| 91蜜桃视频在线| 99久久免费精品高清特色大片| 国产精品 欧美精品| 国内久久精品视频| 国内精品写真在线观看| 久久99国产精品成人| 日本伊人午夜精品| 日本美女一区二区| 视频一区二区三区入口| 亚洲3atv精品一区二区三区| 亚洲制服丝袜一区| 亚洲午夜精品17c| 亚洲一二三四久久|