VC编程之VC++开发的应用技巧三则放送
小标 2019-01-15 来源 : 阅读 1554 评论 0

摘要:本文主要向大家介绍了VC编程之VC++开发的应用技巧三则放送,通过具体的内容向大家展示,希望对大家学习VC编程有所帮助。

本文主要向大家介绍了VC编程之VC++开发的应用技巧三则放送,通过具体的内容向大家展示,希望对大家学习VC编程有所帮助。

VC编程之VC++开发的应用技巧三则放送

  1、创建向导对话框
  在使用具体某个软件的时候,我们常常会在该程序中使用向导模式来建立新的文件,最典型的例子就是在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();
}
  2、在计算机之间实现收发数据
  大家知道,计算机之间相互通信时,一般都是通过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 ",(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 ",iRecv); 
    if(iRecv>=0)
    {
        szRecv[iRecv]='';
        m_szRecv=szRecv;
        UpdateData(FALSE);
    }
}
  3、让工具栏并列显示
  假设在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);
}    

以上就介绍了VC/MFC的学习,希望对VC/MFC有兴趣的朋友有所帮助。了解更多内容,请关注职坐标编程语言VC/MFC频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved