VC++编程技巧三则

VC++ MFC编辑框动态追加文本:SetSel与ReplaceSel高效实现 在Windows桌面应用开发中,编辑框控件是用户交互与信息展示的基础组件。其核心原理是通过窗口句柄与消息机制实现文本的显示与编辑。传统使用SetWindowText直接替换内容的方式会清空已有文本,无法满足日志输出、聊天窗口等需要累积信息的场景。为此,MFC提供了更精细的文本操作API,通过GetSel、SetSel和ReplaceSel的组合,可以在指定位置插入新内容,从而实现高效的动态追加。这种技术方案不仅避免了整体替换的性能开销,还能精确控制插入点与滚动行为,是构建流畅用户体验的关键。在VC++ MF 阅读详情
VC++编程技巧三则
(帷幄 2001年07月12日 11:49)

1、让工具栏并列显示

假设在Windows程序窗口中有几个工具栏,现在我们希望让这些多个工具栏并列显示,该怎么实现呢?在这里,我们可以使用下面的函数来实现该功能,此函数是从CJ60Lib函数库弄下来的。笔者在下面的程序中实现的功能是,让LeftOf工具栏显示在Bar工具栏的左侧,同时还要并列显示在一起,下面就是实现其功能的主要代码:

void CCJMDIFrameWnd::DockControlBarLeftOf(CControlBar* Bar, CControlBar* LeftOf)
{
CRect rect;
DWORD dw;
UINT n;
// 使用MFC来调整所有工具栏的尺寸
// 确保GetWindowRec准确
RecalcLayout(TRUE);
LeftOf->GetWindowRect(&rect);
rect.OffsetRect(1,0);
dw=LeftOf->GetBarStyle();
n = 0;
n = (dw&CBRS_ALIGN_TOP) ? AFX_IDW_DOCKBAR_TOP: n;
n = (dw&CBRS_ALIGN_BOTTOM&& n==0) ? AFX_IDW_DOCKBAR_BOTTOM:n;
n = (dw&CBRS_ALIGN_LEFT && n==0) ? AFX_IDW_DOCKBAR_LEFT:n;
n = (dw&CBRS_ALIGN_RIGHT&& n==0) ? AFX_IDW_DOCKBAR_RIGHT:n;
DockControlBar(Bar,n,&rect);
}

2、创建向导对话框

在使用具体某个软件的时候,我们常常会在该程序中使用向导模式来建立新的文件,最典型的例子就是在Frontpage2000中或者Word2000中使用向导方式来新建一个网页文件或者Word文档。那么看到别的程序都能提供人性化的向导对话框后,不知您有没有什么冲动?如果有的话,不妨使用下面的代码来创建一个向导对话框:

void CMy56_s1Dlg::OnWiz()
{
CSheet sheet;
sheet.SetWizardMode();
int iRet=sheet.DoModal();//返回ID_WIZFINISH或IDCANCEL
}
//重载BOOL CPropertyPage::OnSetActive( )来控制显示的按钮
BOOL CPage1::OnSetActive()
{
((CPropertySheet*)GetParent())->SetWizardButtons(PSWIZB_BACK|PSWIZB_NEXT);
return CPropertyPage::OnSetActive();
}
BOOL CPage2::OnSetActive()
{
((CPropertySheet*)GetParent())->SetWizardButtons(PSWIZB_BACK|PSWIZB_FINISH);
return CPropertyPage::OnSetActive();
}

3、在计算机之间实现收发数据

大家知道,计算机之间相互通信时,一般都是通过TCP协议来与指定IP地址的主机来建立联系,并进行相互通信的,在这个过程中,必需有一方扮演服务器的角色等待另一方(客户端)的连接请求,所以服务器端需要建立一个监听套接口,然后在此套接口上等待连接。当连接建立后会产生一个新的套接口用于通信。而客户端在创建套接口后只需要简单的调用连接函数就可以创建连接。对于有连接的通信不论是数据的发送还是发送与接收的顺序都是有保证的。下面的代码就是利用VC++提供的CSocket来实现数据收发功能的:

/*
服务器方在端口6802上等待连接,当连接建立后关闭监听套接口
客户方向服务器端口6802发起连接请求
*/
BOOL CMy63_s1_serverDlg::OnInitDialog()
{
CDialog::OnInitDialog();
CSocket sockListen;
//创建本地套接口
sockListen.Create(6802,SOCK_STREAM,"127.0.0.1");
//绑定参数
sockListen.Bind(6802,"127.0.0.1");
sockListen.Listen(5);
//等待连接请求,m_sockSend为成员变量,用于通信
sockListen.Accept(m_sockSend);
//关闭监听套接口
sockListen.Close();
//启动定时器,定时发送数据
SetTimer(1,3000,NULL);
}
void CMy63_s1_serverDlg::OnTimer(UINT nIDEvent)
{
static iIndex=0;
char szSend[20];
sprintf(szSend,"%010d",iIndex++);
//发送TCP数据
int iSend= m_sockSend.Send(szSend,10,0);
}
BOOL CMy63_s1_clientDlg::OnInitDialog()
{
CDialog::OnInitDialog();
//创建本地套接口
m_sockRecv.Create();
//发起连接请求
BOOL fC=m_sockRecv.Connect("127.0.0.1",6802);
TRACE("connect is %s/n",(fC)?"OK":"Error");
//启动定时器,定时接收数据
SetTimer(1,3000,NULL);
}
void CMy63_s1_clientDlg::OnTimer(UINT nIDEvent)
{
char szRecv[20];
//接收TCP数据
int iRecv =m_sockRecv.Receive(szRecv,10,0);
TRACE("received %d byte/n",iRecv);
if(iRecv>=0)
{
szRecv[iRecv]='/0';
m_szRecv=szRecv;
UpdateData(FALSE);
}
}


VC创建不规则窗口 创建不规则窗口无外乎两个API:Set 阅读详情

相关推荐

ActiveX系统兼容Chrome:桥接中间件方案实战指南

在Web开发领域,浏览器兼容性是前端工程师必须面对的基础课题。其核心原理在于不同浏览器对HTML、CSS和JavaScript标准的支持度存在差异,这直接影响了网页的渲染效果与功能实现。从技术价值角度看,解决兼容性问题不仅能提升用户体验,更是保障业务连续性和系统可维护性的关键。尤其在金融、政务、工业控制等传统行业,大量历史系统基于特定浏览器技术(如ActiveX)构建,面临现代浏览器(如Chrome)不再支持的困境。应用场景通常涉及硬件交互、数据采集、安全控件等需要操作系统底层能力的业务模块。本文聚焦于通过

weixin_34212762的博客 371

VC++ 网络SOCKET编程

 VC++ 网络SOCKET编程 作者:Ackarlix  为了方便网络编程,90年代初,由Microsoft联合了其他几家公司共同制定了一套WINDOWS下的网络编程接口,即Windows Sockets规范,它不是一种网络协议,而是一套开放的、支持多种协议的Windows下的网络编程接口。现在的Winsock已经基本上实现了与协议无关,你可以使用Winsock来调用多种

Ackarlix的专栏 4819

MFC疑难注解:CAsyncSocket及CSocket

MFC疑难注解:CAsyncSocket及CSocketfangle 2006-07-27MFC对SOCKET编程的支持其实是很充分的,然而其文档是语焉不详的。以至于大多数用VC编写的功能稍复杂的网络程序,还是使用API的。故CAsyncSocket及CSocket事实上成为疑难,群众多敬而远之。余好事者也,不忍资源浪费,特为之注解。一、CAsyncSocket与CSocket的区别前

不甘碌碌老,结庐铸宝刀 8513

MFC 车牌识别 小学期作业 part4

part6 具体(5) 网络通信(windows 套接字 MFC的 CSocke类) socket(套接字)是现在常用的网络通信的方法,每一种语言都规定了自己的套接字的类,方法和使用规则,但大体上他们都是一样的。 分类的话有TCP和UDP,TCP是接收到一方发送消息,需得到另一方的确认信息才会继续下一步工作的一种协议,而UDP这是发了之后,完全不管对方接不接受得到,就自顾自地下一步了,所以说T

lqadam的博客 1464

【物联网原理与应用】实验三:RFID低频卡实验——门禁系统

【物联网原理与应用】实验三:RFID低频卡实验——门禁系统

m0_74164458的博客 4000

HFSS实战:手把手教你设计3.3-10.6GHz超宽带微带天线(附S11优化技巧)

本文提供了一份基于Ansys HFSS的超宽带微带天线实战设计指南,详细讲解了从3.3GHz到10.6GHz天线的建模、仿真与优化全流程。文章重点剖析了阻抗匹配的核心挑战,并分享了通过接地板开槽、参数化扫描及目标驱动优化等系统性技巧来优化S11曲线的实用方法,帮助射频工程师快速掌握超宽带天线设计的关键技能。

2y3u4i5o6p的博客 1081

CSocket socket相关方法 知识点

问题一: 自己做了个自定义控件,在里面使用CSocket进行连接,对该控件进行调试的时候发送和接受都是好用的,但是当把控件嵌入到一个应用中时,发送OK,但是却接受不到东西 实验证明,要把这个CSOCKT的创建及发送都放在应用的主线程中就是可以接受到数据了,这是问什么呢?   问题二: 关于使用socket接口的tcp与udp连接: (文章末尾有实例代码)

flymachine的专栏 2777

基于STM32+OV7670的图像采集系统(基础篇:ov7670介绍)

一、简单认识 先来看一下外观: OV7670,图像传感器,体积小,工作电压低,提供单片VGA摄像头和影像处理器的所有功能。通过SCCB总线控制,可以输入整帧、子采样、取窗口等方式的各种分辨率8位影像数据。 其他介绍比较繁琐,这里就不一一赘述了,我们只需要知道它是通过SCCB总线控制的就行了。 带FIFO与不带FIFO 目前市场上购买的ov7670模块分为两种,一种是不带FIFO芯片、一种是带FIFO芯片的。 FIFO是什么:(First Input First Output)先入先出的意思,

m0_59113542的博客 4万+

CSocket类网络编程 MFC

Visual C++的MFC提供了CSocket类用来实现网络通信。 下面介绍VC++在Windows 95中实现Socket的 CSocket 类相关成员函数(这些成员函数实际上是从CAsyncSocket 类继承来的)的使用。 (1) BOOL Create( UINT nSocketPort = 0, int nSocketType = SOCK_STREAM, long lEvent =...

weixin_34232617的博客 470

等保2.0下可信验证的动态实现与合规实践

本文深入解读等保2.0标准中的“可信验证”要求,并重点探讨其动态实现与合规实践。文章阐述了从可信根、信任链到动态验证的核心概念,拆解了不同安全等级的实施差异,并提供了从硬件选型、软件赋能到平台集成的四步落地指南。通过行业案例与避坑心得,为构建覆盖计算环境、区域边界、通信网络和安全管理中心的全链条可信防御体系提供了实用参考。

d3e4f的博客 827

使用【阿里云百炼】搭建自己的大模型

本文介绍阿里云百炼大模型平台,其为企业级服务平台,融合通义千问等模型,支持多模态能力,提供一站式工具降低开发门槛。重点讲解智能体应用及大模型搭建步骤,含进入创新应用界面、选模型配参数、输指令、导数据、加载知识库、获取API Key、加样例库、配置MCP,还提及模型调试与多平台发布,并附试用链接,助力企业与开发者快速搭建适配业务的AI模型。

Larry的博客 4738

MFC的CSocket的一个小Bug?

今天写的程序用到了MFC的CSocket类 。首先在一个自己的线程中调用这个CSocket类对象的创建函数CSocket::Create(),这个线程用来执行ReSipRocate的协议栈。然后当点击程序窗口的菜单时,程序的主线程(UI线程)调用销毁函数CSocket::Close()。当程序是Debug版本的时候,会报告一个断言错误“Debug Assertion Failed. Fil

foolskindom的专栏 5117

微信小程序 - 真机调试请求异常 Provisional headers are shown,微信小程序开发者工具调试没问题就真机测试时出现请求报错(微信小程序请求接口提示Provisional h)

微信小程序开发 Request Headers: Provisional headers are shown,微信开发工具请求正常,真机调试和上线之后出现 Provisional headers are shown,微信小程序开发工具调试没问题,真机调试Provisional headers are shown,在开发工具调试,请求正常没问题,使用真机调试,请求异常,微信小程序真机调试时后台是本地服务器,显示“Provisional headers are shown”问题解决,微信小程序websocket

🏆 前端领域优质创作者 1万+

转载:VC++应用技巧三则

VC++应用技巧三则1、创建向导对话框    在使用具体某个软件的时候,我们常常会在该程序中使用向导模式来建立新的文件,最典型的例子就是在Frontpage2000中或者Word2000中使用向导方式来新建一个网页文件或者Word文档    。那么看到别的程序都能提供人性化的向导对话框后,不知您有没有什么冲动?如果有的话,不妨使用下面的代码来创建一个向导对话框:void

longyinggo的专栏 377

【数据分析】基于多组学数据整合的微生物与宿主互作网络构建及可视化分析

综上所述,本教程通过详细的步骤和方法,展示了如何整合微生物群落数据、宿主基因表达数据和代谢组数据,构建微生物与宿主互作网络,并进行可视化分析。这种方法为研究微生物与宿主之间的复杂关系提供了一种有力的工具,有助于推动相关疾病的研究和治疗。然而,在实际应用中,需要注意数据处理和分析过程中的各种问题,并结合实验验证来提高研究结果的可靠性和科学性。未来,随着多组学技术的不断发展和完善,以及数据分析方法的创新,相信我们能够更深入地理解微生物与宿主之间的互作机制,为疾病的预防、诊断和治疗提供更有力的支持。

专注生信领域 370

第42篇FEDGLOSS算法BEYOND LOCAL SHARPNESS:COMMUNICATION-EFFICIENT GLOBALSHARPNESS-AWARE MINIMIZATIONFOR

:用上一轮伪梯度最小化锐度,获取与全局损失最相关的几何信息,引导全局优化趋向更平坦的最小值。效果对比分析:FEDGLOss。

weixin_74009895的博客 526

c语言中文件实验项目,实验项目:实验一 最简单的C程序设计

实验项目:实验一 最简单的C程序设计值得拥有的资料是来自平时学习积累总结的有问题的地方肯定有的还请大家批评指正!实验项目:实验一 最简单的C程序设计(所属课程:《C语言程序设计》学时:2)一、实验目的1.掌握:使用标准输入/输出函数进行常见数据类型的数据的输入/输出方法2.初步培养编制程序框图和源程序、准备测试数据以及实际调试程序的独立编程能力3.掌握顺序结构程序设计的基本思路二、实验条件Pc和v...

weixin_35906864的博客 405

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

•关于windows dna的常见问题-(2013/09/18)

extended message box-(2013/09/18) 关于windows dna的常见问题-(2013/09/18) effective c++ 2e item6-(2013/09/18) introduction to network functions in c-(2013/09/18) writing a dll in c++-(2013/09/18) atl问题集-

q1q2q3q4ln的专栏-随我一起研究程序 930

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

John Robbins 上课时讲的趣事

John Robbins 上课时讲的趣事 我在 2010 年 6 月有幸在微软听了 Wintellect 公司的 John Robbins 大侠的 Windows Debugging 课程。John Robbins 先生何方人士也?乃是 MSDN Magazine 中一度的砍虫大侠——Bugslayer专栏的作者之一。本人久仰其大名,今得见时,激动万分。故而认真听讲,一刻不愿开小差哉。 本文当

Robbie Mosaic's T-Log 1050

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

exescope使用

exescope是软件的名称。软件大小:500KB ;软件语言:简体中文;软件类别: 国产软件 / 编程工具;应用平台: Win2003/XP/2000/98/   简介   eXeScope能在没有资源文件的情况下分析,显示不同的信息,重写可执行文件的资源,包括(EXE,DLL

千愚千寻 3507

子线程更新UI画面的方法

文章一开始,会给出三个版本的代码,其中有一个版本的代码在执行时是会产生异常的。那么,大家能一眼看出是哪个版本的代码吗?版本一: Action ac = () => { this.Label_Note.Content = "麻辣隔壁"; }; this.Dispatcher.BeginInvo

三五月儿的专栏 2811

从Dev C++到Clion:一名C/C++初学者的IDE迁移与高效配置指南

本文为C/C++初学者提供了从Dev C++迁移到Clion的详细指南,包括环境配置、CMake实战和高效开发技巧。重点介绍了MinGW的正确配置方法、CMakeLists.txt的编写规范以及Clion的智能编码辅助功能,帮助开发者提升开发效率。

weixin_29009881的博客 341

VC编辑框(EDIT)实现的自动换行、自动滚屏 、自动清空

Edit Control 实现自动换行 --------------------------------------- 设置属性: multiline:  true  Auto_HScroll:true  Vertical scroll: true  赋值时换行: ----------------------------------------

whu_cindy的博客 540

eXeScope的应用

         ExeScope的使用         您想自定义应用软件吗? 例如:更改字体,更改菜单,更改对话框的排列,等等。但您可能会认为这是不可能的,因为没有资源文件。eXeScope能在没有资源文件的情况下分析、显示不同的信息,重写可执行文件的资源,包括(EXE,DLL,OCX)等。它可以直接修改用VC++及DELPHI编制的程序的资源,包括菜单、对话框、字串表等,是一个理想的汉化工具

我心飞扬 2995

拍马Print 2024:Win11图片合成与打印优化指南

图片合成软件通过智能算法和硬件加速技术,实现高效的多图层处理与打印输出。其核心原理在于利用DirectComposition等图形接口优化渲染流程,配合OpenCV实现精准图层对齐。这类工具在办公自动化、电商设计等场景中尤为重要,能显著提升工作效率。拍马Print 2024作为专为Windows 11优化的解决方案,深度整合Mica材质和新版打印API,在保持轻量化的同时提供200+预设模板,特别适合需要快速完成图片处理的用户。通过DirectML加速和内存管理优化,该软件在Surface Pro等设备上实

weixin_34116482的博客 239

RE-UE4SS专业部署指南:从环境隔离到多项目联动管理

在游戏模组开发与运行时修改领域,动态链接库注入是一项基础且关键的技术,它允许外部代码在程序运行时被加载和执行,从而实现功能扩展与行为修改。其核心原理是通过修改进程的模块加载路径或内存空间,将自定义的DLL文件注入到目标进程中。这项技术的工程价值在于实现了对软件的非侵入式修改,无需改动原始代码即可增加新功能或修复问题,极大地提升了开发灵活性与迭代效率。在虚幻引擎4游戏生态中,这为模组开发者提供了强大的运行时脚本支持能力。应用场景广泛覆盖了游戏参数调试、功能增强、自动化测试以及深度定制化玩法实现。本文将聚焦于R

weixin_29001423的博客 340
上一篇: C#对Java
下一篇: VC开发应用程序答疑
wildcatbb
博客等级 码龄25年 0粉丝 16原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值