熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

開發的應用技巧三則放送

2013-11-13 09:57:51  來源: .NET編程 

  創建向導對話框

  在使用具體某個軟件的時候我們常常會在該程序中使用向導模式來建立新的文件最典型的例子就是在Frontpage中或者Word中使用向導方式來新建一個網頁文件或者Word文檔那麼看到別的程序都能提供人性化的向導對話框後不知您有沒有什麼沖動?如果有的話不妨使用下面的代碼來創建一個向導對話框

  

  

  void CMy_sDlg::OnWiz()
{
CSheet sheet;
sheetSetWizardMode();
int iRet=sheetDoModal();//返回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;
//創建本地套接口
sockListenCreate(SOCK_STREAM);
//綁定參數
sockListenBind();
sockListenListen();
//等待連接請求m_sockSend為成員變量用於通信
sockListenAccept(m_sockSend);
//關閉監聽套接口
sockListenClose();
//啟動定時器定時發送數據

SetTimer(NULL);
}

  void CMy_s_serverDlg::OnTimer(UINT nIDEvent)
{
static iIndex=;
char szSend[];
sprintf(szSend%diIndex++);
//發送TCP數據
int iSend= m_sockSendSend(szSend);
}

  BOOL CMy_s_clientDlg::OnInitDialog()
{
CDialog::OnInitDialog();
//創建本地套接口
m_sockRecvCreate();
//發起連接請求
BOOL fC=m_sockRecvConnect();
TRACE(connect is %s (fC)?OK:Error);
//啟動定時器定時接收數據
SetTimer(NULL);
}

  void CMy_s_clientDlg::OnTimer(UINT nIDEvent)
{
char szRecv[];
//接收TCP數據
int iRecv =m_sockRecvReceive(szRecv);
TRACE(received %d byte iRecv);
if(iRecv>=)
{
szRecv[iRecv]=;
m_szRecv=szRecv;
UpdateData(FALSE);
}
}

  讓工具欄並列顯示

  假設在Windows程序窗口中有幾個工具欄現在我們希望讓這些多個工具欄並列顯示該怎麼實現呢?在這裡我們可以使用下面的函數來實現該功能此函數是從CJLib函數庫弄下來的筆者在下面的程序中實現的功能是讓LeftOf工具欄顯示在Bar工具欄的左側同時還要並列顯示在一起

  下面就是實現其功能的主要代碼

  

  

  void CCJMDIFrameWnd::DockControlBarLeftOf(CControlBar* Bar
CControlBar* LeftOf)
{
CRect rect;
DWORD dw;
UINT n;
// 使用MFC來調整所有工具欄的尺寸
// 確保GetWindowRec准確
RecalcLayout(TRUE);

  LeftOf>GetWindowRect(&rect);
rectOffsetRect();
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(Barn&rect);
}


From:http://tw.wingwit.com/Article/program/net/201311/12133.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.