常用函数合集—分隔字符串
分隔字符串
vector<string> CMessageHelper::SplitString(string message,char splitBy )
{
int size = message.size();
std::vector<std::string> result;
size_t last = 0;
size_t pos = 0;
pos = message.find(splitBy, last);
while(pos != std::string::npos)
{
string val = message.substr(last, pos - last);
last = pos+1;
result.push_back(val);
pos = message.find(splitBy, last);
}
//最后一个的值
if (pos-last>0)
{
result.push_back(message.substr(last, pos - last));
}
return result;
}
获取当前执行路径
CString CServerClientSocketRecvThread::GetApplicationPath()
{
TCHAR fileName[MAX_PATH + 1];
CString strRet;
//参数为NULL,仅获取exe路径,不能得到DLL路径,改为HANDLE句柄值即可
GetModuleFileName(NULL, fileName, MAX_PATH);
(_tcsrchr(fileName, _T('\\')))[1] = 0;
strRet.Format(_T("%s"), fileName);
CString strAppPath = strRet.Trim();
return strAppPath;
}
string CINIParser::GetDllPath(HMODULE hModule)
{
string exePath = "";
TCHAR tcFullPath[MAX_PATH];
char* pChPath = new char[MAX_PATH];
memset(pChPath, '\0', MAX_PATH);
GetModuleFileName(hModule, tcFullPath, MAX_PATH);
/** 将tchar转为char */
TCHAR2Char(tcFullPath, pChPath);
exePath = string(pChPath);
string dirPath = "";
size_t iPos = exePath.rfind("\\");
dirPath = exePath.substr(0, iPos);
delete[] pChPath;
return dirPath;
}
最小化到托盘
//添加到托盘图标
void CFrameWnd::AddTrayIcon()
{
memset(&m_trayIcon, 0, sizeof(NOTIFYICONDATA));
m_trayIcon.cbSize = sizeof(NOTIFYICONDATA);
m_trayIcon.hIcon = ::LoadIcon(GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_ACMMAIN));
m_trayIcon.hWnd = m_hWnd;
lstrcpy(m_trayIcon.szTip, _T("ACMMain"));
m_trayIcon.uCallbackMessage = WM_SHOWTASK;
m_trayIcon.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
Shell_NotifyIcon(NIM_ADD, &m_trayIcon);
ShowWindow(SW_HIDE);
}
//自定义消息响应
LRESULT CFrameWnd::HandleCustomMessage(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
//托盘消息响应
switch (lParam)
{
case WM_LBUTTONDOWN:
//左键响应
Shell_NotifyIcon(NIM_DELETE, &m_trayIcon);//删除托盘图标
ShowWindow(SW_SHOWNORMAL);
break;
case WM_RBUTTONDOWN:
{
//右键响应
POINT pt;
GetCursorPos(&pt);
SetForegroundWindow(m_hWnd);
HMENU hMenu;
hMenu = CreatePopupMenu();
//添加菜单,关键在于设置的一个标识符WM_ONCLOSE 点击后会用到
AppendMenu(hMenu, MF_STRING, WM_ONCLOSE, _T("Exit"));
//弹出菜单,并把用户所选菜单项的标识符返回
int cmd = TrackPopupMenu(hMenu, TPM_RETURNCMD, pt.x, pt.y, NULL, m_hWnd, NULL);
if (cmd == WM_ONCLOSE)
{
m_trayIcon.hIcon = NULL;
Shell_NotifyIcon(NIM_DELETE, &m_trayIcon);
//Close(0);
}
}
break;
default:
break;
}
bHandled = FALSE;
return 0;
}