扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
1、创建向导对话框
在使用具体某个软件的时候,我们常常会在该
以下是引用片段: 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程序窗口中有几个工具栏,现在我们希望让这些多个工具栏并列显示,该怎么实现呢?在这里,我们可以使用下面的函数来实现该
以下是引用片段: 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); } |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者