初步修复
This commit is contained in:
parent
8fc4357cc6
commit
e4714f3f0e
46705 changed files with 12004901 additions and 0 deletions
|
|
@ -0,0 +1,179 @@
|
|||
#include "stdafx.h"
|
||||
|
||||
#include "AlgoTaskDialog.h"
|
||||
|
||||
///////////////// TEST CODE ///////////////////
|
||||
|
||||
enum
|
||||
{
|
||||
Button_SendFeedback = 101,
|
||||
Button_NoThanks
|
||||
};
|
||||
|
||||
#define MAX_DLU 371
|
||||
|
||||
static LPCTSTR SAMPLE_TEXT = _T("Aa Bb Cc");
|
||||
|
||||
CAlgoTaskDialog::CAlgoTaskDialog(void)
|
||||
{
|
||||
m_strHeaderText = SAMPLE_TEXT;
|
||||
|
||||
m_sizeClient.SetSizeEmpty();
|
||||
m_sizeDlu.SetSizeEmpty();
|
||||
|
||||
SetWindowTitle(_T("Task Dialog Sample"));
|
||||
SetMainInstruction(SAMPLE_TEXT);
|
||||
SetFooter(SAMPLE_TEXT);
|
||||
//SetFooterIcon(TD_INFORMATION_ICON);
|
||||
//SetMainIcon(TD_WARNING_ICON);
|
||||
|
||||
AddButton(_T("Increase Text Size\nClick here to dynamically increasing text size."), Button_SendFeedback);
|
||||
|
||||
m_config.dwFlags |= TDF_ALLOW_DIALOG_CANCELLATION | TDF_USE_COMMAND_LINKS;
|
||||
m_config.dwCommonButtons = TDCBF_OK_BUTTON;
|
||||
}
|
||||
|
||||
CAlgoTaskDialog::~CAlgoTaskDialog(void)
|
||||
{
|
||||
}
|
||||
|
||||
void CAlgoTaskDialog::UpdateFooterText()
|
||||
{
|
||||
CXTPClientRect rcClient(CWnd::FromHandle(m_hWnd));
|
||||
m_sizeClient = rcClient.Size();
|
||||
|
||||
//m_sizeDlu = XTPPix2Dlu(
|
||||
// m_sizeClient.cx, m_sizeClient.cy);
|
||||
|
||||
//XTPTaskData()->SetMargins();
|
||||
|
||||
//CRect rcText = rcClient;
|
||||
//rcText.left += m_wndClient.m_rcMargin.left;
|
||||
//rcText.right -= m_wndClient.m_rcMargin.right;
|
||||
|
||||
//CWindowDC dc(NULL);
|
||||
//CXTPFontDC fontDC(&dc, &m_wndClient.m_fontLarge);
|
||||
|
||||
//::DrawTextEx(dc, (TCHAR*)(LPCTSTR)m_strHeaderText, m_strHeaderText.GetLength(),
|
||||
// &rcText, DT_CALCRECT | DT_LEFT | DT_NOPREFIX | DT_TOP | DT_WORDBREAK, NULL);
|
||||
|
||||
//CSize sizeTextUnits = XTPPix2Dlu(
|
||||
// rcText.Width(), rcText.Height());
|
||||
|
||||
//m_strFooterText.Format(_T("Client Width: %d (%d), Text Size: %d (%d) x %d (%d)"),
|
||||
// m_sizeClient.cx, m_sizeDlu.cx, rcText.Width(), sizeTextUnits.cx, rcText.Height(), sizeTextUnits.cy);
|
||||
|
||||
CWindowDC dc(NULL);
|
||||
CXTPFontDC fontDC(&dc, &m_fontLarge);
|
||||
|
||||
CSize sizeExtent = dc.GetTextExtent(m_strHeaderText);
|
||||
CSize sizeExtentUnits = XTPPix2Dlu(sizeExtent.cx, sizeExtent.cy);
|
||||
|
||||
CSize sizeClient = m_sizeClient;
|
||||
CSize sizeClientUnits = XTPPix2Dlu(sizeClient.cx, sizeClient.cy);
|
||||
|
||||
m_strFooterText.Format(_T("Extent cx: %d (%d), cy: %d (%d)\r\nClient cx: %d (%d), cy: %d (%d)"),
|
||||
sizeExtent.cx, sizeExtentUnits.cx, sizeExtent.cy, sizeExtentUnits.cy,
|
||||
sizeClient.cx, sizeClientUnits.cx, sizeClient.cy, sizeClientUnits.cy);
|
||||
|
||||
SetFooter(m_strFooterText);
|
||||
}
|
||||
|
||||
void CAlgoTaskDialog::OnDialogConstructed()
|
||||
{
|
||||
UpdateFooterText();
|
||||
}
|
||||
|
||||
BOOL CAlgoTaskDialog::CopyToClipboard(const CString& strText)
|
||||
{
|
||||
if (::OpenClipboard(m_hWnd))
|
||||
{
|
||||
::EmptyClipboard();
|
||||
|
||||
HGLOBAL hGlobalBuff = ::GlobalAlloc(GMEM_MOVEABLE, strText.GetLength() + 1);
|
||||
|
||||
CHAR* szBuffer = (CHAR*)::GlobalLock(hGlobalBuff);
|
||||
|
||||
WCSTOMBS_S(szBuffer, strText, strText.GetLength() + 1);
|
||||
::GlobalUnlock(hGlobalBuff);
|
||||
|
||||
if (::SetClipboardData(CF_TEXT, hGlobalBuff) == NULL)
|
||||
return FALSE;
|
||||
|
||||
::CloseClipboard();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void CAlgoTaskDialog::OnButtonClicked(int nButtonID, BOOL& bCloseDialog)
|
||||
{
|
||||
switch (nButtonID)
|
||||
{
|
||||
case Button_SendFeedback:
|
||||
{
|
||||
bCloseDialog = FALSE;
|
||||
|
||||
CWnd* pTaskDlg = CWnd::FromHandle(m_hWnd);
|
||||
|
||||
CXTPWindowRect rcWindow(pTaskDlg);
|
||||
USES_CONVERSION;
|
||||
|
||||
TCHAR chMin = 'A';
|
||||
TCHAR chMax = 'Z';
|
||||
TCHAR chSpace = ' ';
|
||||
|
||||
TCHAR ch;
|
||||
int i;
|
||||
|
||||
int cxMax = 550;
|
||||
|
||||
m_avgCharPix = ::GetDialogBaseUnits();
|
||||
|
||||
CString strBuffer;
|
||||
strBuffer.Format(_T("Average character width: %d, height: %d\r\n"), m_avgCharPix.cx, m_avgCharPix.cy);
|
||||
strBuffer += m_strFooterText + _T("\r\n");
|
||||
|
||||
CXTPClientRect rcClient(CWnd::FromHandle(m_hWnd));
|
||||
int cxWidth = rcClient.Width();
|
||||
|
||||
for (ch = chMin, i = 0; i < 500; i += 100, ++ch)
|
||||
{
|
||||
if (ch > chMax)
|
||||
ch = chMin;
|
||||
|
||||
TCHAR chUpper = ch;
|
||||
TCHAR chLower = ch + chSpace;
|
||||
|
||||
CString strTemp;
|
||||
strTemp.Format(_T("%c%c%c"), chUpper, chLower, chSpace);
|
||||
|
||||
m_strHeaderText += strTemp;
|
||||
SetMainInstruction(m_strHeaderText);
|
||||
|
||||
UpdateFooterText();
|
||||
|
||||
if (m_sizeClient.cx > cxWidth)
|
||||
{
|
||||
cxWidth = m_sizeClient.cx;
|
||||
strBuffer += m_strFooterText + _T("\r\n---------------------------------------------\r\n");
|
||||
}
|
||||
|
||||
if (cxMax <= cxWidth)
|
||||
break;
|
||||
|
||||
Sleep(100);
|
||||
}
|
||||
|
||||
CopyToClipboard(strBuffer);
|
||||
|
||||
break;
|
||||
}
|
||||
case IDOK:
|
||||
{
|
||||
bCloseDialog = TRUE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue