常用函数合集---分隔字符串

常用函数合集—分隔字符串

分隔字符串
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;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值