1 ****************
void CDlgDlg::OnBrowse()
{ CString str;
BROWSEINFO bi;
char name[MAX_PATH];
ZeroMemory(&bi,sizeof(BROWSEINFO));
bi.hwndOwner=GetSafeHwnd();
bi.pszDisplayName=name;
bi.lpszTitle="Select folder";
bi.ulFlags=BIF_RETURNONLYFSDIRS;
LPITEMIDLIST idl=SHBrowseForFolder(&bi);
if(idl==NULL)
return;
SHGetPathFromIDList(idl,str.GetBuffer(MAX_PATH));
str.ReleaseBuffer();
m_Path=str;
if(str.GetAt(str.GetLength()-1)!='\\')
m_Path+="\\";
UpdateData(FALSE);
} 2***************
void CDlgDlg::DeleteIcon()
{
NOTIFYICONDATA data;
data.cbSize=sizeof(NOTIFYICONDATA);
data.hWnd=GetSafeHwnd();
data.uID=98;
Shell_NotifyIcon(NIM_DELETE,&data);
ShowWindow(SW_SHOW);
SetForegroundWindow();
ShowWindow(SW_SHOWNORMAL);
bTray=FALSE;
}LRESULT CDlgDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
if(message==IDM_SHELL&&lParam==WM_RBUTTONUP){
*pop.LoadMenu(MAKEINTRESOURCE(IDR_MENU1));
*CMenu*pMenu=pop.GetSubMenu(0);
*pMenu->SetDefaultItem(ID_EXITICON);
*CPoint pt;
*GetCursorPos(&pt);
*int id=pMenu->TrackPopupMenu(TPM_RIGHTALIGN|TPM_NONOTIFY|TPM_RETURNCMD|TPM_LEFTBUTTON,
pt.x,pt.y,this); if(id==ID_EXITICON) {
*NOTIFYICONDATA data;
*data.cbSize=sizeof(NOTIFYICONDATA);
*data.hWnd=GetSafeHwnd();
*data.uID=98; //相当于一个id表示号
*Shell_NotifyIcon(NIM_DELETE,&data); //NIM_DELETE NIM_ADD
*ShowWindow(SW_SHOW);
*SetForegroundWindow(); //窗体设置为最前
*ShowWindow(SW_SHOWNORMAL);
bTray=FALSE;
}
else {
OnCancel();
}
return FALSE;
}
LRESULT res= CDialog::WindowProc(message, wParam, lParam); if(message==WM_SYSCOMMAND&&wParam==SC_MINIMIZE)
{
*NOTIFYICONDATA data;
*data.cbSize=sizeof(NOTIFYICONDATA);
*CString tip;
*tip.LoadString(IDS_ICONTIP);
*data.hIcon=GetIcon(0);
*data.hWnd=GetSafeHwnd();
*strcpy(data.szTip,tip);
*data.uCallbackMessage=IDM_SHELL;//回叫消息
*data.uFlags=NIF_ICON|NIF_MESSAGE |NIF_TIP ;//图标、消息、提示
*data.uID=98;
*Shell_NotifyIcon(NIM_ADD,&data);
*ShowWindow(SW_HIDE);
bTray=TRUE;
}
return res;
}
void CDlgDlg::OnBrowse()
{ CString str;
BROWSEINFO bi;
char name[MAX_PATH];
ZeroMemory(&bi,sizeof(BROWSEINFO));
bi.hwndOwner=GetSafeHwnd();
bi.pszDisplayName=name;
bi.lpszTitle="Select folder";
bi.ulFlags=BIF_RETURNONLYFSDIRS;
LPITEMIDLIST idl=SHBrowseForFolder(&bi);
if(idl==NULL)
return;
SHGetPathFromIDList(idl,str.GetBuffer(MAX_PATH));
str.ReleaseBuffer();
m_Path=str;
if(str.GetAt(str.GetLength()-1)!='\\')
m_Path+="\\";
UpdateData(FALSE);
} 2***************
void CDlgDlg::DeleteIcon()
{
NOTIFYICONDATA data;
data.cbSize=sizeof(NOTIFYICONDATA);
data.hWnd=GetSafeHwnd();
data.uID=98;
Shell_NotifyIcon(NIM_DELETE,&data);
ShowWindow(SW_SHOW);
SetForegroundWindow();
ShowWindow(SW_SHOWNORMAL);
bTray=FALSE;
}LRESULT CDlgDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
if(message==IDM_SHELL&&lParam==WM_RBUTTONUP){
*pop.LoadMenu(MAKEINTRESOURCE(IDR_MENU1));
*CMenu*pMenu=pop.GetSubMenu(0);
*pMenu->SetDefaultItem(ID_EXITICON);
*CPoint pt;
*GetCursorPos(&pt);
*int id=pMenu->TrackPopupMenu(TPM_RIGHTALIGN|TPM_NONOTIFY|TPM_RETURNCMD|TPM_LEFTBUTTON,
pt.x,pt.y,this); if(id==ID_EXITICON) {
*NOTIFYICONDATA data;
*data.cbSize=sizeof(NOTIFYICONDATA);
*data.hWnd=GetSafeHwnd();
*data.uID=98; //相当于一个id表示号
*Shell_NotifyIcon(NIM_DELETE,&data); //NIM_DELETE NIM_ADD
*ShowWindow(SW_SHOW);
*SetForegroundWindow(); //窗体设置为最前
*ShowWindow(SW_SHOWNORMAL);
bTray=FALSE;
}
else {
OnCancel();
}
return FALSE;
}
LRESULT res= CDialog::WindowProc(message, wParam, lParam); if(message==WM_SYSCOMMAND&&wParam==SC_MINIMIZE)
{
*NOTIFYICONDATA data;
*data.cbSize=sizeof(NOTIFYICONDATA);
*CString tip;
*tip.LoadString(IDS_ICONTIP);
*data.hIcon=GetIcon(0);
*data.hWnd=GetSafeHwnd();
*strcpy(data.szTip,tip);
*data.uCallbackMessage=IDM_SHELL;//回叫消息
*data.uFlags=NIF_ICON|NIF_MESSAGE |NIF_TIP ;//图标、消息、提示
*data.uID=98;
*Shell_NotifyIcon(NIM_ADD,&data);
*ShowWindow(SW_HIDE);
bTray=TRUE;
}
return res;
}
void CDlgDlg::OnSave()
{ CDC dc;
dc.CreateDC("DISPLAY",NULL,NULL,NULL);
CBitmap bm;
int Width=GetSystemMetrics(SM_CXSCREEN);
int Height=GetSystemMetrics(SM_CYSCREEN);
bm.CreateCompatibleBitmap(&dc,Width,Height);
CDC tdc;
tdc.CreateCompatibleDC(&dc);
CBitmap*pOld=tdc.SelectObject(&bm); tdc.BitBlt(0,0,Width,Height,&dc,0,0,SRCCOPY); tdc.SelectObject(pOld);
BITMAP btm;
bm.GetBitmap(&btm);
DWORD size=btm.bmWidthBytes*btm.bmHeight;
LPSTR lpData=(LPSTR)GlobalAllocPtr(GPTR,size);
/////////////////////////////////////////////
BITMAPINFOHEADER bih;
bih.biBitCount=btm.bmBitsPixel;
bih.biClrImportant=0;
bih.biClrUsed=0;
bih.biCompression=0;
bih.biHeight=btm.bmHeight;
bih.biPlanes=1;
bih.biSize=sizeof(BITMAPINFOHEADER);
bih.biSizeImage=size;
bih.biWidth=btm.bmWidth;
bih.biXPelsPerMeter=0;
bih.biYPelsPerMeter=0;
///////////////////////////////////
GetDIBits(dc,bm,0,bih.biHeight,lpData,(BITMAPINFO*)&bih,DIB_RGB_COLORS);
// bm.GetBitmapBits(size,lpData); //此函数在处理5-5-5模式的16位色下会出现颜色混乱
//////////////////////////////
static int filecount=0;
CString name;
name.Format("pict%04d.bmp",filecount++);
name=m_Path+name;
BITMAPFILEHEADER bfh;
bfh.bfReserved1=bfh.bfReserved2=0;
bfh.bfType=((WORD)('M'<< 8)|'B');
bfh.bfSize=54+size;
bfh.bfOffBits=54;
CFile bf;
if(bf.Open(name,CFile::modeCreate|CFile::modeWrite)){
bf.WriteHuge(&bfh,sizeof(BITMAPFILEHEADER));
bf.WriteHuge(&bih,sizeof(BITMAPINFOHEADER));
bf.WriteHuge(lpData,size);
bf.Close();
nCount++;
}
GlobalFreePtr(lpData);
if(nCount==1)
m_Number.Format("%d picture captured.",nCount);
else
m_Number.Format("%d pictures captured.",nCount);
UpdateData(FALSE);
}
http://www.vckbase.com/document/viewdoc.asp?id=263
if( ::GlobalFindAtom("MyTimer1")/*查找标记*/ == 0)
m_ATOM = ::GlobalAddAtom("MyTimer1");//添加标记
else
{ //询问是否还有打开另一个实例
if(MessageBox(
NULL,
"已经有实例运行中,是否继续?",
"密聊",
MB_YESNO | MB_ICONQUESTION | MB_DEFBUTTON2) == IDNO)
{
return FALSE;
}
}2获得应用程序目录的另一个方法
CString strApp = __argv[0];
int iApp = strApp.ReverseFind('\\');
CSecretKeyEdit temp;
char cApp[MAX_PATH];
temp.CStringToChar(cApp, strApp, iApp);
cApp[iApp] = 0;
m_appName = cApp;
3。图标多多
http://www.vckbase.com/tools/listtools.asp?tclsid=299
4。。文件夹不存在?那建
WIN32_FIND_DATA wfd;
HANDLE hSearch;
hSearch = ::FindFirstFile(m_appName + "\\" + "friend", &wfd);
if(hSearch == INVALID_HANDLE_VALUE/*不存在*/)
{
::CreateDirectory(m_appName + "\\" + "friend", NULL);
}
5ip搞来
char szHostName[128]; //本机网络名
CString szIP; //本机IP地址
if( gethostname( szHostName, 128) == 0 )
{
struct hostent *pHost;
int i, j;
pHost = gethostbyname(szHostName);
for(i = 0;pHost != NULL && pHost->h_addr_list[i] != NULL;i++)
{
for(j = 0;j < pHost->h_length;j++ )
{
CString addr;
if(j > 0 )
szIP += ".";
addr.Format("%u", (unsigned int)((unsigned char*)
pHost->h_addr_list[i])[j]);
szIP += addr;
}
}
}。
char mane1[30];
ZeroMemory(mane1,sizeof(char)*30);
gethostname(mane1,30);
struct hostent *myhost;
myhost = gethostbyname(mane1);
char* myip = inet_ntoa(*((struct in_addr*)myhost->h_addr_list[0]));
CString IP_2 = myip;
//IP-3
WORD wVersionRequested;
WSADATA wsaData;
char name[255];
CString ip;PHOSTENT hostinfo;
wVersionRequested = MAKEWORD( 2, 0 );
if ( WSAStartup( wVersionRequested, &wsaData ) == 0 )
{
if( gethostname ( name, sizeof(name)) == 0)
{
if((hostinfo = gethostbyname(name)) != NULL)
{
ip = inet_ntoa (*(struct in_addr *)*hostinfo->h_addr_list);
}
}
WSACleanup( );
}
CString IP_3 = ip; //选择最短的IP地址
CString IP = IP_1;
if(IP.GetLength() > IP_2.GetLength())
IP = IP_2;
if(IP.GetLength() > IP_3.GetLength())
IP = IP_3;
/*********************************************************/
CEdit *pIP = (CEdit *)GetDlgItem(IDC_STATUSMESSAGES);
CString str = szHostName;
str = "主机名:" + str + " IP地址:" + IP;
pIP->SetWindowText(str);
// pIP->SetWindowText("请用\"密聊\"进行联系,我的IP地址是:" + szIP);
pIP->SetFocus();