本文整理汇总了C++中CString类的典型用法代码示例。如果您正苦于以下问题:C++ CString类的具体用法?C++ CString怎么用?C++ CString使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了CString类的14个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: AFX_MANAGE_STATE
};
for (int i=0; i<sizeof(arr)/sizeof(arr[0]); i++)
{
if (InlineIsEqualGUID(*arr[i],riid))
return S_OK;
}
return S_FALSE;
}
STDMETHODIMP CCTFExContext::get_Description(BSTR * pVal)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState())
if (NULL == pVal)
return E_POINTER;
CString str;
VERIFY(str.LoadString (IDS_EXCONTEXT_DESC));
if (str.IsEmpty())
return Error (g_cbNoMemory, E_OUTOFMEMORY);
CComBSTR bstr (str);
if (!bstr)
return Error (g_cbNoMemory, E_OUTOFMEMORY);
*pVal = bstr.Detach();
return S_OK;
}
STDMETHODIMP CCTFExContext::get_Meridian(int * pVal)
示例2: SetIcon
void CIconStatic::SetIcon(LPCTSTR pszIconID)
{
m_strIconID = pszIconID;
// If this function is called for the first time and we did not yet call 'SetWindowText', we take
// the window label which is already specified for the window (the label which comes from the resource)
CString strText;
CStatic::GetWindowText(strText);
CStatic::SetWindowText(_T(""));
if (!strText.IsEmpty() && m_strText.IsEmpty())
m_strText = strText;
CRect rRect;
GetClientRect(rRect);
CDC *pDC = GetDC();
CDC MemDC;
CBitmap *pOldBMP;
VERIFY( MemDC.CreateCompatibleDC(pDC) );
CFont *pOldFont = MemDC.SelectObject(GetFont());
CRect rCaption(0,0,0,0);
MemDC.DrawText(m_strText, rCaption, DT_CALCRECT);
ASSERT( rCaption.Width() >= 0 );
ASSERT( rCaption.Height() >= 0 );
if (rCaption.Height() < 16)
rCaption.bottom = rCaption.top + 16;
rCaption.right += 25;
if (rRect.Width() >= 16 && rCaption.Width() > rRect.Width() - 16)
rCaption.right = rCaption.left + rRect.Width() - 16;
if (m_MemBMP.m_hObject)
VERIFY( m_MemBMP.DeleteObject() );
VERIFY( m_MemBMP.CreateCompatibleBitmap(pDC, rCaption.Width(), rCaption.Height()) );
pOldBMP = MemDC.SelectObject(&m_MemBMP);
// Get the background color from the parent window. This way the controls which are
// embedded in a dialog window can get painted with the same background color as
// the dialog window.
HBRUSH hbr = (HBRUSH)GetParent()->SendMessage(WM_CTLCOLORSTATIC, (WPARAM)MemDC.m_hDC, (LPARAM)m_hWnd);
FillRect(MemDC, &rCaption, hbr);
if (!m_strIconID.IsEmpty())
VERIFY( DrawState( MemDC.m_hDC, NULL, NULL, (LPARAM)(HICON)CTempIconLoader(m_strIconID, 16, 16), NULL, 3, 0, 16, 16, DST_ICON | DSS_NORMAL) );
// clear all alpha channel data
BITMAP bmMem;
if (m_MemBMP.GetObject(sizeof bmMem, &bmMem) >= sizeof bmMem && bmMem.bmBitsPixel == 32)
{
DWORD dwSize = m_MemBMP.GetBitmapBits(0, NULL);
if (dwSize)
{
LPBYTE pPixels = (LPBYTE)malloc(dwSize);
if (pPixels)
{
if (m_MemBMP.GetBitmapBits(dwSize, pPixels) == dwSize)
{
LPBYTE pLine = pPixels;
int iLines = bmMem.bmHeight;
while (iLines-- > 0)
{
LPDWORD pdwPixel = (LPDWORD)pLine;
for (int x = 0; x < bmMem.bmWidth; x++)
*pdwPixel++ &= 0x00FFFFFF;
pLine += bmMem.bmWidthBytes;
}
m_MemBMP.SetBitmapBits(dwSize, pPixels);
}
free(pPixels);
}
}
}
rCaption.left += 22;
if(g_xpStyle.IsThemeActive() && g_xpStyle.IsAppThemed())
{
HTHEME hTheme = g_xpStyle.OpenThemeData(NULL, L"BUTTON");
g_xpStyle.DrawThemeText(hTheme, MemDC.m_hDC, BP_GROUPBOX, GBS_NORMAL, m_strText, m_strText.GetLength(),
DT_WORDBREAK | DT_CENTER | DT_WORD_ELLIPSIS, NULL, &rCaption);
g_xpStyle.CloseThemeData(hTheme);
}
else
{
MemDC.SetTextColor(GetSysColor(COLOR_WINDOWTEXT));
MemDC.DrawText(m_strText, rCaption, DT_SINGLELINE | DT_LEFT | DT_END_ELLIPSIS);
}
ReleaseDC(pDC);
MemDC.SelectObject(pOldBMP);
MemDC.SelectObject(pOldFont);
if (m_wndPicture.m_hWnd == NULL)
m_wndPicture.Create(NULL, WS_CHILD | WS_VISIBLE | SS_BITMAP, CRect(0,0,0,0), this);
m_wndPicture.SetWindowPos(NULL, rRect.left+8, rRect.top, rCaption.Width()+22, rCaption.Height(), SWP_SHOWWINDOW);
m_wndPicture.SetBitmap(m_MemBMP);
//.........这里部分代码省略.........
示例3: ASSERT
BOOL CSMTP::transmit_message(MailHeader* msg)
{
CString sFrom;
CString sTo;
CString sTemp;
CString sEmail;
ASSERT( msg != NULL );
if( !m_Connected )
{
m_Error = _T( "Must be connected" );
AfxMessageBox(_T(m_Error));
return FALSE;
}
// gui MAIL
sFrom.Format( "MAIL From: <%s>\r\n", (LPCTSTR)msg->From );
m_Server.Send( (LPCTSTR)sFrom, sFrom.GetLength() );
Sleep(300);
if( !get_response( GENERIC_SUCCESS ) )
return FALSE;
// gui RCPT
sFrom.Format( "RCPT To: <%s>\r\n", (LPCTSTR)msg->To );
m_Server.Send( (LPCTSTR)sFrom, sFrom.GetLength() );
Sleep(300);
if( !get_response( GENERIC_SUCCESS ) )
return FALSE;
// gui DATA
sTemp = "DATA\r\n";
m_Server.Send( (LPCTSTR)sTemp, sTemp.GetLength() );
/*if( !get_response( INPUT_DATA ) )
{
return FALSE;
}*/
// Send the header
Sleep(300);
CString _messageFormat;
_messageFormat.Format("Message-ID: %s\r\nFrom: %s\r\nTo: %s\r\nCc: %s\r\nDate: %s\r\nSubject: %s\r\nMime-Version: %s\r\nContent-Type: %s\r\n\n%s",
msg->MessageID,
msg->From,
msg->To,
msg->Cc,
msg->Date,
msg->Subject,
msg->MimeVersion,
msg->ContentType,
msg->TextBody);
m_Server.Send(_messageFormat,_messageFormat.GetLength());
//Sleep(300);
//m_Server.Send( (LPCTSTR)msg->Subject, msg->Subject.GetLength() );
// Send the body
//sTemp = prepare_body( msg );
//m_Server.Send( (LPCTSTR)sTemp, sTemp.GetLength() );
Sleep(300);
// Them dau . de ket thuc mail
sTemp = "\r\n.\r\n";
m_Server.Send( (LPCTSTR)sTemp, sTemp.GetLength() );
if( !get_response( GENERIC_SUCCESS ) )
{
return FALSE;
}
//send mail to Cc
if (!msg->Cc.IsEmpty())
{
sFrom.Format( "MAIL From: <%s>\r\n", (LPCTSTR)msg->From );
m_Server.Send( (LPCTSTR)sFrom, sFrom.GetLength() );
Sleep(300);
if( !get_response( GENERIC_SUCCESS ) )
return FALSE;
// gui RCPT
sFrom.Format( "RCPT To: <%s>\r\n", (LPCTSTR)msg->Cc );
m_Server.Send( (LPCTSTR)sFrom, sFrom.GetLength() );
Sleep(300);
if( !get_response( GENERIC_SUCCESS ) )
return FALSE;
// gui DATA
sTemp = "DATA\r\n";
m_Server.Send( (LPCTSTR)sTemp, sTemp.GetLength() );
/*if( !get_response( INPUT_DATA ) )
{
return FALSE;
}*/
// Send the header
Sleep(300);
m_Server.Send(_messageFormat,_messageFormat.GetLength());
//Sleep(300);
//m_Server.Send( (LPCTSTR)msg->Subject, msg->Subject.GetLength() );
// Send the body
//sTemp = prepare_body( msg );
//m_Server.Send( (LPCTSTR)sTemp, sTemp.GetLength() );
Sleep(300);
//.........这里部分代码省略.........
示例4: while
void CConanGlueDlg::OnBnClickedButton4()
{
ProgressBar.ShowWindow(SW_SHOW);
ProgressBar.SetPos(0);
ProgressBar.SetStep(1);
CString path;
SettingsFile.GetWindowText(path);
FILE *stream;
TCHAR line[500];
if (_wfopen_s(&stream, path, _T("r")) == 0)
{
while (fgetws(line, 500, stream))
{
///int s=strlen(line);
//char* l=new char[s+1];
//strcpy_s(l,s+1,line);
FileRecord* f = new FileRecord(line);
if (f->Fname == NULL)
delete(f);
else
FileRecords.push_back(f);
}
fclose(stream);
}
else
{
MessageBox(_T("Не удалось прочитать файл спецификации склейки!"), _T("Ошибка"), MB_OK);
return;
}
CString info;
CString fname;
int nRec = FileRecords.size();
info.Format(_T("%d элементов для обработки"), nRec);
AddLog(&Log, info);
//begin reading conan
ProgressBar.SetRange(0, 3 + nRec);
ProgressBar.StepIt();
AddLog(&Log, _T("создаём файл заголовка"));
filedir.GetWindowText(fname);
fname.Append(_T("\\"));
fname.Append(FileRecords.at(0)->Fname);
ConanData* Conan = ReadConanFile(fname.GetBuffer(), &Log);
//first one.
//Make header structure for all the eeg later.
//remove all extra info from object
for (int i = 0; i < Conan->Header->nRec; i++)
{
for (int j = 0; j < Conan->Header->nChan; j++)
{
delete[] Conan->Eeg[i][j];
delete[] Conan->NotCalibrated[i][j];
}
delete[] Conan->Eeg[i];
delete[] Conan->NotCalibrated[i];
delete[] Conan->Discr[i];
}
delete[] Conan->Eeg;
delete[] Conan->TimeCreating;
delete[] Conan->NDataReal2;
delete[] Conan->NDataReal;
delete[] Conan->NDataRaw;
delete[] Conan->Discr;
delete[] Conan->NotCalibrated;
//create structure for new object
Conan->Header->nRec = nRec;
Conan->Eeg = new float**[nRec];
Conan->NotCalibrated = new __int16**[nRec];
Conan->TimeCreating = new __int32[nRec];
Conan->NDataReal2 = new unsigned __int16[nRec];
Conan->NDataReal = new unsigned __int16[nRec];
Conan->NDataRaw = new unsigned __int16[nRec];
Conan->Discr = new StimulSignal*[nRec];
//now - fill records!
ProgressBar.StepIt();
CString fnameNew;
for (int CurrentRecNum = 0; CurrentRecNum < nRec; CurrentRecNum++)
{
filedir.GetWindowText(fnameNew);
fnameNew.Append(_T("\\"));
fnameNew.Append(FileRecords.at(CurrentRecNum)->Fname);
info = _T("Переписываем файл ") + fnameNew;
AddLog(&Log, info);
ConanData* NewConan = ReadConanFile(fnameNew.GetBuffer(), &Log);
if (NewConan == NULL)
{
info = _T("Не удалось прочитать файл ") + fnameNew;
info.Append(_T(" Склейка не может быть завершена"));
MessageBox(info);
ProgressBar.ShowWindow(SW_HIDE);
return;
}
if (NewConan->Header->isNewVersion() && !Conan->Header->isNewVersion())
{
info = _T("Версия файла ") + fnameNew + _T(" новее, чем файла ") + fname;
info.Append(_T(" Склейка не может быть завершена"));
MessageBox(info);
//.........这里部分代码省略.........
示例5: EnumerateSerialPorts
void EnumerateSerialPorts(CUIntArray& ports)
{
//Make sure we clear out any elements which may already be in the array
ports.RemoveAll();
//Determine what OS we are running on
OSVERSIONINFO osvi;
osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
BOOL bGetVer = GetVersionEx(&osvi);
//On NT use the QueryDosDevice API
if (bGetVer && (osvi.dwPlatformId == VER_PLATFORM_WIN32_NT))
{
//Use QueryDosDevice to look for all devices of the form COMx. This is a better
//solution as it means that no ports have to be opened at all.
TCHAR szDevices[65535];
DWORD dwChars = QueryDosDevice(NULL, szDevices, 65535);
if (dwChars)
{
int i=0;
for (;;)
{
//Get the current device name
TCHAR* pszCurrentDevice = &szDevices[i];
//If it looks like "COMX" then
//add it to the array which will be returned
int nLen = _tcslen(pszCurrentDevice);
if (nLen > 3 && _tcsnicmp(pszCurrentDevice, _T("COM"), 3) == 0)
{
//Work out the port number
int nPort = _ttoi(&pszCurrentDevice[3]);
ports.Add(nPort);
}
// Go to next NULL character
while(szDevices[i] != _T('\0'))
i++;
// Bump pointer to the next string
i++;
// The list is double-NULL terminated, so if the character is
// now NULL, we're at the end
if (szDevices[i] == _T('\0'))
break;
}
}
else
TRACE(_T("Failed in call to QueryDosDevice, GetLastError:%d\n"), GetLastError());
}
else
{
//On 95/98 open up each port to determine their existence
//Up to 255 COM ports are supported so we iterate through all of them seeing
//if we can open them or if we fail to open them, get an access denied or general error error.
//Both of these cases indicate that there is a COM port at that number.
for (UINT i=1; i<256; i++)
{
//Form the Raw device name
CString sPort;
sPort.Format(_T("\\\\.\\COM%d"), i);
//Try to open the port
BOOL bSuccess = FALSE;
HANDLE hPort = ::CreateFile(sPort, GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0);
if (hPort == INVALID_HANDLE_VALUE)
{
DWORD dwError = GetLastError();
//Check to see if the error was because some other app had the port open or a general failure
if (dwError == ERROR_ACCESS_DENIED || dwError == ERROR_GEN_FAILURE)
bSuccess = TRUE;
}
else
{
//The port was opened successfully
bSuccess = TRUE;
//Don't forget to close the port, since we are going to do nothing with it anyway
CloseHandle(hPort);
}
//Add the port number to the array which will be returned
if (bSuccess)
ports.Add(i);
}
}
}
示例6: switch
void ElectricModelingDLGMoreElastic::OnTcnSelchangeTabMoreElastic(NMHDR *pNMHDR, LRESULT *pResult)
{
// TODO: Add your control notification handler code here
/*
switch (m_TabMoreElastic.GetCurSel())
{
case 0:
m_electricModelingDLGElastic[0].ShowWindow(SW_SHOW);
m_electricModelingDLGElastic[1].ShowWindow(SW_HIDE);
m_electricModelingDLGElastic[2].ShowWindow(SW_HIDE);
m_electricModelingDLGElastic[3].ShowWindow(SW_HIDE);
m_electricModelingDLGElastic[4].ShowWindow(SW_HIDE);
m_electricModelingDLGElastic[5].ShowWindow(SW_HIDE);
break;
case 1:
m_electricModelingDLGElastic[0].ShowWindow(SW_HIDE);
m_electricModelingDLGElastic[1].ShowWindow(SW_SHOW);
m_electricModelingDLGElastic[2].ShowWindow(SW_HIDE);
m_electricModelingDLGElastic[3].ShowWindow(SW_HIDE);
m_electricModelingDLGElastic[4].ShowWindow(SW_HIDE);
m_electricModelingDLGElastic[5].ShowWindow(SW_HIDE);
break;
case 2:
m_electricModelingDLGElastic[0].ShowWindow(SW_HIDE);
m_electricModelingDLGElastic[1].ShowWindow(SW_HIDE);
m_electricModelingDLGElastic[2].ShowWindow(SW_SHOW);
m_electricModelingDLGElastic[3].ShowWindow(SW_HIDE);
m_electricModelingDLGElastic[4].ShowWindow(SW_HIDE);
m_electricModelingDLGElastic[5].ShowWindow(SW_HIDE);
break;
case 3:
m_electricModelingDLGElastic[0].ShowWindow(SW_HIDE);
m_electricModelingDLGElastic[1].ShowWindow(SW_HIDE);
m_electricModelingDLGElastic[2].ShowWindow(SW_SHOW);
m_electricModelingDLGElastic[3].ShowWindow(SW_HIDE);
m_electricModelingDLGElastic[4].ShowWindow(SW_HIDE);
m_electricModelingDLGElastic[5].ShowWindow(SW_HIDE);
break;
case 4:
m_electricModelingDLGElastic[0].ShowWindow(SW_HIDE);
m_electricModelingDLGElastic[1].ShowWindow(SW_HIDE);
m_electricModelingDLGElastic[2].ShowWindow(SW_HIDE);
m_electricModelingDLGElastic[3].ShowWindow(SW_HIDE);
m_electricModelingDLGElastic[4].ShowWindow(SW_SHOW);
m_electricModelingDLGElastic[5].ShowWindow(SW_HIDE);
break;
case 5:
m_electricModelingDLGElastic[0].ShowWindow(SW_HIDE);
m_electricModelingDLGElastic[1].ShowWindow(SW_HIDE);
m_electricModelingDLGElastic[2].ShowWindow(SW_HIDE);
m_electricModelingDLGElastic[3].ShowWindow(SW_HIDE);
m_electricModelingDLGElastic[4].ShowWindow(SW_HIDE);
m_electricModelingDLGElastic[5].ShowWindow(SW_SHOW);
break;
}
*/
int cur = m_TabMoreElastic.GetCurSel();
CString curstr;
curstr.Format("%d",cur);
//::MessageBox(NULL,curstr,_T("OKOK"),MB_OK);
if (cur >=0 && cur <m_PhaseCount){
for (int i=0;i<this->m_PhaseCount;i++)
{
if (i==cur){
m_pelectricModelingDLGElastic[cur]->ShowWindow(SW_SHOW);
}else{
m_pelectricModelingDLGElastic[i]->ShowWindow(SW_HIDE);
}
}
//
if (m_simulationType == 1){
m_pelectricModelingDLGMechanical->ShowWindow(SW_HIDE);
}
}
else if (cur==this->m_PhaseCount){
for (int i=0;i<this->m_PhaseCount;i++)
{
m_pelectricModelingDLGElastic[i]->ShowWindow(SW_HIDE);
}
m_pelectricModelingDLGMechanical->ShowWindow(SW_SHOW);
}
*pResult = 0;
}
示例7: OnInitDialog
BOOL ElectricModelingDLGMoreElastic::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
// 是构造函数先被调用吗?(是的)
/*
CString temp;
temp.Format("%d",this->m_PhaseCount);
::MessageBox(NULL,_T("进入OnInitDialog"+temp),_T("OKOK"),MB_OK);
*/
CString str;
TCITEM temp[6];
CRect tabRect;
m_TabMoreElastic.GetClientRect(&tabRect);
// 定位选项卡位置
tabRect.bottom -=8;
tabRect.left +=8;
tabRect.top +=20;
tabRect.right-=8;
for (int i=0;i<this->m_PhaseCount;i++)
{
temp[i].mask=TCIF_TEXT;
str.Format("%s%d","Phase No.",i+1);
temp[i].pszText=_T((LPSTR)(LPCTSTR)str);
m_TabMoreElastic.InsertItem(i,&temp[i]);
// 利用一个模版创建多个子对话框
// 确保创建一次并持有对象
if (m_pelectricModelingDLGElastic[i] == NULL){
// 很矛盾,如果没有则创建
//::MessageBox(NULL,_T("DLGElastic分配内存"),_T("OKOK"),MB_OK);
m_pelectricModelingDLGElastic[i] = new ElectricModelingDLGElastic();
}
m_pelectricModelingDLGElastic[i]->Create(IDD_MODELING_DLG_ELASTIC,GetDlgItem(IDC_TAB_MORE_ELASTIC));
//m_electricModelingDLGElastic[i].SetParent(GetDlgItem(IDC_TAB_MORE_ELASTIC));
m_pelectricModelingDLGElastic[i]->m_StaticPropertisPHNox.SetWindowTextA(str);
// 将子对话框移动到指定的位置
m_pelectricModelingDLGElastic[i]->MoveWindow(&tabRect);
}
// simulation type 选择了Material response to an external field时加入相应的选项
if (this->m_simulationType == 1){
//::MessageBox(NULL,_T("选择了Material response to an external field"),_T("OKOK"),MB_OK);
TCITEM mechanical;
mechanical.mask = TCIF_TEXT;
mechanical.pszText = "External Field mechanical";
// 确保创建一次,并持有对象
if (m_pelectricModelingDLGMechanical == NULL){
m_pelectricModelingDLGMechanical = new ElectricModelingDLGMechanical();
}
m_pelectricModelingDLGMechanical->Create(IDD_MODELING_DLG_MECHANICAL,GetDlgItem(IDC_TAB_MORE_ELASTIC));
m_TabMoreElastic.InsertItem(m_PhaseCount,&mechanical);
m_pelectricModelingDLGMechanical->MoveWindow(&tabRect);
m_pelectricModelingDLGMechanical->ShowWindow(SW_HIDE);
}
m_pelectricModelingDLGElastic[0]->ShowWindow(SW_SHOW);
for (int i =1;i<m_PhaseCount;i++)
{
m_pelectricModelingDLGElastic[i]->ShowWindow(SW_HIDE);
}
/*
if (m_pelectricModelingDLGMechanical != NULL){
m_pelectricModelingDLGMechanical->Create(IDD_MODELING_DLG_MECHANICAL,GetDlgItem(IDC_TAB_MORE_ELASTIC));
m_pelectricModelingDLGMechanical->ShowWindow(SW_HIDE);
}
*/
// 给对话框设置标题
this->SetWindowTextA(m_caption);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
示例8: DebugCrashInfo
CString CMissile::DebugCrashInfo (void)
// DebugCrashInfo
//
// Dump debug information
{
CString sResult;
if (m_fDestroyed)
sResult.Append(CONSTLIT("m_fDestroyed: true\r\n"));
sResult.Append(strPatternSubst(CONSTLIT("m_pDesc: %s\r\n"), m_pDesc->m_sUNID.GetPointer()));
sResult.Append(strPatternSubst(CONSTLIT("m_Source: %s\r\n"), CSpaceObject::DebugDescribe(m_Source.GetObj()).GetPointer()));
sResult.Append(strPatternSubst(CONSTLIT("m_pHit: %s\r\n"), CSpaceObject::DebugDescribe(m_pHit).GetPointer()));
sResult.Append(strPatternSubst(CONSTLIT("m_iHitDir: %d\r\n"), m_iHitDir));
sResult.Append(strPatternSubst(CONSTLIT("m_pTarget: %s\r\n"), CSpaceObject::DebugDescribe(m_pTarget).GetASCIIZPointer()));
sResult.Append(strPatternSubst(CONSTLIT("m_iDestiny: %d\r\n"), GetDestiny()));
sResult.Append(strPatternSubst(CONSTLIT("m_iTick: %d\r\n"), m_iTick));
sResult.Append(strPatternSubst(CONSTLIT("m_iLifeLeft: %d\r\n"), m_iLifeLeft));
// m_pExhaust
try
{
if (m_pExhaust)
{
int iExhaustCount = m_pExhaust->GetCount();
sResult.Append(strPatternSubst(CONSTLIT("m_pExhaust: %d\r\n"), iExhaustCount));
}
else
sResult.Append(CONSTLIT("m_pExhaust: none\r\n"));
}
catch (...)
{
sResult.Append(strPatternSubst(CONSTLIT("m_pExhaust: %x [invalid]\r\n"), (DWORD)m_pExhaust));
}
return sResult;
}
示例9: OnReadFromStream
void CMissile::OnReadFromStream (SLoadCtx &Ctx)
// OnReadFromStream
//
// Read object data from a stream
//
// CString CWeaponFireDesc UNID
// DWORD m_iBonus
// DWORD m_iCause
// DWORD m_iHitPoints
// DWORD m_iLifeLeft
// DWORD m_Source (CSpaceObject ref)
// DWORD m_pSovereign (CSovereign ref)
// DWORD m_pHit (CSpaceObject ref)
// Vector m_vHitPos
// DWORD m_iHitDir
// DWORD m_iRotation
// DWORD m_pTarget (CSpaceObject ref)
// DWORD m_iTick
//
// IEffectPainter m_pPainter
//
// DWORD Number of exhaust particles
// Vector exhaust: vPos
// Vector exhaust: vVel
//
// -- version > 0 -----------------------
// DWORD flags
// DWORD Number of saved rotations
// DWORD rotation[]
{
DWORD dwLoad;
#ifdef DEBUG_LOAD
::OutputDebugString("CMissile::OnReadFromStream\n");
#endif
// Load descriptor
CString sDescUNID;
sDescUNID.ReadFromStream(Ctx.pStream);
m_pDesc = g_pUniverse->FindWeaponFireDesc(sDescUNID);
// Load other stuff
Ctx.pStream->Read((char *)&m_iBonus, sizeof(m_iBonus));
if (Ctx.dwVersion >= 18)
{
Ctx.pStream->Read((char *)&dwLoad, sizeof(DWORD));
m_iCause = (DestructionTypes)dwLoad;
}
else
m_iCause = killedByDamage;
if (Ctx.dwVersion >= 28)
Ctx.pStream->Read((char *)&m_iHitPoints, sizeof(DWORD));
else
m_iHitPoints = 0;
Ctx.pStream->Read((char *)&m_iLifeLeft, sizeof(DWORD));
m_Source.ReadFromStream(Ctx);
Ctx.pSystem->ReadSovereignRefFromStream(Ctx, &m_pSovereign);
Ctx.pSystem->ReadObjRefFromStream(Ctx, &m_pHit);
Ctx.pStream->Read((char *)&m_vHitPos, sizeof(CVector));
Ctx.pStream->Read((char *)&m_iHitDir, sizeof(DWORD));
Ctx.pStream->Read((char *)&m_iRotation, sizeof(DWORD));
Ctx.pSystem->ReadObjRefFromStream(Ctx, &m_pTarget);
Ctx.pStream->Read((char *)&m_iTick, sizeof(DWORD));
// Load painter
if (m_pDesc->m_pEffect)
m_pPainter = m_pDesc->m_pEffect->CreatePainterFromStreamAndCreator(Ctx);
// Load exhaust
if (m_pDesc->m_iExhaustRate > 0)
{
int iCount = (m_pDesc->m_iExhaustLifetime / m_pDesc->m_iExhaustRate) + 1;
m_pExhaust = new TQueue<SExhaustParticle>(iCount);
}
Ctx.pStream->Read((char *)&dwLoad, sizeof(DWORD));
for (int i = 0; i < (int)dwLoad; i++)
{
CVector vPos;
CVector vVel;
Ctx.pStream->Read((char *)&vPos, sizeof(CVector));
Ctx.pStream->Read((char *)&vVel, sizeof(CVector));
if (m_pExhaust && i < m_pExhaust->GetMaxCount())
{
SExhaustParticle &Particle = m_pExhaust->GetAt(m_pExhaust->Queue());
Particle.vPos = vPos;
Particle.vVel = vVel;
}
}
// Load saved rotations
//.........这里部分代码省略.........
示例10: ConvertString
/////////////////////////////////////////////////////////////////////////////
// ClientState message handlers
void CClientState::UpdateState()
{
if (!m_dev)
{
return;
}
CDevMgr::GetDevMgr().GetAlarmInfo(m_dev->LoginID, &m_myState);
CString str;
str.Format("(%s [%s])",m_dev->Name, m_dev->IP);
CString strTmp;
CString strDiskError = ConvertString(MSG_CLIENTSTATE_DISKERR);
for (int i=0; i<32; i++)
{
// if (m_myState.diskerror[i])
if (m_myState.dError & (0x01<<i))
{
strTmp.Format(" %d", i+1);
strDiskError += strTmp;
}
}
CString strDiskFull = ConvertString(MSG_CLIENTSTATE_DISKFULL);
//if (m_myState.diskfull)
if (m_myState.dFull)
{
strDiskFull += ConvertString("Full");
}
else
{
strDiskFull += ConvertString("Not");
}
CString strShelter = ConvertString(MSG_CLIENTSTATE_SHELTER);
for (i=0; i<16; i++)
{
if (m_myState.shelter[i])
{
strTmp.Format(" %d", i+1);
strShelter += strTmp;
}
}
CString strAlarm = ConvertString(MSG_CLIENTSTATE_ALARM);
for (i=0; i<m_dev->Info.byAlarmInPortNum; i++)
{
// if (m_myState.alarmout[i])
if (m_myState.cState.alarm[i])
{
strTmp.Format(" %d", i+1);
strAlarm += strTmp;
}
}
CString strMD = ConvertString(MSG_CLIENTSTATE_MOTION);
CString strVideoLost = ConvertString(MSG_CLIENTSTATE_VIDEOLOST);
CString strSD = ConvertString(MSG_CLIENTSTATE_SOUND);
for (i=0; i<m_dev->Info.byChanNum; i++)
{
if (m_myState.cState.motiondection[i])
{
strTmp.Format(" %d", i+1);
strMD += strTmp;
}
if (m_myState.cState.videolost[i])
{
strTmp.Format(" %d", i+1);
strVideoLost += strTmp;
}
if (m_myState.soundalarm[i])
{
strTmp.Format(" %d", i+1);
strSD += strTmp;
}
}
CString strSerial = ConvertString(MSG_CLIENTSTATE_SERIAL);
strTmp.Format("%s", m_dev->Info.sSerialNumber);
strSerial += strTmp;
CString strAlmDec = ConvertString(MSG_CLIENTSTATE_ALMDEC);
strAlmDec += ": \n";
for (i = 0; i < 16; i++)
{
for(int j = 0; j < 8; j++)
{
if (m_myState.almDecoder[i] & (1<<j))
{
strTmp.Format("%d", 1);
}
else
{
strTmp.Format("%d", 0);
}
strAlmDec += strTmp;
}
strAlmDec += " ";
}
str += ConvertString(MSG_CLIENTSTATE_CLIENTSTATE);
//.........这里部分代码省略.........
示例11: MusicGroupBeautify
CString MusicGroupBeautify( CString csName, CString csArtist, int nArtistLock, CString csType, CString csSuffix )
{
CString csResult;
CString csWord;
CString csYear;
int nLen = csName.GetLength();
int nCount;
int nNum;
int nFlag;
TCHAR *ptOrigin = new TCHAR[nLen+1];
lstrcpy( ptOrigin, csName.GetBuffer(nLen) );
csResult.Format( _T("") );
//\u5982\u679C\u672A\u6307\u5B9A\u827A\u672F\u5BB6
if( csArtist.Compare( _T("") ) == 0 || nArtistLock == 0 )
{
nCount = PunctuationGetDashPosition( ptOrigin );
if( nCount != 0 )
{
*( ptOrigin + nCount ) = 0;
csArtist.Format( _T("%s"), ptOrigin );
ptOrigin += nCount + 1;
}
}
//\u8BFB\u53D6\u540E\u9762\u5355\u8BCD
csWord = PunctuationWordGetNext( ptOrigin, &nNum, &nFlag );
nCount = 0;
csResult.Format( _T("") );
while( csWord.Compare( _T("") ) != 0 )
{
//\u5904\u7406\u5355\u8BCD
if( nFlag == 2 || nFlag == -2 )
{
//\u5982\u679C\u662F\u5E74\u4EE3
if( nCount > 0 && WordCheckYear( ptOrigin + nCount - 1 ) == 1 )
{
csYear = csWord;
}
//\u5982\u679C\u662F\u5531\u7247\u7C7B\u578B
else if( WordCheckType( csWord ) == 1 )
{
csType = csWord;
}
//\u5982\u679C\u662F\u6B4C\u66F2\u683C\u5F0F
else if( WordCheckMusic( csWord ) == 1 )
{
csSuffix = WordCap( csWord );
}
//\u5176\u4ED6
else
{
csResult.AppendFormat( csWord );
}
}
//\u5904\u7406\u7B26\u53F7
else if( nFlag == 1 )
csResult.AppendFormat( csWord );
//\u5904\u7406\u672B\u5C3E\u7B26\u53F7
else
{
csResult.AppendFormat( csWord );
break;
}
nCount += nNum;
csWord = PunctuationWordGetNext( ptOrigin + nCount, &nNum, &nFlag );
}
//\u5904\u7406\u62EC\u53F7
csResult = PunctuationDeleteBlankBracket( csResult );
csResult = PunctuationDeleteHead( csResult );
csWord = PunctuationDeleteSingleBracket( csResult );
//\u6574\u4F53\u7ED3\u6784
csResult.Format( _T("") );
if( csArtist.Compare( _T("") ) != 0 )
csResult.AppendFormat( _T("%s-"), csArtist );
csResult.AppendFormat( _T("[%s"), csWord );
if( csYear.Compare( _T("") ) != 0 )
csResult.AppendFormat( _T("(%s)]"), csYear );
else
csResult.AppendFormat( _T("]"), csYear );
if( csType.Compare( _T("") ) != 0 )
csResult.AppendFormat( _T("%s"), csType );
else
csResult.AppendFormat( _T("\u4E13\u8F91"));
csResult.AppendFormat( _T("(%s)"), csSuffix );
csName.ReleaseBuffer();
return csResult;
}
示例12: SecureZeroMemory
DWORD CHooks::RunScript(CString cmd, LPCTSTR currentDir, CString& error, bool bWait, bool bShow)
{
DWORD exitcode = 0;
SECURITY_ATTRIBUTES sa;
SecureZeroMemory(&sa, sizeof(sa));
sa.nLength = sizeof(sa);
sa.bInheritHandle = TRUE;
CAutoFile hOut ;
CAutoFile hRedir;
CAutoFile hErr;
// clear the error string
error.Empty();
// Create Temp File for redirection
TCHAR szTempPath[MAX_PATH];
TCHAR szOutput[MAX_PATH];
TCHAR szErr[MAX_PATH];
GetTortoiseGitTempPath(_countof(szTempPath), szTempPath);
GetTempFileName(szTempPath, _T("git"), 0, szErr);
// setup redirection handles
// output handle must be WRITE mode, share READ
// redirect handle must be READ mode, share WRITE
hErr = CreateFile(szErr, GENERIC_WRITE, FILE_SHARE_READ, &sa, CREATE_ALWAYS, FILE_ATTRIBUTE_TEMPORARY, 0);
if (!hErr)
return (DWORD)-1;
hRedir = CreateFile(szErr, GENERIC_READ, FILE_SHARE_WRITE, 0, OPEN_EXISTING, 0, 0);
if (!hRedir)
return (DWORD)-1;
GetTempFileName(szTempPath, _T("git"), 0, szOutput);
hOut = CreateFile(szOutput, GENERIC_WRITE, FILE_SHARE_READ, &sa, CREATE_ALWAYS, FILE_ATTRIBUTE_TEMPORARY, 0);
if (!hOut)
return (DWORD)-1;
// setup startup info, set std out/err handles
// hide window
STARTUPINFO si;
SecureZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
if (hOut != INVALID_HANDLE_VALUE)
{
si.dwFlags = STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW;
si.hStdOutput = hOut;
si.hStdError = hErr;
si.wShowWindow = bShow ? SW_SHOW : SW_HIDE;
}
PROCESS_INFORMATION pi;
SecureZeroMemory(&pi, sizeof(pi));
DWORD dwFlags = 0;
if (!CreateProcess(NULL, cmd.GetBuffer(), NULL, NULL, TRUE, dwFlags, NULL, currentDir, &si, &pi))
{
int err = GetLastError(); // preserve the CreateProcess error
error = CFormatMessageWrapper(err);
SetLastError(err);
cmd.ReleaseBuffer();
return (DWORD)-1;
}
cmd.ReleaseBuffer();
CloseHandle(pi.hThread);
// wait for process to finish, capture redirection and
// send it to the parent window/console
if (bWait)
{
DWORD dw;
char buf[256];
do
{
SecureZeroMemory(&buf,sizeof(buf));
while (ReadFile(hRedir, &buf, sizeof(buf)-1, &dw, NULL))
{
if (dw == 0)
break;
error += CString(CStringA(buf,dw));
SecureZeroMemory(&buf,sizeof(buf));
}
} while (WaitForSingleObject(pi.hProcess, 0) != WAIT_OBJECT_0);
// perform any final flushing
while (ReadFile(hRedir, &buf, sizeof(buf)-1, &dw, NULL))
{
if (dw == 0)
break;
error += CString(CStringA(buf, dw));
SecureZeroMemory(&buf,sizeof(buf));
}
WaitForSingleObject(pi.hProcess, INFINITE);
GetExitCodeProcess(pi.hProcess, &exitcode);
//.........这里部分代码省略.........
示例13: CHooks
bool CHooks::Create()
{
if (m_pInstance == NULL)
m_pInstance = new CHooks();
CRegString reghooks = CRegString(_T("Software\\TortoiseGit\\hooks"));
CString strhooks = reghooks;
// now fill the map with all the hooks defined in the string
// the string consists of multiple lines, where one hook script is defined
// as four lines:
// line 1: the hook type
// line 2: path to working copy where to apply the hook script
// line 3: command line to execute
// line 4: 'true' or 'false' for waiting for the script to finish
// line 5: 'show' or 'hide' on how to start the hook script
hookkey key;
int pos = 0;
hookcmd cmd;
while ((pos = strhooks.Find('\n')) >= 0)
{
// line 1
key.htype = GetHookType(strhooks.Mid(0, pos));
if (pos+1 < strhooks.GetLength())
strhooks = strhooks.Mid(pos+1);
else
strhooks.Empty();
bool bComplete = false;
if ((pos = strhooks.Find('\n')) >= 0)
{
// line 2
key.path = CTGitPath(strhooks.Mid(0, pos));
if (pos+1 < strhooks.GetLength())
strhooks = strhooks.Mid(pos+1);
else
strhooks.Empty();
if ((pos = strhooks.Find('\n')) >= 0)
{
// line 3
cmd.commandline = strhooks.Mid(0, pos);
if (pos+1 < strhooks.GetLength())
strhooks = strhooks.Mid(pos+1);
else
strhooks.Empty();
if ((pos = strhooks.Find('\n')) >= 0)
{
// line 4
cmd.bWait = (strhooks.Mid(0, pos).CompareNoCase(_T("true"))==0);
if (pos+1 < strhooks.GetLength())
strhooks = strhooks.Mid(pos+1);
else
strhooks.Empty();
if ((pos = strhooks.Find('\n')) >= 0)
{
// line 5
cmd.bShow = (strhooks.Mid(0, pos).CompareNoCase(_T("show"))==0);
if (pos+1 < strhooks.GetLength())
strhooks = strhooks.Mid(pos+1);
else
strhooks.Empty();
bComplete = true;
}
}
}
}
if (bComplete)
{
m_pInstance->insert(std::pair<hookkey, hookcmd>(key, cmd));
}
}
return true;
}
示例14: AddDepthParam
void CHooks::AddDepthParam(CString& sCmd, git_depth_t depth)
{
CString sTemp;
sTemp.Format(_T("%d"), depth);
AddParam(sCmd, sTemp);
}