Mail模組雜記2.doc

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;

 

}



 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章