-
VC++ 6.0 使用消息实现线程通信
线程通信:使用消息实现线程通信,一个了解多线程与消息通信的例子,以下是实现的主要代码:
LRESULT CThreadCommunicationDlg::OnDisplayResult(WPARAM wParam,LPARAM lParam)
{
int nResult = (int)wParam;
SetDlgItemInt(IDC_STATIC_RESULT,nResult,FALSE);
return 0;
}
void CThreadCommunicationDlg::OnButtonCalculate()
{
m_pCalculateThread=
(CCalculateThread*)AfxBeginThread(RUNTIME_CLASS(CCalculateThread));
Sleep(200);
m_pCalculateThread->PostThreadMessage(WM_CALCULATE,m_nLastOperand,NULL);
}
完整的源代码请下载本源码包。
- 2022-02-02 07:06:27下载
- 积分:1
-
2种方案的VC++ 界面换肤模块
一个挺有用的VC++ 界面换肤模块,里面包括了了两种换肤方案,“方案一”文件夹中实现的是加载皮肤文件实现界面换肤,“方案二”文件夹中实现的是加载组件库实现界面换肤。
加载皮肤文件实现界面换肤:选择“界面修改”/“加载界面文件”命令,在打开的窗口中选择皮肤文件(.ski),即可更换界面皮肤.
另外还有加载组件库实现界面换肤,使用的是WndDll.dll,请下载源码具体测试吧。
加载窗体皮肤文件要注意:窗体各部分位图资源:
0,1,2: 分别为标题栏的左中右3部分
3,4,5: 分别为左,下,右边框
6,7,8,9,10,11: 为标题栏普通按钮和热点按钮
12,13: 表示左下角和右下角位图
14: 表示背景位图
- 2022-03-23 09:54:11下载
- 积分:1
-
VC++ MFC程序的生命期设置方法
MFC程序的生命期,调用视的成员函数以便显示空闲处理进行的次数,程序最终显示Onldle已经被调用的次数:
//定义字符串对象
CString strCount,strTem;
strTem="OnIdle已经被调用的次数为:";
//获取设备上下文,以便在上面写文字
pDc=GetWindowDC();
//格式化字符串
strCount.Format("%s%d",strTem,lCount);
//输出文本
pDc->TextOut(100,100,strCount);
//刷新视图的客户区
Invalidate();
//设防资源
ReleaseDC(pDc);
//延迟,以便能看清显示的文字(毫秒单位)
Sleep(100);
- 2022-10-05 03:25:03下载
- 积分:1
-
vc++ 弹窗拦截程序-阻止创建窗口源码
VC6.0阻止弹窗程序 弹窗免疫,阻止创建窗口,基于MFC实现,本弹窗拦截程序主要是根据窗口标题来阻止的,启动程序后在编缉控件中输入窗口标题,如果要输入多个就用空格或回车隔开,然后按开始就可以在以此为标题对话框在刚建立时就被自动关闭,就像没看到它们出现一样.
如果要阻止所有窗口,可以去Hook类中把 WM_INITDIALOG改为WM_CREATE就可以了.这个程序主要用于学习,并没有为实际使用而做过多改善。
- 2022-03-26 04:43:26下载
- 积分:1
-
VC++ 实现对软件的简单加密(注册)功能
VC++ 实现对软件的简单加密,本程序是通过C盘序列号来加密文件,实现软件的注册功能,软件号和C盘序列号同时正确才可验证,而C盘的序列号是唯一的,获得c盘序列号的代码如下:
DWORD VolumeSerialNumber;
GetVolumeInformation("c:",NULL,12,&VolumeSerialNumber,NULL,NULL,NULL,10);
VolumeSerialNumber^=0x12345678;//本机c盘序列号简单运算
m_usernum=VolumeSerialNumber;
UpdateData(false);
然后通过序列的判断,来验证加密是否正确,比如下边的代码来做加密验证:
UpdateData(true);
DWORD num;
num=m_usernum;
num^=0x1999aa98+12;//加密算法
if(!(num==m_serialnum))
{
AfxMessageBox("输入的序列号不正确!");
return;
}
- 2022-11-07 22:05:03下载
- 积分:1
-
VC++ MFC绘图打印技术范例
VC++ 6.0 基于MFC的绘图及打印技术实例,附上了完整源码,打开程序后,可单击“测试”按钮,弹出绘图设置窗口,设置好参数绘图,然后打印出数据。方法步骤:
//创建画笔C++对象
CPen* pPenBlue = new CPen;
//创建画笔
pPenBlue->CreatePen(PS_SOLID,pDoc->m_thick,pDoc->m_color);
//选中当前画笔,并保存以前的画笔
CPen* pOldPen = pDC->SelectObject(pPenBlue);
POSITION posi=pDoc->m_PointList.GetHeadPosition();
while(posi)
{
CPoint point(pDoc->m_PointList.GetNext(posi));
pDC->Ellipse(point.x,point.y,point.x+
pDoc->m_long,point.y+pDoc->m_short);
}
//恢复旧画笔
pDC->SelectObject(pOldPen);
//删除新建的画笔对象
delete pPenBlue;
//设置映射模式
pDC->SetMapMode(MM_ANISOTROPIC);
CSize winSize = CSize(1024, 768);
//设定窗口大小
pDC->SetWindowExt(winSize);
//得到实际设备每逻辑英寸的象素数量
int xLogPixPerInch,yLogPixPerInch;
xLogPixPerInch=pDC->GetDeviceCaps(LOGPIXELSX);
yLogPixPerInch=pDC->GetDeviceCaps(LOGPIXELSY);
//得到设备坐标和逻辑坐标的比例
int xExt,yExt;
xExt=winSize.cx*xLogPixPerInch/96;
yExt=winSize.cy*yLogPixPerInch/96;
//设定视口大小
pDC->SetViewportExt(xExt,yExt);
- 2022-01-25 14:09:09下载
- 积分:1
-
VC++ 音乐播放器 源代码
VC++ 音乐播放器 例子,支持播放列表 ,支持常规的播放控制,自制了界面,从这个播放器软件中,你可以学习到软件界面方面的编写技巧以及音乐播放方面的技巧,运行效果如下图所示。本源码对学习VC++软件编程有很好的借鉴作用。
- 2022-05-20 10:54:09下载
- 积分:1
-
vc 串口接收和发送数据的例子 Cs结构
这是一个CS结构(包括了服务端和客户端)的串口调试程序,测试时,两者都要运行,本程序可让你熟悉串口的相关操作,在客户端和服务端,您都要定义以下几个参数:
m_Comm.SetCommPort(1); //设置串口
m_Comm.SetRThreshold(1); //设置收到多少个字符后触发OnComm事件
m_Comm.SetPortOpen(TRUE); //打开串口
源码中包括了两部分的代码,请下载后编译对应目录中的源码,先运行客户端。
- 2022-02-06 06:48:34下载
- 积分:1
-
VC++ 创建一个非模态对话框
VC++ 创建一个非模态对话框,比较一下模态对话框,与其有何异同。以下是创建对话框的代码:
void CNonModeDlgDlg::Finish()
{
m_pChoice = NULL;
GetDlgItem(IDOK)->EnableWindow();
}
void CNonModeDlgDlg::OnOK()
{
if ( m_pChoice == NULL )
{
m_pChoice = new CChoiceDlg(this);
if ( m_pChoice->Create() == TRUE )
{
GetDlgItem(IDOK)->EnableWindow(FALSE);
}
}
else
{
m_pChoice->SetActiveWindow();
}
}
- 2022-02-10 13:08:52下载
- 积分:1
-
VC++ 读取SQL Server数据库结构
VC++ 读取SQL Server数据库结构,读取指定数据库指定数据表的数据结构,演示中仅是读取出字段名、字段类型和字段类型取值大小,只是演示一种获取字段数据的方法:
m_grid.SetExtendedStyle(LVS_EX_FLATSB
|LVS_EX_FULLROWSELECT
|LVS_EX_HEADERDRAGDROP
|LVS_EX_ONECLICKACTIVATE
|LVS_EX_GRIDLINES);
m_grid.InsertColumn(0,"字段名",LVCFMT_LEFT,100,0);
m_grid.InsertColumn(1,"类型",LVCFMT_LEFT,100,1);
m_grid.InsertColumn(2,"大小",LVCFMT_LEFT,100,2);
- 2022-07-17 13:15:00下载
- 积分:1