老子三则原文 开发的应用技巧三则放送
开发的应用技巧三则放送
创建向导对话框
在使用具体某个软件的时候 我们常常会在该程序中使用向导模式来建立新的文件 最典型的例子就是在Frontpage 中或者Word 中使用向导方式来新建一个网页文件或者Word文档 那么看到别的程序都能提供人性化的向导对话框后 不知您有没有什么冲动?如果有的话 不妨使用下面的代码来创建一个向导对话框
void CMy _s Dlg::OnWiz() {CSheet sheet;sheet SetWizardMode();int iRet=sheet DoModal();//返回ID_WIZFINISH或IDCANCEL}//重载BOOL CPropertyPage::OnSetActive( )来控制显示的按钮
BOOL CPage ::OnSetActive() {((CPropertySheet*)GetParent()) >SetWizardButtons(PSWIZB_BACK|PSWIZB_NEXT);return CPropertyPage::OnSetActive();}
BOOL CPage ::OnSetActive() {((CPropertySheet*)GetParent()) >SetWizardButtons(PSWIZB_BACK|PSWIZB_FINISH);return CPropertyPage::OnSetActive();}
在计算机之间实现收发数据
大家知道 计算机之间相互通信时 一般都是通过TCP协议来与指定IP地址的主机来建立联系 并进行相互通信的 在这个过程中 必需有一方扮演服务器的角色等待另一方(客户端)的连接请求 所以服务器端需要建立一个监听套接口 然后在此套接口上等待连接 当连接建立后会产生一个新的套接口用于通信 而客户端在创建套接口后只需要简单的调用连接函数就可以创建连接 对于有连接的通信不论是数据的发送还是发送与接收的顺序都是有保证的 下面的代码就是利用VC++提供的CSocket来实现数据收发功能的

BOOL CMy _s _serverDlg::OnInitDialog(){CDialog::OnInitDialog();
CSocket sockListen;//创建本地套接口sockListen Create( SOCK_STREAM );//绑定参数sockListen Bind( );sockListen Listen( );//等待连接请求 m_sockSend为成员变量 用于通信sockListen Accept(m_sockSend);//关闭监听套接口sockListen Close();//启动定时器 定时发送数据SetTimer( NULL);}
void CMy _s _serverDlg::OnTimer(UINT nIDEvent) {static iIndex= ; char szSend[ ]; sprintf(szSend % d iIndex++); //发送TCP数据int iSend= m_sockSend Send(szSend );}
BOOL CMy _s _clientDlg::OnInitDialog(){CDialog::OnInitDialog();//创建本地套接口m_sockRecv Create();//发起连接请求BOOL fC=m_sockRecv Connect( );TRACE( connect is %s (fC)? OK : Error );//启动定时器 定时接收数据SetTimer( NULL);}
void CMy _s _clientDlg::OnTimer(UINT nIDEvent) {char szRecv[ ]; //接收TCP数据int iRecv =m_sockRecv Receive(szRecv );TRACE( received %d byte iRecv); if(iRecv>= ){szRecv[iRecv]= ;m_szRecv=szRecv;UpdateData(FALSE);}}
让工具栏并列显示
假设在Windows程序窗口中有几个工具栏 现在我们希望让这些多个工具栏并列显示 该怎么实现呢?在这里 我们可以使用下面的函数来实现该功能 此函数是从CJ Lib函数库弄下来的 笔者在下面的程序中实现的功能是 让LeftOf工具栏显示在Bar工具栏的左侧 同时还要并列显示在一起
下面就是实现其功能的主要代码
void CCJMDIFrameWnd::DockControlBarLeftOf(CControlBar* Bar CControlBar* LeftOf){CRect rect;DWORD dw;UINT n;// 使用MFC来调整所有工具栏的尺寸// 确保GetWindowRec准确RecalcLayout(TRUE);
LeftOf >GetWindowRect(&rect);rect OffsetRect( );dw=LeftOf >GetBarStyle();n = ;n = (dw&CBRS_ALIGN_TOP) ? AFX_IDW_DOCKBAR_TOP: n;n = (dw&CBRS_ALIGN_BOTTOM&& n== ) ? AFX_IDW_DOCKBAR_BOTTOM:n;n = (dw&CBRS_ALIGN_LEFT && n== ) ? AFX_IDW_DOCKBAR_LEFT:n;n = (dw&CBRS_ALIGN_RIGHT&& n== ) ? AFX_IDW_DOCKBAR_RIGHT:n;DockControlBar(Bar n &rect);}
lishixinzhi/Article/program/net/201311/12133