本文整理汇总了C++中TCString::Left方法的典型用法代码示例。如果您正苦于以下问题:C++ TCString::Left方法的具体用法?C++ TCString::Left怎么用?C++ TCString::Left使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TCString
的用法示例。
在下文中一共展示了TCString::Left方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: SetMsgFormat
void CProtoSettings::SetMsgFormat(int Flags, TCString Message)
{
if (Flags & (SMF_TEMPORARY | SMF_PERSONAL) && g_AutoreplyOptPage.GetDBValueCopy(IDC_REPLYDLG_RESETCOUNTERWHENSAMEICON) && GetMsgFormat(Flags & (SMF_TEMPORARY | SMF_PERSONAL)) != (const TCHAR*)Message)
ResetSettingsOnStatusChange(szProto);
if (Flags & SMF_TEMPORARY) {
_ASSERT(!Status || Status == g_ProtoStates[szProto].Status);
g_ProtoStates[szProto].TempMsg = (szProto || Message != NULL) ? Message : CProtoSettings(NULL, Status).GetMsgFormat(GMF_LASTORDEFAULT);
}
if (Flags & SMF_PERSONAL) { // set a "personal" message for a protocol. also it's used to set global status message (hContact = NULL).
// if Message == NULL, then we'll use the "default" message - i.e. it's either the global message for szProto != NULL (we delete the per-proto DB setting), or it's just a default message for a given status for szProto == NULL.
g_ProtoStates[szProto].TempMsg.Unset();
CString DBSetting(ProtoStatusToDBSetting(DB_STATUSMSG, IDC_MOREOPTDLG_PERSTATUSPROTOMSGS));
if (Message != NULL)
db_set_ts(NULL, MOD_NAME, DBSetting, Message);
else {
if (!szProto)
db_set_ts(NULL, MOD_NAME, DBSetting, CProtoSettings(NULL, Status).GetMsgFormat(GMF_LASTORDEFAULT)); // global message can't be NULL; we can use an empty string instead if it's really necessary
else
db_unset(NULL, MOD_NAME, DBSetting);
}
}
if (Flags & SMF_LAST) {
COptPage MsgTreeData(g_MsgTreePage);
COptItem_TreeCtrl *TreeCtrl = (COptItem_TreeCtrl*)MsgTreeData.Find(IDV_MSGTREE);
TreeCtrl->DBToMem(CString(MOD_NAME));
int RecentGroupID = GetRecentGroupID(Status);
if (RecentGroupID == -1) { // we didn't find the group, it also means that we're using per status messages; so we need to create it
TreeCtrl->Value.AddElem(CTreeItem(Status ? pcli->pfnGetStatusModeDescription(Status, 0) : MSGTREE_RECENT_OTHERGROUP, g_Messages_RecentRootID, RecentGroupID = TreeCtrl->GenerateID(), TIF_GROUP));
TreeCtrl->SetModified(true);
}
int i;
// try to find an identical message in the same group (to prevent saving multiple identical messages),
// or at least if we'll find an identical message somewhere else, then we'll use its title for our new message
TCString Title(_T(""));
for (i = 0; i < TreeCtrl->Value.GetSize(); i++) {
if (!(TreeCtrl->Value[i].Flags & TIF_GROUP) && TreeCtrl->Value[i].User_Str1 == (const TCHAR*)Message) {
if (TreeCtrl->Value[i].ParentID == RecentGroupID) { // found it in the same group
int GroupOrder = TreeCtrl->IDToOrder(RecentGroupID);
TreeCtrl->Value.MoveElem(i, (GroupOrder >= 0) ? (GroupOrder + 1) : 0); // now move it to the top of recent messages list
TreeCtrl->SetModified(true);
break; // no reason to search for anything else
}
if (Title.IsEmpty()) // it's not in the same group, but at least we'll use its title
Title = TreeCtrl->Value[i].Title;
}
}
if (i == TreeCtrl->Value.GetSize()) { // we didn't find an identical message in the same group, so we'll add our new message here
if (Title.IsEmpty()) { // didn't find a title for our message either
if (Message.GetLen() > MRM_MAX_GENERATED_TITLE_LEN)
Title = Message.Left(MRM_MAX_GENERATED_TITLE_LEN - 3) + _T("...");
else
Title = Message;
TCHAR *p = Title.GetBuffer();
while (*p) { // remove "garbage"
if (!(p = _tcspbrk(p, _T("\r\n\t"))))
break;
*p++ = ' ';
}
Title.ReleaseBuffer();
}
int GroupOrder = TreeCtrl->IDToOrder(RecentGroupID);
TreeCtrl->Value.InsertElem(CTreeItem(Title, RecentGroupID, TreeCtrl->GenerateID(), 0, Message), (GroupOrder >= 0) ? (GroupOrder + 1) : 0);
TreeCtrl->SetModified(true);
}
// now clean up here
int MRMNum = 0;
int MaxMRMNum = g_MoreOptPage.GetDBValueCopy(IDC_MOREOPTDLG_RECENTMSGSCOUNT);
for (i = 0; i < TreeCtrl->Value.GetSize(); i++) {
if (TreeCtrl->Value[i].ParentID == RecentGroupID) { // found a child of our group
if (TreeCtrl->Value[i].Flags & TIF_GROUP || ++MRMNum > MaxMRMNum) { // what groups are doing here?! :))
TreeCtrl->Value.RemoveElem(i);
TreeCtrl->SetModified(true);
i--;
}
}
}
// if we're saving recent messages per status, then remove any messages that were left at the recent messages' root
if (g_MoreOptPage.GetDBValueCopy(IDC_MOREOPTDLG_PERSTATUSMRM)) {
for (i = 0; i < TreeCtrl->Value.GetSize(); i++) {
if (TreeCtrl->Value[i].ParentID == g_Messages_RecentRootID) {
if (!(TreeCtrl->Value[i].Flags & TIF_GROUP)) {
TreeCtrl->Value.RemoveElem(i);
TreeCtrl->SetModified(true);
i--;
}
}
}
}
TreeCtrl->MemToDB(CString(MOD_NAME));
}
}