l Get hicon
m_hicon = AFXGETAPP () -> Loadicon (IDI_ICON3);
l Exstyle
DWORD DWEXSTYLE = LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | / * LVS_EX_SUBITEMIMAGES | * /
m_list1.sextendedStyle (LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);
Extended List-View Styles
l Standard List initial
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 { 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 Command definition /// // //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); } } 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 4019TYPEDEF 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; use CMD_mail_update_req startemp; 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 can change the label background 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 Move your own defined window Void Mailistdlg :: OnMousemove (uint nflags, cpoint point) { IF (NFLAGS & MK_LBUTTON) { SendMessage (WM_SYSCOMMAND, SC_MOVE | HTCLIENT, 0); } CDIALOG :: OnMousemove (NFLAGS, POINT); } l Set a transparent area // Paint The Common Control CRECT RECT (0, 0, 0); GetWindowRect (& Re); 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 rectries; 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 = CreatellipticRgnIndirect (& RecTelliptic); HRGNRECT_A = CreateRectrGnIndirect (& RectRect_a); HRGNRECT_B = CreateRectrGNIndirect (& RectRect_B); Combinergn (hrgnRect_a, hrgnRect_a, hrgnellipelic, rgn_or); OFFSETRGN (HRGNELLIPTIC, NWIDTH - 2 * Elliptic_r 1, 0); Combinergn (hrgnRect_a, hrgnRect_a, hrgnellipelic, 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, hrgnellipelic, rgn_or); Combinergn (hrgnRect_a, hrgnRect_a, hrgnRect_b, rgn_or); DeleteObject (hrgnRect_b); DeleteObject (hrgnellipe); Return hrgnRect_a; } Void Mailistdlg :: onpaint () { CPAINTDC DC (this); // Device Context for Painting CRECT RECT (0, 0, 0); GetWindowRect (& Re); ScreenToClient (& Re); 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_STRTILE; M_STRTITLE.LOADSTRING (IDS_STRING_TITE_MAIL_LIST_DIALOG); DC.Bitblt (0, 0, DLG_SIDE_WIDTH, DLG_SYSBAR_HEIGHT, & MEMDC, 1, 1, SRCCPY); // 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, SRCCPY); // 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, srcopy; 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_TOP, Size.cx Title_text_left 1, (Title_Text_top Size.cy); Dc.drawtext (m_strtitle, & rctoptitle, dt_left | dt_vcenter | dt_singlex); Dc.SetTextColor (OldColor); Dc.selectObject (Oldfont); } } Bool writemails :: initReadDialog () { M_STRTITLE.LOADSTRING (IDS_STRING_TITE_READMAIL_DIALOG); CRECT RECT (0, 0, 0); GetWindowRect (& Re); 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 button 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_LABTITE.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; m_edtfrom.ShowWindow (TRUE); Return True; }