📄 transfiledlg.h
字号:
// TransFileDlg.h : header file
//
#if !defined(AFX_TRANSFILEDLG_H__53358A8F_5492_4A46_82A9_2D6BAE0A555C__INCLUDED_)
#define AFX_TRANSFILEDLG_H__53358A8F_5492_4A46_82A9_2D6BAE0A555C__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
/////////////////////////////////////////////////////////////////////////////
// CTransFileDlg dialog
class CServerSocket;
class CClientSocket;
//定义按钮状态
enum ButtonState {bsNormal,bsHot,bsDown};
//按钮包装类
class CDrawButton
{
public:
ButtonState m_State; //按钮当前状态
WNDPROC m_OldProc; //记录按钮的窗口函数
int m_Flag; //是否释放关联按钮的CDrawButton对象
static int m_Style; //按钮风格
public:
CDrawButton( )
{
m_State = bsNormal;
m_OldProc = NULL;
m_Flag = 0;
}
virtual ~CDrawButton()
{
m_State = bsNormal;
m_OldProc = NULL;
};
LRESULT OnPaint( HWND hWnd )
{
CWnd* pWnd = CWnd::FromHandle(hWnd);
CPaintDC dc(pWnd);
CString Text;
CRect RC;
CFont Font;
CFont *pOldFont;
CBrush Brush;
CBrush *pOldBrush;
CPoint PT(2,2);
dc.SetBkMode( TRANSPARENT );
Font.CreateFont( 12, 0, 0, 0, FW_HEAVY, 0, 0, 0, ANSI_CHARSET, \
OUT_TT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, \
VARIABLE_PITCH | FF_SWISS, "MS Sans Serif" );
pOldFont = dc.SelectObject( &Font );
if( m_State == bsNormal)
{
if (m_Style==2)
{
CBitmap bmp;
bmp.LoadBitmap(IDB_BKBUTTON);
Brush.CreatePatternBrush(&bmp);
}
else
Brush.CreateSolidBrush( RGB( 200, 200, 200 ) );
dc.SetTextColor( RGB( 80, 80, 80) );
}
else if( m_State == bsDown )
{
Brush.CreateSolidBrush( RGB( 160, 160, 160 ) );
dc.SetTextColor( RGB( 50, 50, 250 ) );
}
else if( m_State == bsHot )
{
Brush.CreateSolidBrush( RGB( 100, 100, 180 ) );
dc.SetTextColor( RGB( 250, 250, 0 ) );
}
pOldBrush = dc.SelectObject( &Brush );
pWnd->GetClientRect( &RC );
dc.RoundRect( &RC, PT );
HRGN hRgn = CreateRectRgn( RC.left, RC.top, RC.right, RC.bottom );
pWnd->SetWindowRgn( hRgn, TRUE );
DeleteObject( hRgn );
pWnd->GetWindowText(Text );
dc.DrawText( Text, &RC, DT_CENTER | DT_VCENTER | DT_SINGLELINE );
dc.SelectObject( pOldFont );
dc.SelectObject( pOldBrush );
return TRUE;
}
LRESULT OnLButtonDown( HWND hWnd, UINT nFlags, CPoint point )
{
m_State = bsDown;
SetCapture(hWnd);
SetFocus(hWnd);
return TRUE;
}
LRESULT OnLButtonUp( HWND hWnd, UINT nFlags, CPoint point )
{
if( m_State != bsNormal )
{
m_State = bsNormal;
ReleaseCapture();
InvalidateRect(hWnd,NULL,TRUE);
SendMessage( GetParent(hWnd), WM_COMMAND, GetDlgCtrlID(hWnd), (LPARAM) (hWnd) );
}
return TRUE;
}
LRESULT LoseFocus(HWND hWnd)
{
m_State = bsNormal;
InvalidateRect(hWnd,NULL,TRUE);
SendMessage( hWnd, WM_KILLFOCUS, (long)hWnd, 0);
return TRUE;
}
LRESULT OnMouseMove(HWND hWnd, UINT nFlags, CPoint point ) {
HRGN hRgn = CreateRectRgn( 0, 0, 0, 0 );
GetWindowRgn( hWnd,hRgn );
BOOL ret = PtInRegion( hRgn, point.x, point.y );
if( ret )
{
if( m_State == bsDown)
return TRUE;
if( m_State != bsHot )
{
m_State = bsHot;
InvalidateRect(hWnd,NULL,TRUE);
UpdateWindow(hWnd);
SetCapture(hWnd);
}
}
else
{
m_State = bsNormal;
InvalidateRect(hWnd,NULL,TRUE);
ReleaseCapture();
}
DeleteObject( hRgn );
return TRUE;
}
};
class CTransFileDlg : public CDialog
{
// Construction
public:
void SendFileData();
CString GetFileName(CString FileName);
void ReceiveData();
void OnCancel();
void AcceptConnection();
CTransFileDlg(CWnd* pParent = NULL); // standard constructor
CString m_FileName; //传送的文件名称
CImageList m_ImageList; //图像列表
BOOL m_IsReveived; //是否接收数据
CString m_ReceiveFile; //接收的文件名称
DWORD m_FileSize; //接收的文件大小
DWORD m_FileLen ; //接收的文件长度
CServerSocket* m_pServerSock; //接收文件套接字
CServerSocket* m_ServerSock;
CClientSocket* m_pSendSock; //发送文件套接字
CFile m_File; //保存接收的文件
BOOL m_Send; //是否开始发送数据
BOOL m_SendNext; //是否继续发送数据
DWORD m_SendNum; //记录当前发送的次数
CFile m_SendFile; //发送的文件
DWORD m_SendLen; //记录已经发送的文件长度
DWORD m_SendFileLen; //发送文件的长度
CString m_IP; //本机IP
BOOL m_Received; //判断是否接收到对方的回应信息
BOOL m_SendFinished;//发送是否完成
int m_Count;
// Dialog Data
//{{AFX_DATA(CTransFileDlg)
enum { IDD = IDD_TRANSFILE_DIALOG };
CListCtrl m_List;
CEdit m_Host;
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CTransFileDlg)
public:
virtual BOOL PreTranslateMessage(MSG* pMsg);
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
HICON m_hIcon;
// Generated message map functions
//{{AFX_MSG(CTransFileDlg)
virtual BOOL OnInitDialog();
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
virtual void OnOK();
afx_msg void OnButtonfile();
afx_msg void OnButtontrans();
afx_msg void OnDropFiles(HDROP hDropInfo);
afx_msg void OnTimer(UINT nIDEvent);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_TRANSFILEDLG_H__53358A8F_5492_4A46_82A9_2D6BAE0A555C__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -