l 获得hicon
m_hIcon = AfxGetApp()->LoadIcon(IDI_ICON3);
l ExStyle的获得
DWORD dwExStyle = LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | /*LVS_EX_SUBITEMIMAGES |*/
m_List1.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
Extended List-View Styles
l 标准的list初始
static const struct
{
UINT nColHdrId;
int nFormat;
int nWidth;
} colData[] = {{IDS_NULL, LVCFMT_LEFT, 30},
{IDS_NULL, LVCFMT_LEFT, 30},
{IDS_NULL, LVCFMT_LEFT, 30},
{IDS_LOG_COLUMN_MAIL_SENDER, LVCFMT_LEFT, 100},
{IDS_LOG_COLUMN_MAIL_RECEIVE_TIME, LVCFMT_LEFT, 170},
{IDS_LOG_COLUMN_MAIL_TITLE, LVCFMT_LEFT, 180}};
const int nColCount = sizeof colData / sizeof colData[0];
for (int nColumn = 3; nColumn < nColCount; nColumn++)
{
strColumn.LoadString(colData[nColumn].nColHdrId);
m_lcLogListCtrl.InsertColumn(nColumn, strColumn, colData[nColumn].nFormat,
colData[nColumn].nWidth);
// if (nColumn > 0) m_lcLogListCtrl.EnableColumnHiding(nColumn, true);
}
l 命令的定义
///
//
// Head of all commands
//
///
#define DIR_CMD_BASE 0x00000000
typedef struct _tag_CMD_HEAD
{
DWORD dwCmd; // command type
int nBufSize; // command buffer size
BYTE pBuf[0]; // command buffer
_tag_CMD_HEAD()
{
ZeroMemory(this, sizeof(_tag_CMD_HEAD));
};
}
CMD_HEAD, *PCMD_HEAD;
///
// This Message is From MAIL Client To Dir-Server :
// Upload A Attach File:
///
#define CMD_MAIL_CLT_UPLOAD_FILE_REQ DIR_CMD_BASE+4019
typedef struct _tag_Cmd_Mail_Clt_Upload_File_Req
{
// char szUser[M_ACCOUNT_SIZE];
// CHAR szAttachFile[MAX_LENGTH_ATTACH_FILE_PATH];
_tag_Cmd_Mail_Clt_Upload_File_Req()
{
ZeroMemory(this, sizeof(_tag_Cmd_Mail_Clt_Upload_File_Req));
};
}
Cmd_Mail_Clt_Upload_File_Req, *PCmd_Mail_Clt_Upload_File_Req;
#define CMD_MAIL_CLT_UPLOAD_FILE_RET DIR_CMD_BASE+4020
typedef struct _tag_Cmd_Mail_Clt_Upload_File_Ret
{
CHAR szUser[M_ACCOUNT_SIZE];
}
Cmd_Mail_Clt_Upload_File_Ret, *PCmd_Mail_Clt_Upload_File_Ret;
使用
Cmd_Mail_Update_Req strTemp;
strTemp.dwCltExistedMails=12345;
PCMD_HEAD pHead = (PCMD_HEAD)new BYTE[sizeof(CMD_HEAD)+sizeof(Cmd_Mail_Update_Req)];
memset(pHead, 0, sizeof(CMD_HEAD)+sizeof(Cmd_Mail_Update_Req));
pHead->dwCmd = CMD_MAIL_UPDATE_REQ;
pHead->nBufSize = sizeof(CMD_HEAD)+ sizeof(Cmd_Mail_Update_Req);
memcpy(pHead->pBuf, &strTemp, sizeof(Cmd_Mail_Update_Req));
TRACE("[CltMail]-----Ready to Send CMD_MAIL_UPDATE_REQ!");
if (FALSE==m_pTransClt->SendToServer(pHead, pHead->nBufSize)) {
TRACE("[CltMail]-----Send CMD_MAIL_UPDATE_REQ Failed!");
}
else TRACE("[CltMail]-----Send CMD_MAIL_UPDATE_REQ Success!");
l Clable可以改变标签底色
m_staticReNewPwd.SetTextColor(RGB(0, 0, 0)).SetTransparent(TRUE);
m_staticOldPwd.SetTextColor(RGB(0, 0, 0)).SetTransparent(TRUE);
m_staticNewPwd.SetTextColor(RGB(0, 0, 0)).SetTransparent(TRUE);
CAdvancedButton m_btnClose;
CAdvancedButton m_btnQuit;
CAdvancedButton m_btnDownLoadFile;
CAdvancedButton m_btnUploadFile;
CAdvancedButton m_btnAddContact;
CAdvancedButton m_btnSendMail;
l 移动自己定义的窗口
void MailListDlg::OnMouseMove(UINT nFlags, CPoint point)
{
if(nFlags & MK_LBUTTON)
{
SendMessage(WM_SYSCOMMAND,SC_MOVE | HTCLIENT,0);
}
CDialog::OnMouseMove(nFlags, point);
}
l 设置透明区域
//Paint the Common Control
CRect rect(0,0,0,0);
GetWindowRect(&rect);
m_hRgn = CreateWndRgn(rect.Width(),rect.Height());
SetWindowRgn(m_hRgn,TRUE);
SetWindowPos(NULL,rect.left,rect.top,rect.Width(),rect.Height(),SW_SHOW);
m_BtnClose.Create(rect.Width() - 27,
4,
m_pbitmap,
CRect(DLG_BTN_CLOSE_TL_X,DLG_BTN_CLOSE_TL_Y,DLG_BTN_CLOSE_BR_X-1,DLG_BTN_CLOSE_BR_Y),
IDCANCEL,
this);
HRGN CreateWndRgn(int nWidth,int nHeight);
{
HRGN hRgnElliptic = NULL;
HRGN hRgnRect_A = NULL;
HRGN hRgnRect_B = NULL;
RECT rectElliptic;
RECT rectRect_A;
RECT rectRect_B;
rectElliptic.left = 0;
rectElliptic.top = 0;
rectElliptic.right = 2*ELLIPTIC_R;
rectElliptic.bottom = 2*ELLIPTIC_R;
rectRect_A.left = 0;
rectRect_A.top = ELLIPTIC_R;
rectRect_A.right = nWidth;
rectRect_A.bottom = nHeight - ELLIPTIC_R;
rectRect_B.left = ELLIPTIC_R;
rectRect_B.top = 0;
rectRect_B.right = nWidth - ELLIPTIC_R;
rectRect_B.bottom = nHeight;
hRgnElliptic = CreateEllipticRgnIndirect(&rectElliptic);
hRgnRect_A = CreateRectRgnIndirect(&rectRect_A);
hRgnRect_B = CreateRectRgnIndirect(&rectRect_B);
CombineRgn(hRgnRect_A,hRgnRect_A,hRgnElliptic,RGN_OR);
OffsetRgn(hRgnElliptic,nWidth - 2*ELLIPTIC_R + 1,0);
CombineRgn(hRgnRect_A,hRgnRect_A,hRgnElliptic,RGN_OR);
OffsetRgn(hRgnElliptic,0,nHeight - 2*ELLIPTIC_R + 1);
CombineRgn(hRgnRect_A,hRgnRect_A,hRgnElliptic,RGN_OR);
OffsetRgn(hRgnElliptic,-(nWidth - 2*ELLIPTIC_R + 1),0);
CombineRgn(hRgnRect_A,hRgnRect_A,hRgnElliptic,RGN_OR);
CombineRgn(hRgnRect_A,hRgnRect_A,hRgnRect_B,RGN_OR);
DeleteObject(hRgnRect_B);
DeleteObject(hRgnElliptic);
return hRgnRect_A;
}
void MailListDlg::OnPaint()
{
CPaintDC dc(this); // device context for painting
CRect rect(0,0,0,0);
GetWindowRect(&rect);
ScreenToClient(&rect);
dc.FillRect(&rect,m_pEditBkBrush);
CDC memDC;
memDC.CreateCompatibleDC(&dc);
CBitmap *oldBitmap = NULL;
oldBitmap = (CBitmap *) memDC.SelectObject(m_pDialogBitmap);
// int i,j/*,nTopTimes*/;
CString m_strTitle;
m_strTitle.LoadString(IDS_STRING_TITLE_MAIL_LIST_DIALOG);
dc.BitBlt(0,0,DLG_SIDE_WIDTH,DLG_SYSBAR_HEIGHT,&memDC,1,1,SRCCOPY);//Draw the left corner
dc.BitBlt(rect.Width()-DLG_SIDE_WIDTH,0,DLG_SIDE_WIDTH,DLG_SYSBAR_HEIGHT,&memDC,BMP_RIGHT_SIDE-DLG_SIDE_WIDTH,1,SRCCOPY);//Draw the right corner
dc.StretchBlt(DLG_SIDE_WIDTH,0,rect.Width()-DLG_SIDE_WIDTH*2,DLG_SYSBAR_HEIGHT,&memDC,DLG_SIDE_WIDTH+1,1,DLG_SIDE_WIDTH,DLG_SYSBAR_HEIGHT,SRCCOPY);//Stretch the center
//Draw the bottom side
dc.BitBlt(0,rect.Height()-DLG_BOTTOM_HEIGHT,DLG_SIDE_WIDTH,DLG_BOTTOM_HEIGHT,&memDC,1,BMP_BOTTOM_SIDE-DLG_BOTTOM_HEIGHT,SRCCOPY);//Draw the left corner
dc.BitBlt(rect.Width()-DLG_SIDE_WIDTH,rect.Height()-DLG_BOTTOM_HEIGHT,DLG_SIDE_WIDTH,DLG_BOTTOM_HEIGHT,&memDC,BMP_RIGHT_SIDE-DLG_SIDE_WIDTH,BMP_BOTTOM_SIDE-DLG_BOTTOM_HEIGHT,SRCCOPY);//Draw the right corner
dc.StretchBlt(DLG_SIDE_WIDTH,rect.Height()-DLG_BOTTOM_HEIGHT,rect.Width()-DLG_SIDE_WIDTH*2,DLG_BOTTOM_HEIGHT,&memDC,DLG_SIDE_WIDTH+1,BMP_BOTTOM_SIDE-DLG_BOTTOM_HEIGHT,DLG_SIDE_WIDTH,DLG_BOTTOM_HEIGHT,SRCCOPY);//Stretch the center
//Draw the left side
dc.StretchBlt(0,DLG_SYSBAR_HEIGHT,DLG_SIDE_WIDTH,rect.Height()-DLG_BOTTOM_HEIGHT-DLG_SYSBAR_HEIGHT,&memDC,1,25,DLG_SIDE_WIDTH,5,SRCCOPY);
//Draw the right side
dc.StretchBlt(rect.Width()-DLG_SIDE_WIDTH,DLG_SYSBAR_HEIGHT,DLG_SIDE_WIDTH,rect.Height()-DLG_BOTTOM_HEIGHT-DLG_SYSBAR_HEIGHT,&memDC,BMP_RIGHT_SIDE-DLG_SIDE_WIDTH,DLG_SYSBAR_HEIGHT+2,DLG_SIDE_WIDTH,DLG_BOTTOM_HEIGHT,SRCCOPY);
//Draw the center
dc.StretchBlt(DLG_SIDE_WIDTH,DLG_SYSBAR_HEIGHT,rect.Width()-DLG_SIDE_WIDTH*2,rect.Height()-DLG_BOTTOM_HEIGHT-DLG_SYSBAR_HEIGHT,&memDC,30,30,1,1,SRCCOPY);
dc.SelectObject(oldBitmap);
if(!m_strTitle.IsEmpty())
{
CSize size;
size = dc.GetTextExtent(m_strTitle);
CFont* oldfont = dc.SelectObject(&m_Font);
dc.SetBkMode(TRANSPARENT);
COLORREF OldColor = dc.SetTextColor(DLG_TITLE_COLOR_TOP);//::GetSysColor( COLOR_3DSHADOW));
OldColor = dc.SetTextColor(DLG_TITLE_COLOR_TOP);
CRect rcTopTitle(TITLE_TEXT_LEFT+ 1,TITLE_TEXT_TOP,size.cx + TITLE_TEXT_LEFT + 1,(TITLE_TEXT_TOP + size.cy));
dc.DrawText(m_strTitle,&rcTopTitle,DT_LEFT|DT_VCENTER|DT_SINGLELINE);
dc.SetTextColor( OldColor);
dc.SelectObject(oldfont);
}
}
BOOL WriteMailDlg::InitReadDialog()
{
m_strTitle.LoadString(IDS_STRING_TITLE_READMAIL_DIALOG);
CRect rect(0,0,0,0);
GetWindowRect(&rect);
m_hRgn = CreateWndRgn(rect.Width(),rect.Height());
SetWindowRgn(m_hRgn,TRUE);
SetWindowPos(NULL,rect.left,rect.top,rect.Width(),rect.Height(),SW_SHOW);
//add the buttons
m_BtnClose.Create(rect.Width() - 27,
4,
m_pbitmap,
CRect(DLG_BTN_CLOSE_TL_X,DLG_BTN_CLOSE_TL_Y,DLG_BTN_CLOSE_BR_X-1,DLG_BTN_CLOSE_BR_Y),
IDCANCEL,
this);
m_BtnDownLoadFile.Create(383,
80,
m_pbitmap,
CRect(0,109,285,125),
IDC_CMD_DOWN_FILE,
this);
m_BtnQuit.Create( rect.Width()-79,
rect.Height()-38,
m_pbitmap,
CRect(0,188,241,211),
IDCANCEL,
this);
m_BtnReply.Create( rect.Width()-79-60/*Withe*/-10/*Magin*/,
rect.Height()-38,
m_pbitmap,
CRect(0,213,241,236),
IDC_BUTTON_REPLY,
this);
//Set the Static Lable
m_labTitle.SetTextColor(RGB(0, 0, 0)).SetTransparent(TRUE);
m_labDetail.SetTextColor(RGB(0, 0, 0)).SetTransparent(TRUE);
m_labTo.SetTextColor(RGB(0, 0, 0)).SetTransparent(TRUE);
CString str;
str.LoadString(IDS_STRING_LIST_HEAD_FROM);
m_labTo.SetText(str);
m_labAttachFile.SetTextColor(RGB(0, 0, 0)).SetTransparent(TRUE);
//Set the Edit Contrl
m_edtTo.ShowWindow(FALSE);
m_edtFrom.ShowWindow(TRUE);
return TRUE;
}