您的位置:首页 > 编程语言 > C语言/C++

整理一些需要用到的代码——VC++__MFC窗口的应用

2011-07-09 13:26 501 查看
一、VC防止同一个程序运行两个实例

防止同一个程序运行两个实例:
在app类的cpp的InitInstance函数中:

HANDLE hMutex;
BOOL CDeskTopLockApp::InitInstance()
{
CString strName = _T("DeskTopLockApplication");
hMutex = OpenMutex(MUTEX_ALL_ACCESS, false, strName);
if(hMutex == NULL)
{
hMutex = CreateMutex(NULL,NULL,strName);
}
else
{
AfxMessageBox(_T(" 桌面锁已启动 !"));
return false;
}
……………………………………

m_nCmdShow=SW_HIDE;  //程序启动时隐藏窗口A
if (!ProcessShellCommand(cmdInfo))
return FALSE;

// The one and only window has been initialized, so show and update it
m_pMainWnd->ShowWindow(SW_HIDE); //程序启动时隐藏窗口B
m_pMainWnd->UpdateWindow();
// call DragAcceptFiles only if there's a suffix
//  In an SDI app, this should occur after ProcessShellCommand
return TRUE;
}



二、VC编写任务栏右下角图标程序

//任务栏右下角图标程序:
//在CMainFrame头文件中定义变量:
NOTIFYICONDATA  nid;

//在OnCreate函数中或者初始化函数中:
nid.cbSize = sizeof(NOTIFYICONDATA);
nid.hWnd = m_hWnd;
nid.uID = IDI_SYSTEMTRAY; //图标的ID
nid.uFlags = NIF_MESSAGE|NIF_ICON|NIF_TIP;
nid.uCallbackMessage = WM_SYSTEMTRAY; //图标对应的消息的ID
nid.hIcon = AfxGetApp()->LoadIcon(IDI_SYSTEMTRAY);
wcscpy_s(nid.szTip,10, L"桌面锁");
::Shell_NotifyIcon(NIM_ADD,&nid);

//用ON_MESSAGE将WM_SYSTEMTRAY与消息函数绑定:
LRESULT CMainFrame::OnSystemTray(WPARAM wParam, LPARAM lParam)
{
if(wParam == IDI_SYSTEMTRAY)
{
switch(lParam)
{
case WM_LBUTTONDOWN:
{
break;
}

case WM_RBUTTONDOWN:
{
break;
}

case WM_LBUTTONDBLCLK:
{
break;
}
}
}
return 0;
}

//在程序退出之前还要:
NOTIFYICONDATA nid;
nid.cbSize = sizeof(NOTIFYICONDATA);
nid.hWnd = m_hWnd;
nid.uID = IDI_SYSTEMTRAY;
nid.uFlags = 0;
::Shell_NotifyIcon(NIM_DELETE, &nid);

三、隐藏窗口
//本函数实现隐藏窗口
NOTIFYICONDATA   nid;
nid.cbSize=sizeof(NOTIFYICONDATA);
nid.hWnd=this-> m_hWnd;
nid.uFlags=NIF_MESSAGE|NIF_ICON|NIF_TIP;
nid.uID=IDR_MAINFRAME;
nid.hIcon=AfxGetApp()-> LoadIcon(IDI_CCEYE);

strcpy(nid.szTip, "AppName   V1.0 ");

nid.uCallbackMessage=WM_USER+100;//窗口消息
Shell_NotifyIcon(NIM_ADD,&nid);
ShowWindow(SW_HIDE);//放在 需要的地方

//该部分负责退出时销毁图标
NOTIFYICONDATA   nid;
nid.cbSize=sizeof(nid);
nid.uID=IDI_CCEYE;
nid.hWnd=this-> m_hWnd;
Shell_NotifyIcon(NIM_DELETE,&nid);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: