-
VC++ FTP、HTTP 多线程断点续传下载文件
VC++ FTP、HTTP 多线程断点续传下载文件,在断点下载时,可获取远程站点信息,如:是否支持断点续传、要下载的文件大小和创建时间等。可设置下载的线程数、下载任务的线程函数、多线程断点续传下载一个文件、关于BOOL bForceDownload/*=FALSE*/的定义,如果为 TRUE 表示强制性重新下载,以下载的部分将会被删除,FALSE 表示断点续传,并创建多线程下载使用的对象和数据缓冲、删除多线程下载使用的对象和数据缓冲。
启动多线程下载,返回 0 表示失败,1表示成功,2表示不用下载了,因为该文件已经下载过了
智能判断要保存的文件是否已经存在,且大小和创建时间一致,如果不是强制性下载,则不需要再下载了。
- 2022-03-19 00:12:39下载
- 积分:1
-
VC++ 首字母大写自动转换源码
VC++拼音首字母大写自动转换程序,获取汉字的拼音首字母,并把首字母转换成大写,这是个VC.NET程序,我电脑上暂时没有编译环境,没有抓到截图,部分代码如下:
class CUpperFirstLetterApp : public CWinAppEx
{
public:
CUpperFirstLetterApp();
// 重写
public:
virtual BOOL InitInstance();
// 实现
DECLARE_MESSAGE_MAP()
};
- 2022-04-18 02:09:56下载
- 积分:1
-
VC 创建内存映像文件对象并使用
VC++6.0 创建内存映像文件对象并使用,实现了写入内存映射文件和从内存映射文件中读取数据,比如将数据从内存映射文件读出,实现方法如下:
void CFileMapTransTxtDlg::OnRead()
{
//创建内存映像对象
HANDLE hMapping;
LPSTR lpData;
hMapping=CreateFileMapping((HANDLE)0xFFFFFFFF,NULL,PAGE_READWRITE,0,0x100,"MYSHARE");
if(hMapping==NULL)
{
AfxMessageBox("CreateFileMapping() failed.");
return;
}
//将文件的视图映射到一个进程的地址空间上,返回LPVOID类型的内存指针
lpData=(LPSTR)MapViewOfFile(hMapping,FILE_MAP_ALL_ACCESS,0,0,0);
if(lpData==NULL)
{
AfxMessageBox("MapViewOfFile() failed.");
return;
}
//给这段映像内存的数据赋给本地变量
m_strDest.Format("%s",lpData);
//释放映像内存
UnmapViewOfFile(lpData);
//更新数据
UpdateData(FALSE);
}
- 2022-05-17 02:25:47下载
- 积分:1
-
VC++ 删除已存在的存储过程
VC++ 演示在程序中删除已存在的存储过程,VC6存储过程相关操作实例,删除方法很简单,创建对象,如下代码示:
UpdateData(true);
BOOL result;
ADOConn m_AdoConn;
m_AdoConn.OnInitADOConn();
_bstr_t sql;
sql = "drop procedure "+m_edit+" ";
result = m_AdoConn.ExecuteSQL(sql);
m_AdoConn.ExitConnect();
if(result)
MessageBox("存储过程已删除!");
else
MessageBox("存储过程不存在!");
- 2022-12-24 15:50:03下载
- 积分:1
-
VC++ 设置位置断点跟踪程序
VC++ 设置位置断点跟踪程序,利用随机产生的数组来测试断点跟踪的效果,具体的实现代码:
srand( (unsigned)time( NULL ) );//产生随机种子
int array[number];
CString str1,str2;
str1="原始顺序:";
for(int i=0;i {
array[i]=rand();//设置条件断点
str2.Format("%d ",array[i]);
str1+=str2;
}
pDC->TextOut(20,10,str1);//输出原始数组顺序
BubbleSort(array, 1, number);
str1="排序顺序:";
for( i=0;i {
str2.Format("%d ",array[i]);
str1+=str2;
}
pDC->TextOut(20,30,str1);//输出排序后的数组顺序
- 2022-03-21 21:04:24下载
- 积分:1
-
VC++自定义鼠标击键(点击)的声音
VC++自定义鼠标击键声音,包括单击鼠标左键和右键的声音信息,一般情况下,Windows系统中有内置的声音,本程序是修改掉默认的单击声,改为自定义的,想熟悉修改过程的,可下载本源码参考。
运行本程序后,在窗口空白处单击鼠标左键或右键会出现与系统不一样的叮咚声音。
- 2022-03-25 07:58:00下载
- 积分:1
-
VC6.0 使用信号量Semaphore实现线程的同步
VC6.0 使用信号量Semaphore实现线程的同步,使用信号量实现线程同步,设置访问保护对象的最多线程数为2,确定当前已经启动运行的线程数目,可以创建线程。
CWinThread* pThread=AfxBeginThread(ThreadProc,&m_Edit);//开辟一个工作线程,
int thread=0;//全局变量记录当前运行线程的数目
CSemaphore mySemaphore(2,2);//创建CSemaphore类对象
UINT ThreadProc(LPVOID pParam)//工作线程入口函数
{
CEdit *pedit=(CEdit*)pParam;
CString str;
thread++;//线程数目加1
str.Format("%d",thread);
pedit->SetWindowText(str);//编辑框显示
CSingleLock singlelock(&mySemaphore);//创建CSingleLock类对象
singlelock.Lock();//计数器初始值减1
MessageBox(NULL,"信号量控制访问资源线程数","提示",MB_ICONWARNING);//弹出对话框
thread--;//线程数目减1
str.Format("%d",thread);
pedit->SetWindowText(str);//编辑框显示
return 0;
}
- 2022-02-20 19:37:49下载
- 积分:1
-
VC++ 使用不同的画笔绘制图形
VC++ 使用不同的画笔绘制图形,演示绘制矩形、绘制多段折线、绘制椭圆、弧形和饼图,使用不同的画笔类型来绘制不同的几何图形,演示了一些VC++图形绘制的基础技巧使用方法。下面的代码演示了如何绘制出这些图形:
//以实线画笔绘制矩形
pOldPen=pDC->SelectObject(&pen[0]);
pDC->Rectangle(10, 10, 110, 110);
pDC->TextOut(10, 115, "绘制矩形");
//使用虚线画笔和函数Polyline输出多段折线
pDC->SelectObject(&pen[1]); //载入虚线画笔
CPoint pts[]={CPoint(190, 20), CPoint(200, 60), CPoint(270, 40), CPoint(210, 80),
CPoint(250, 100), CPoint(300, 30), CPoint(310, 80)};
pDC->Polyline(pts, 7); //绘制多端折线
pDC->TextOut(180, 115, "绘制多段折线");
// 使用Pie和Arc输出饼图和弧形
pDC->SelectObject(&pen[2]); //载入点线画笔
pDC->Ellipse(10, 140, 160, 240);//绘制椭圆
pDC->SelectObject(&pen[3]); //载入点划线画笔
pDC->Pie(20, 150, 150, 230, 160, 160, 10, 160);
pDC->SelectObject(&pen[4]);//载入双点划线画笔
pDC->Arc(20, 150, 150, 230, 10, 220, 160, 220);
pDC->TextOut(10, 245, "绘制椭圆、弧形和饼图");
pDC->SetTextColor(RGB(0,0,255));
pDC->TextOut(220, 200, "使用不同的画笔绘制各种图形");
//恢复设备上下文的原有画笔
pDC->SelectObject(pOldPen);
//删除所创建的画笔资源
for (int i=0; i
- 2022-02-13 06:16:01下载
- 积分:1
-
VC++ 使用滚动条和进度条进行范围设置
VC++ 使用滚动条和进度条进行范围设置,实现滚动条与进度条的联动,当拖动滚动条时,进度条的进度会随着滚动条的位置变化而变化,适时显示进度状态。除了水平的滚动条外,右侧是一个垂直纵向的滚动条和进度条,具有同样的功能,很好的模拟了两者的联动。
编写代码时,可以这样定义滚动条和进度条的参数:
m_crlScrollH.SetScrollRange(0,100);//设置水平滚动范围
m_crlScrollV.SetScrollRange(0,100);//设置垂直滚动范围
m_crlScrollH.SetScrollPos(0);//设置水平滚动控件初始值
m_crlScrollV.SetScrollPos(0);//设置垂直滚动控件初始值
m_ctlProgressH.SetRange(0,100);//设置水平进度条的范围
m_ctlProgressV.SetRange(0,100);//设置垂直进度条的范围
m_ctlProgressH.SetPos(0);//设置水平进度条的初始位置
m_ctlProgressV.SetPos(0);//设置垂直进度条的初始位置
以上代码并不是完整的,完整代码请下载源码包。
- 2022-04-27 16:24:44下载
- 积分:1
-
VC++6.0 执行数据库事务的范例
在VC++6.0程序中执行数据库事务的一个范例,是一个数据库的高级应用例子,关于设置ADO控件,方法如下:
(1)在程序中选择ResourceView视图,打开“Dialog”节点下的“IDD_AFFAIR_DIALOG”对话框资源,右键单击ADO Data控件,在弹出的菜单中选择Properties菜单项,选择通用选项卡,单击“生成”按钮,在连接选项卡中单击“…”按钮,打开当前文件夹中的Access数据库,单击“测试连接”按钮,单击“确定”按钮。
(2)右键单击DataGrid控件,在弹出的菜单中选择Properties菜单项,选择All选项卡,在DataSource项对应的Value值中重新选择IDC ADODC1项。
- 2022-07-23 05:48:05下载
- 积分:1