文件多选修改

3 8 月, 2009

编写MusicPlayer时,对文件多选进行了修改。
void OpenFiles(HWND hwnd)
{
OPENFILENAME ofn;
TCHAR szOpenFileNames[80*MAX_PATH];//文件路径
TCHAR szPath[MAX_PATH];//基路径
TCHAR* p;
ZeroMemory(&ofn, sizeof(ofn));
ofn.lStructSize = sizeof(ofn);
ofn.lpstrFile = szOpenFileNames;
ofn.lpstrFile[0] = ‘\0’;
ofn.nMaxFile = sizeof(szOpenFileNames);
ofn.lpstrFilter = TEXT(“音乐文件(mp3、wma、wav)\0*.mp3;*.wma;*.wav\0所有文件(*.*)\0*.*\0″);
ofn.Flags = OFN_EXPLORER | OFN_ALLOWMULTISELECT | OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
if(GetOpenFileName(&ofn))
{
//单个文件的保存形式为:绝对路径\0
//多个文件的保存形式为:基路径\000文件一\000文件二\0
//注意路径”\”的转义为”\\”
//把路径复制到szPath
//参考资料:http://blog.csdn.net/xuminggang/archive/2009/05/21/4206010.aspx
lstrcpyn(szPath, szOpenFileNames, ofn.nFileOffset+1);
//根据单个和多个文件不同的保存形式,多文件基路径需加”\\”。
szPath[ofn.nFileOffset-1] = ‘\\’;
//把指针移到第一个文件
p = szOpenFileNames + ofn.nFileOffset;
int iPlayListIndex = iNum;//加入的第一个文件
while(*p)
{
lstrcat(szFileName[iNum], szPath); //基路径
lstrcat(szFileName[iNum], p); //基路径+文件=绝对路径
//加入列表
SendMessage(GetDlgItem(hwnd, IDC_LST1), LB_ADDSTRING, 0, (LPARAM)p);
p += lstrlen(p) +1; //移至下一个文件
iNum++; //增加音乐数,移动准备接收下一个文件路径。
}
//设置选中项
SendMessage(GetDlgItem(hwnd, IDC_LST1), LB_SETCURSEL, (WPARAM)iPlayListIndex, 0);
//播放选中项
Play(hwnd, iPlayListIndex);
SetVolume(hwnd);
bPlay = TRUE;
SetWindowText(GetDlgItem(hwnd, IDC_BTNPLAY), “暂停”);
}
}

紫色网映客频道

27 7 月, 2009

采用Y&D Studio投票系统核心构建。

http://www.zisewang.com/stars/stars.php

基于Socket的授时程序

24 7 月, 2009

#include <windowsx.h>
#include <winsock2.h>

#define HIGHTIME 21968699 // 21968708 // Jan 1, 1900 FILETIME.highTime
#define LOWTIME 4259332096 // 1604626432 // Jan 1, 1900 FILETIME.lowtime

void WinSocket()
{
 WSADATA wsaData; 
 WSAStartup(MAKEWORD(2, 0), &wsaData);//初始化Socket库,“2,0”为版本号。
 SOCKET sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);//套接字,即连接线。
 SOCKADDR_IN sa;
 sa.sin_family = AF_INET; 
 sa.sin_port = htons(IPPORT_TIMESERVER);//设置连接服务器端端口
 sa.sin_addr.S_un.S_addr = inet_addr(“210.72.145.8”);//ping www.time.ac.cn
 //客户端端口动态分配、自动生成。
 if(connect(sock, (SOCKADDR *)&sa, sizeof(sa)) == SOCKET_ERROR)
 {
  ShowError();
  return;
 }
    //
    // Add code here
    //
 unsigned long ulTime;
 //接收时间消息
 recv(sock, (char*)&ulTime, sizeof(unsigned long), 0);
 ulTime = ntohl(ulTime);//从网络字节顺序转换为主机字节顺序
 SYSTEMTIME st;
 UINT64 uiCurTime, uiBaseTime, uiResult;
 uiBaseTime = ((UINT64) HIGHTIME << 32) + LOWTIME;
 uiCurTime = (UINT64)ulTime * (UINT64)10000000;
 uiResult = uiBaseTime + uiCurTime;
 FileTimeToSystemTime((LPFILETIME)&uiResult, &st);
 TCHAR cBuffer[256];
 ZeroMemory(cBuffer, sizeof(cBuffer));
 wsprintf(cBuffer, TEXT(“当前准确时间为:%d年%d月%d日 %d时:%d分:%d秒”), st.wYear, st.wMonth, st.wDay, st.wHour+8, st.wMinute, st.wSecond);
 //由于授时服务器返回的是格林尼治时间,中国在东八区,故st.wHour+8。
 MessageBox(NULL, cBuffer, “准确时间”, MB_OK);
 SetSystemTime(&st);
 MessageBox(NULL, TEXT(“授时成功”), TEXT(“授时成功”), MB_OK);
 closesocket(sock);
 WSACleanup();
}

void ShowError()
{
 TCHAR* lpMsgBuf;
 FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |//自动分配消息缓冲区
 FORMAT_MESSAGE_FROM_SYSTEM, //从系统获取信息
 NULL, GetLastError(), //获取错误信息标识
 MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), //使用系统缺省语言
 (LPTSTR)&lpMsgBuf, //消息缓冲区
 0, NULL);
 MessageBox(NULL, lpMsgBuf, TEXT(“错误信息”), MB_ICONERROR);
}

电脑准确对时

可能会因缺少MSVCIRTD.DLL文件报错,将该文件下载并放入WINDOWS/system32文件夹下即可。

Socket网络编程基础

19 7 月, 2009

#include <winsock2.h>

添加连接库wsock32

void WinSocket()
{
 WSADATA wsaData; 
 WSAStartup(MAKEWORD(2, 0), &wsaData);//初始化Socket库,“2,0”为版本号。
 SOCKET sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);//套接字,即连接线。
 SOCKADDR_IN sa;
 sa.sin_family = AF_INET; 
 sa.sin_port = htons(IPPORT_SMTP);//设置连接服务器端端口
 sa.sin_addr.S_un.S_addr = inet_addr(“123.125.50.135”);//123.125.50.135是ping smtp.163.com出来的,后面会讲使用gethostbyname来直接从主机名得到ip地址。
 //客户端端口动态分配、自动生成。
 if(connect(sock, (SOCKADDR *)&sa, sizeof(sa)) == SOCKET_ERROR)
 {
  ShowError();
  return;
 }
    //
    // Add code here
    //
 TCHAR cBuffer[256];
 ZeroMemory(cBuffer, sizeof(cBuffer));
 //接收登录消息
 recv(sock, cBuffer, 256, 0);
 MessageBox(NULL, cBuffer, “”, 0);
 //注意不要忘了末尾的回车
 TCHAR cQuit[] = “QUIT\n”;
 send(sock, cQuit, lstrlen(cQuit), 0);
 ZeroMemory(cBuffer, sizeof(cBuffer));
 //接收退出消息
 recv(sock, cBuffer, 256, 0);
 MessageBox(NULL, cBuffer, “”, 0);
 
 closesocket(sock);
 WSACleanup();
}

void ShowError()
{
 TCHAR* lpMsgBuf;
 FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |//自动分配消息缓冲区
 FORMAT_MESSAGE_FROM_SYSTEM, //从系统获取信息
 NULL, GetLastError(), //获取错误信息标识
 MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), //使用系统缺省语言
 (LPTSTR)&lpMsgBuf, //消息缓冲区
 0, NULL);
 MessageBox(NULL, lpMsgBuf, TEXT(“错误信息”), MB_ICONERROR);
}

MiniDatabaseV1.2天空软件站下载地址

19 7 月, 2009

http://www.skycn.com/soft/56376.html