zoukankan      html  css  js  c++  java
  • QQ模仿之弹窗ADDFriend事件

    大家自己分析吧

    #pragma once
    
    //演示QQ2009
    #define WINDOW_WIDTH   250 //窗口宽度
    #define WINDOW_HEIGHT  600 //窗口高度
    
    struct xc_image_res  //图片资源
    {
        HIMAGE image_bk;
        HIMAGE hImageLogo;
    
        HIMAGE close_leave;
        HIMAGE close_stay;
        HIMAGE close_down;
    
        HIMAGE max_leave;
        HIMAGE max_stay;
        HIMAGE max_down;
    
        HIMAGE min_leave;
        HIMAGE min_stay;
        HIMAGE min_down;
    
        HIMAGE weather;
    
        HIMAGE face_leave;
        HIMAGE face_stay;
    
        HIMAGE userstate_leave;
        HIMAGE userstate_stay;
        HIMAGE userstate_down;
    
        HIMAGE button_leave;
        HIMAGE button_stay;
        HIMAGE button_down;
    
        HIMAGE searchedit;
    
        HIMAGE search;
        HIMAGE icon1;
        HIMAGE icon2;
        HIMAGE icon3;
        HIMAGE icon7;
        HIMAGE icon8;
        HIMAGE icon9;
        HIMAGE icon10;
        HIMAGE icon11;
        HIMAGE icon15;
        HIMAGE icon16;
    
        HIMAGE mainMenu_leave;
        HIMAGE mainMenu_stay;
    
        HIMAGE hideleftpanel_leave;
        HIMAGE hideleftpanel_stay;
    
        HIMAGE tabLeft_leave;
        HIMAGE tabLeft_stay;
        HIMAGE tabLeft_down;
    
        HIMAGE leftpane;
        HIMAGE tab1;
        HIMAGE tab2;
        HIMAGE tab3;
    
        HIMAGE talkLabel_leave;
        HIMAGE talkLabel_stay;
        HIMAGE talkLabel_down;
    
        HIMAGE talktbico1;
        HIMAGE talktbico2;
        HIMAGE talktbico3;
    
        HIMAGE imp_shrink;
        HIMAGE imp_expand;
        HIMAGE imp_icon_1;
        HIMAGE imp_icon_2;
        HIMAGE imp_icon_3;
        HIMAGE imp_icon_4;
        HIMAGE imp_icon_5;
        HIMAGE imp_icon_6;
    
        HIMAGE scroll_thumb_leave;
        HIMAGE scroll_thumb_down;
    
        HIMAGE scroll_up_leave;
        HIMAGE scroll_up_down;
    
        HIMAGE scroll_down_leave;
        HIMAGE scroll_down_down;
    
    };
    
    class DemoCPlus : public CXEventMsg
    {
    public:
        DemoCPlus(void);
        ~DemoCPlus(void);
        void CreateWnd();
    
        void LoadImageRes();
    
        void HandleButton_Close(HELE hClose);
        void HandleButton_Max(HELE hMax);
        void HandleButton_Min(HELE hMin);
        void CreateWeatherButton(HWINDOW hWindow);
        void HandleButton_Face(HELE hFace);
        void HandleButton_UserState(HELE hUserState);
        void HandleButton_UserSign(HELE hUserSign);
        void HandleEdit_Search(HELE hSearch);
        HELE CreateToolButton(HWINDOW hWindow,int x,int y,int cx,int cy);
        HELE CreateToolSearchButton(HWINDOW hWindow);
        void HandleCreateToolButton(HWINDOW hWindow);
        void HandleCreateMainMenuButton(HWINDOW hWindow);
        HELE HandleCreateLeftPaneButton(HELE hPic,int x,int y,int cx,int cy);
        void HandleCreateLeftPane(HWINDOW hWindow);
        void HandleCreateMainTab(HWINDOW hWindow);
    
        HMENUX CreatePlayerCombox();
    
        bool OnWndNCEndDrawWindow(HWINDOW hWindow,HDC hdc);
        bool OnWndSize(HWINDOW hWindow,UINT flags,SIZE *pSize);
        bool OnWndDestroy(HWINDOW hWindow) ;
        bool OnFriendsLButtonUp(HELE hEle, POINT *pPt) ;
        bool OnFriendsRButtonUp(HELE hEle, POINT *pPt) ;
    
        bool EleRButtonDown(HELE hEle,UINT flags,POINT *pPt);
    
        BOOL My_MenuSelect(HWINDOW hWindow,int id);  //菜单选择
    
    private:
        xc_image_res image_res;
        HWINDOW hWindow;
        HELE hWeather;
        HELE hUserSign;
        HELE hButtonSkin;
        HELE hButtonMsg;
        HELE hTree;
        HELE hTabBar;
        HELE hButtonHidePane;
        HELE hButtonMainMenu;
        HELE hButtonTool1;
        HELE hButtonTool2;
        HELE hButtonTool3;
        HELE hButtonTool4;
        HELE hButtonTool5;
        HELE hButtonTool6;
        HELE hLeftPane;
        HELE hSearchEdit;
        HELE hComboBox;
        HMENUX hMenu;
        int m_CurFriID;
        int group1;
        int group2;
    };
    View Code
    #include "stdafx.h"
    #include "DemoCPlus.h"
    
    DemoCPlus::DemoCPlus(void)
    {
        hMenu = NULL;
        m_CurFriID = -1;
    }
    
    DemoCPlus::~DemoCPlus(void)
    {
    }
    
    void DemoCPlus::LoadImageRes()
    {
        image_res.image_bk=XImage_LoadZipAdaptive(L"qqImage.zip",L"qqImage/back.bmp",NULL,6,174,123,140);
        image_res.hImageLogo=XImage_LoadZip(L"qqImage.zip",L"qqImage/logo2009.png");
    
        image_res.close_leave=XImage_LoadZip(L"qqImage.zip",L"qqImage/button/close_leave.png");
        image_res.close_stay=XImage_LoadZip(L"qqImage.zip",L"qqImage/button/close_stay.png");
        image_res.close_down=XImage_LoadZip(L"qqImage.zip",L"qqImage/button/close_down.png");
    
        image_res.max_leave=XImage_LoadZip(L"qqImage.zip",L"qqImage/button/max_leave.png");
        image_res.max_stay=XImage_LoadZip(L"qqImage.zip",L"qqImage/button/max_stay.png");
        image_res.max_down=XImage_LoadZip(L"qqImage.zip",L"qqImage/button/max_down.png");
    
        image_res.min_leave=XImage_LoadZip(L"qqImage.zip",L"qqImage/button/min_leave.png");
        image_res.min_stay=XImage_LoadZip(L"qqImage.zip",L"qqImage/button/min_stay.png");
        image_res.min_down=XImage_LoadZip(L"qqImage.zip",L"qqImage/button/min_down.png");
    
        image_res.weather=XImage_LoadZip(L"qqImage.zip",L"qqImage/button/weather.png");
    
        image_res.face_leave=XImage_LoadZip(L"qqImage.zip",L"qqImage/face_leave.png");
        image_res.face_stay=XImage_LoadZip(L"qqImage.zip",L"qqImage/face_stay.png");
    
        image_res.userstate_leave=XImage_LoadZip(L"qqImage.zip",L"qqImage/button/userstate_leave.png");
        image_res.userstate_stay=XImage_LoadZip(L"qqImage.zip",L"qqImage/button/userstate_stay.png");
        image_res.userstate_down=XImage_LoadZip(L"qqImage.zip",L"qqImage/button/userstate_down.png");
    
        image_res.button_leave=XImage_LoadZip(L"qqImage.zip",L"qqImage/button_leave.png");
        image_res.button_stay=XImage_LoadZipAdaptive(L"qqImage.zip",L"qqImage/button_stay.png",NULL,3,22,3,22);
        image_res.button_down=XImage_LoadZipAdaptive(L"qqImage.zip",L"qqImage/button_down.png",NULL,3,22,3,22);
    
        image_res.searchedit=XImage_LoadZipAdaptive(L"qqImage.zip",L"qqImage/searchedit.png",NULL,9,13,6,19);
    
        image_res.search=XImage_LoadZip(L"qqImage.zip",L"qqImage/17.png");
    
        image_res.icon1=XImage_LoadZip(L"qqImage.zip",L"qqImage/1.png");
        image_res.icon2=XImage_LoadZip(L"qqImage.zip",L"qqImage/2.png");
        image_res.icon3=XImage_LoadZip(L"qqImage.zip",L"qqImage/3.png");
        image_res.icon7=XImage_LoadZip(L"qqImage.zip",L"qqImage/7.png");
        image_res.icon8=XImage_LoadZip(L"qqImage.zip",L"qqImage/8.png");
        image_res.icon9=XImage_LoadZip(L"qqImage.zip",L"qqImage/9.png");
        image_res.icon10=XImage_LoadZip(L"qqImage.zip",L"qqImage/10.png");
        image_res.icon11=XImage_LoadZip(L"qqImage.zip",L"qqImage/11.png");
        image_res.icon15=XImage_LoadZip(L"qqImage.zip",L"qqImage/15.png");
        image_res.icon16=XImage_LoadZip(L"qqImage.zip",L"qqImage/16.png");
    
        image_res.mainMenu_leave=XImage_LoadZip(L"qqImage.zip",L"qqImage/mainMenu.png");
        image_res.mainMenu_stay=XImage_LoadZip(L"qqImage.zip",L"qqImage/mainMenu_stay.png");
    
        image_res.hideleftpanel_leave=XImage_LoadZip(L"qqImage.zip",L"qqImage/button/hideleftpanel_leave.png");
        image_res.hideleftpanel_stay=XImage_LoadZip(L"qqImage.zip",L"qqImage/button/hideleftpanel_stay.png");
    
        image_res.tabLeft_leave=XImage_LoadZip(L"qqImage.zip",L"qqImage/button/tabLeft_leave.png");
        image_res.tabLeft_stay=XImage_LoadZip(L"qqImage.zip",L"qqImage/button/tabLeft_stay.png");
        image_res.tabLeft_down=XImage_LoadZip(L"qqImage.zip",L"qqImage/button/tabLeft_down.png");
    
        image_res.leftpane=XImage_LoadZip(L"qqImage.zip",L"qqImage/leftpane.png",0,true);
        image_res.tab1=XImage_LoadZip(L"qqImage.zip",L"qqImage/tab1.png");
        image_res.tab2=XImage_LoadZip(L"qqImage.zip",L"qqImage/tab2.png");
        image_res.tab3=XImage_LoadZip(L"qqImage.zip",L"qqImage/tab3.png");
    
        image_res.talkLabel_leave=XImage_LoadZip(L"qqImage.zip",L"qqImage/talkLabel_leave.png",0,true);
        image_res.talkLabel_stay=XImage_LoadZip(L"qqImage.zip",L"qqImage/talkLabel_stay.png",0,true);
        image_res.talkLabel_down=XImage_LoadZip(L"qqImage.zip",L"qqImage/talkLabel_check.png",0,true);
    
        image_res.talktbico1=XImage_LoadZip(L"qqImage.zip",L"qqImage/talktbico1.png");
        image_res.talktbico2=XImage_LoadZip(L"qqImage.zip",L"qqImage/talktbico2.png");
        image_res.talktbico3=XImage_LoadZip(L"qqImage.zip",L"qqImage/talktbico3.png");
    
        image_res.imp_shrink=XImage_LoadZip(L"qqImage.zip",L"qqImage/avatar/imp_shrink.png");
        image_res.imp_expand=XImage_LoadZip(L"qqImage.zip",L"qqImage/avatar/imp_expand.png");
        image_res.imp_icon_1=XImage_LoadZip(L"qqImage.zip",L"qqImage/avatar/imp_icon_1.png");
        image_res.imp_icon_2=XImage_LoadZip(L"qqImage.zip",L"qqImage/avatar/imp_icon_2.png");
        image_res.imp_icon_3=XImage_LoadZip(L"qqImage.zip",L"qqImage/avatar/imp_icon_3.png");
        image_res.imp_icon_4=XImage_LoadZip(L"qqImage.zip",L"qqImage/avatar/imp_icon_4.png");
        image_res.imp_icon_5=XImage_LoadZip(L"qqImage.zip",L"qqImage/avatar/imp_icon_5.png");
        image_res.imp_icon_6=XImage_LoadZip(L"qqImage.zip",L"qqImage/avatar/imp_icon_6.png");
    
        image_res.scroll_thumb_leave=XImage_LoadZipAdaptive(L"qqImage.zip",L"qqImage/scroll_thumb_leave.png",NULL,3,11,3,27);
        image_res.scroll_thumb_down=XImage_LoadZipAdaptive(L"qqImage.zip",L"qqImage/scroll_thumb_down.png",NULL,3,11,3,27);
    
        image_res.scroll_up_leave=XImage_LoadZip(L"qqImage.zip",L"qqImage/scroll_up_leave.png");
        image_res.scroll_up_down=XImage_LoadZip(L"qqImage.zip",L"qqImage/scroll_up_Down.png");
    
        image_res.scroll_down_leave=XImage_LoadZip(L"qqImage.zip",L"qqImage/scroll_down_leave.png");
        image_res.scroll_down_down=XImage_LoadZip(L"qqImage.zip",L"qqImage/scroll_down_down.png");
    }
    
    void DemoCPlus::HandleButton_Close( HELE hClose )
    {
        XEle_SetBkTransparent(hClose,true);
        XEle_EnableFocus(hClose,false);
        RECT rc={0,1,42,18};
        XEle_SetRect(hClose,&rc);
        XBtn_SetImageLeave(hClose,image_res.close_leave);
        XBtn_SetImageStay(hClose,image_res.close_stay);
        XBtn_SetImageDown(hClose,image_res.close_down);
    }
    
    void DemoCPlus::HandleButton_Max( HELE hMax )
    {
        XEle_EnableFocus(hMax,false);
        RECT rc={0,1,26,18};
        XEle_SetRect(hMax,&rc);
        XBtn_SetImageLeave(hMax,image_res.max_leave);
        XBtn_SetImageStay(hMax,image_res.max_stay);
        XBtn_SetImageDown(hMax,image_res.max_down);
    }
    
    void DemoCPlus::HandleButton_Min( HELE hMin )
    {
        XEle_SetBkTransparent(hMin,true);
        XEle_EnableFocus(hMin,false);
        RECT rc={0,1,25,18};
        XEle_SetRect(hMin,&rc);
        XBtn_SetImageLeave(hMin,image_res.min_leave);
        XBtn_SetImageStay(hMin,image_res.min_stay);
        XBtn_SetImageDown(hMin,image_res.min_down);
    }
    
    void DemoCPlus::CreateWeatherButton( HWINDOW hWindow )
    {
        hWeather=XBtn_Create(WINDOW_WIDTH-38-10,10,38,38,NULL,hWindow);
        XBtn_EnableCursorHand(hWeather,true);
        XEle_SetBkTransparent(hWeather,true);
        XBtn_SetImageLeave(hWeather,image_res.weather);
        XBtn_SetImageStay(hWeather,image_res.weather);
        XBtn_SetImageDown(hWeather,image_res.weather);
    }
    
    void DemoCPlus::HandleButton_Face( HELE hFace )
    {
        XEle_SetBkTransparent(hFace,true);
        XEle_EnableFocus(hFace,false);
        XBtn_SetImageLeave(hFace,image_res.face_leave);
        XBtn_SetImageStay(hFace,image_res.face_stay);
        XBtn_SetImageDown(hFace,image_res.face_stay);
    }
    
    void DemoCPlus::HandleButton_UserState( HELE hUserState )
    {
        XEle_SetBkTransparent(hUserState,true);
        XEle_EnableFocus(hUserState,false);
        XBtn_SetImageLeave(hUserState,image_res.userstate_leave);
        XBtn_SetImageStay(hUserState,image_res.userstate_stay);
        XBtn_SetImageDown(hUserState,image_res.userstate_down);
    }
    
    void DemoCPlus::HandleButton_UserSign( HELE hUserSign )
    {
        XEle_SetBkTransparent(hUserSign,true);
        XEle_EnableFocus(hUserSign,false);
        XBtn_SetTextAlign(hUserSign,DT_SINGLELINE | DT_VCENTER);
    
        XBtn_SetImageLeave(hUserSign,image_res.button_leave);
        XBtn_SetImageStay(hUserSign,image_res.button_stay);
        XBtn_SetImageDown(hUserSign,image_res.button_down);
    }
    
    void DemoCPlus::HandleEdit_Search( HELE hSearch )
    {
        XSView_SetSpacing(hSearch,8,5,35,0);
        XEle_EnableBorder(hSearch,false);
        //    XSView_SetImage(hSearch,image_res.searchedit);
        XEdit_SetImageLeave(hSearch,image_res.searchedit);
        XEdit_SetImageStay(hSearch,image_res.searchedit);
    }
    
    HELE DemoCPlus::CreateToolButton( HWINDOW hWindow,int x,int y,int cx,int cy )
    {
        HELE hButton=XBtn_Create(x,y,cx,cy,NULL,hWindow);
        XEle_SetBkTransparent(hButton,true);
        XEle_EnableFocus(hButton,false);
    
        XBtn_SetImageLeave(hButton,image_res.button_leave);
        XBtn_SetImageStay(hButton,image_res.button_stay);
        XBtn_SetImageDown(hButton,image_res.button_down);
    
        return hButton;
    }
    
    HELE DemoCPlus::CreateToolSearchButton( HWINDOW hWindow )
    {
        hButtonTool6=XBtn_Create(94,WINDOW_HEIGHT-50,60,22,NULL,hWindow);
        XEle_SetBkTransparent(hButtonTool6,true);
        XEle_EnableFocus(hButtonTool6,false);
    
        XBtn_SetImageLeave(hButtonTool6,image_res.button_leave);
        XBtn_SetImageStay(hButtonTool6,image_res.button_stay);
        XBtn_SetImageDown(hButtonTool6,image_res.button_down);
    
        XBtn_SetText(hButtonTool6,L"Search");
        XBtn_SetIcon(hButtonTool6,image_res.search);
        return hButtonTool6;
    }
    
    void DemoCPlus::HandleCreateToolButton( HWINDOW hWindow )
    {
        HELE hButton=CreateToolButton(hWindow,10,52,22,20);
        XBtn_SetIcon(hButton,image_res.icon1);
    
        hButton=CreateToolButton(hWindow,32,52,22,20);
        XBtn_SetIcon(hButton,image_res.icon2);
    
        hButton=CreateToolButton(hWindow,54,52,22,20);
        XBtn_SetIcon(hButton,image_res.icon3);
        ////////////////////
        hButtonSkin=CreateToolButton(hWindow,WINDOW_WIDTH-10-22,52,22,20);
        XBtn_SetIcon(hButtonSkin,image_res.icon8);
    
        hButtonMsg=CreateToolButton(hWindow,WINDOW_WIDTH-10-22-22,52,22,20);
        XBtn_SetIcon(hButtonMsg,image_res.icon7);
    
        //////////////////////
        hButtonTool1=CreateToolButton(hWindow,50,WINDOW_HEIGHT-73,22,22);
        XBtn_SetIcon(hButtonTool1,image_res.icon9);
    
        hButtonTool2=CreateToolButton(hWindow,72,WINDOW_HEIGHT-73,22,22);
        XBtn_SetIcon(hButtonTool2,image_res.icon10);
    
        hButtonTool3=CreateToolButton(hWindow,94,WINDOW_HEIGHT-73,22,22);
        XBtn_SetIcon(hButtonTool3,image_res.icon11);
        /////////////////////////
        hButtonTool4=CreateToolButton(hWindow,50,WINDOW_HEIGHT-50,22,22);
        XBtn_SetIcon(hButtonTool4,image_res.icon15);
    
        hButtonTool5=CreateToolButton(hWindow,72,WINDOW_HEIGHT-50,22,22);
        XBtn_SetIcon(hButtonTool5,image_res.icon16);
    
        CreateToolSearchButton(hWindow);
    }
    
    void DemoCPlus::HandleCreateMainMenuButton( HWINDOW hWindow )
    {
        hButtonMainMenu=XBtn_Create(3,WINDOW_HEIGHT-68,42,42,NULL,hWindow);
        XEle_SetBkTransparent(hButtonMainMenu,true);
        XEle_EnableFocus(hButtonMainMenu,false);
        XBtn_SetImageLeave(hButtonMainMenu,image_res.mainMenu_leave);
        XBtn_SetImageStay(hButtonMainMenu,image_res.mainMenu_stay);
        XBtn_SetImageDown(hButtonMainMenu,image_res.mainMenu_stay);
    
        //隐藏左侧工具条面板按钮
        hButtonHidePane=XBtn_Create(1,WINDOW_HEIGHT-76,15,15,NULL,hWindow);
        XEle_SetBkTransparent(hButtonHidePane,true);
        XEle_EnableFocus(hButtonHidePane,false);
        XBtn_SetImageLeave(hButtonHidePane,image_res.hideleftpanel_leave);
        XBtn_SetImageStay(hButtonHidePane,image_res.hideleftpanel_stay);
        XBtn_SetImageDown(hButtonHidePane,image_res.hideleftpanel_stay);
    }
    
    HELE DemoCPlus::HandleCreateLeftPaneButton( HELE hPic,int x,int y,int cx,int cy )
    {
        HELE hButton=XBtn_Create(x,y,cx,cy,NULL,hPic);
        XEle_SetBkTransparent(hButton,true);
        XEle_EnableFocus(hButton,false);
    
        XBtn_SetImageLeave(hButton,image_res.tabLeft_leave);
        XBtn_SetImageStay(hButton,image_res.tabLeft_stay);
        XBtn_SetImageDown(hButton,image_res.tabLeft_down);
        XBtn_SetImageCheck(hButton,image_res.tabLeft_stay);
    
        return hButton;
    }
    
    void DemoCPlus::HandleCreateLeftPane( HWINDOW hWindow )
    {
        hLeftPane=XPic_Create(0,99,33,WINDOW_HEIGHT-99-55-22,hWindow);
        XPic_SetImage(hLeftPane,image_res.leftpane);
    
        HELE hButton=HandleCreateLeftPaneButton(hLeftPane,0,3,30,30);
        XBtn_SetIcon(hButton,image_res.tab1);
        hButton=HandleCreateLeftPaneButton(hLeftPane,0,33,30,30);
        XBtn_SetIcon(hButton,image_res.tab2);
        hButton=HandleCreateLeftPaneButton(hLeftPane,0,63,30,30);
        XBtn_SetIcon(hButton,image_res.tab3);
    }
    
    void DemoCPlus::HandleCreateMainTab( HWINDOW hWindow )
    {
        hTabBar=XTabBar_Create(33,99,WINDOW_WIDTH-6-33,30,hWindow);
        XEle_SetBkColor(hTabBar,RGB(255,0,0));
        XTabBar_AddLabel(hTabBar,L"");
        XTabBar_AddLabel(hTabBar,L"");
        XTabBar_AddLabel(hTabBar,L"");
        XTabBar_EnableTile(hTabBar,true);
        /////////////////////////////////////
        HELE hButton=XTabBar_GetLabel(hTabBar,0);
        XEle_EnableFocus(hButton,false);
        XBtn_SetIcon(hButton,image_res.talktbico1);
    
        XBtn_SetImageLeave(hButton,image_res.talkLabel_leave);
        XBtn_SetImageStay(hButton,image_res.talkLabel_stay);
        XBtn_SetImageDown(hButton,image_res.talkLabel_down);
        XBtn_SetImageCheck(hButton,image_res.talkLabel_down);
    
        ///////////////////////////////
        hButton=XTabBar_GetLabel(hTabBar,1);
        XEle_EnableFocus(hButton,false);
        XBtn_SetIcon(hButton,image_res.talktbico2);
    
        XBtn_SetImageLeave(hButton,image_res.talkLabel_leave);
        XBtn_SetImageStay(hButton,image_res.talkLabel_stay);
        XBtn_SetImageDown(hButton,image_res.talkLabel_down);
        XBtn_SetImageCheck(hButton,image_res.talkLabel_down);
        /////////////////////////////////
        hButton=XTabBar_GetLabel(hTabBar,2);
        XEle_EnableFocus(hButton,false);
        XBtn_SetIcon(hButton,image_res.talktbico3);
    
        XBtn_SetImageLeave(hButton,image_res.talkLabel_leave);
        XBtn_SetImageStay(hButton,image_res.talkLabel_stay);
        XBtn_SetImageDown(hButton,image_res.talkLabel_down);
        XBtn_SetImageCheck(hButton,image_res.talkLabel_down);
    
        //好友列表
        hTree=XTree_Create(33,129,WINDOW_WIDTH-6-33,WINDOW_HEIGHT-130-55-22,hWindow);
        XTabBar_SetBindEle(hTabBar,0,hTree);
        XSView_SetSpacing(hTree,0,0,0,0);
        XTree_EnableLine(hTree,false);
        XTree_EnableButton(hTree,false);
        XTree_SetIndentation(hTree,0);
        XTree_SetItemHeight(hTree,28);
        XTree_SetSpacingLeft(hTree,10);
    
        HXCGUI hImageList1=XImageList_Create(11,6);
        XImageList_AddImage(hImageList1,image_res.imp_shrink);
        XImageList_AddImage(hImageList1,image_res.imp_expand);
    
        XImageList_AddImage(hImageList1,image_res.imp_icon_1);
        XImageList_AddImage(hImageList1,image_res.imp_icon_2);
        XImageList_AddImage(hImageList1,image_res.imp_icon_3);
        XImageList_AddImage(hImageList1,image_res.imp_icon_4);
        XImageList_AddImage(hImageList1,image_res.imp_icon_5);
        XImageList_AddImage(hImageList1,image_res.imp_icon_6);
    
        XTree_SetImageList(hTree,hImageList1);
        group1=XTree_InsertItem(hTree,L"我的好友[6/9]",XTREE_ROOT,1);
        group2=XTree_InsertItem(hTree,L"同事[6/10]",XTREE_ROOT,1);
    
        XTree_InsertItem(hTree,L"梦飞",group1,3);
        wchar_t name[100]={0};
        for(int i=0;i<8;i++)
        {
            swprintf(name,L"炫彩好友-%d",i);
            XTree_InsertItem(hTree,name,group1, i%6+2);
        }
    
        for(int i=0;i<10;i++)
        {
            swprintf(name,L"炫彩好友-%d",i);
            XTree_InsertItem(hTree,name,group2, i%6+2);
        }
    
        HELE hScrollBar=XSView_GetVScrollBar(hTree);
        XSBar_SetImageLeaveSlider(hScrollBar,image_res.scroll_thumb_leave);
        XSBar_SetImageStaySlider(hScrollBar,image_res.scroll_thumb_leave);
        XSBar_SetImageDownSlider(hScrollBar,image_res.scroll_thumb_down);
    
        XSBar_SetImageLeaveUp(hScrollBar,image_res.scroll_up_leave);
        XSBar_SetImageStayUp(hScrollBar,image_res.scroll_up_leave);
        XSBar_SetImageDownUp(hScrollBar,image_res.scroll_up_down);
    
        XSBar_SetImageLeaveDown(hScrollBar,image_res.scroll_down_leave);
        XSBar_SetImageStayDown(hScrollBar,image_res.scroll_down_leave);
        XSBar_SetImageDownDown(hScrollBar,image_res.scroll_down_down);
    
        XCGUI_RegEleMessage(hTree,XM_MOUSEDBCLICK,&DemoCPlus::OnFriendsLButtonUp);
    
        XCGUI_RegEleMessage(hTree,XM_RBUTTONDOWN,&DemoCPlus::EleRButtonDown);
    }
    
    bool DemoCPlus::OnWndNCEndDrawWindow( HWINDOW hWindow,HDC hdc )
    {
        XDraw_HImage(hdc,image_res.hImageLogo,8,3);
    
        SetBkMode(hdc,TRANSPARENT);
        TextOut(hdc,100,28,L"炫彩界面库",5);
    
        return false;
    }
    
    bool DemoCPlus::OnWndSize( HWINDOW hWindow,UINT flags,SIZE *pSize )
    {
        RECT rc={pSize->cx-38-10,10,pSize->cx-10,38};
        XEle_SetRect(hWeather,&rc);
    
        rc.left=60;
        rc.top=25;
        rc.right=pSize->cx-60;
        rc.bottom=45;
        XEle_SetRect(hUserSign,&rc);
    
        rc.left=pSize->cx-10-22;
        rc.top=52;
        rc.right=rc.left+22;
        rc.bottom=rc.top+20;
        XEle_SetRect(hButtonSkin,&rc);
    
        rc.left=pSize->cx-10-22-22;
        rc.top=52;
        rc.right=rc.left+22;
        rc.bottom=rc.top+20;
        XEle_SetRect(hButtonMsg,&rc);
    
        rc.left=33;
        rc.top=99;
        rc.right=pSize->cx-6;
        rc.bottom=rc.top+30;
        XEle_SetRect(hTabBar,&rc);
    
        rc.left=33;
        rc.top=129;
        rc.right=pSize->cx-6;
        rc.bottom=pSize->cy-56-22;
        XEle_SetRect(hTree,&rc);
    
        rc.left=1;
        rc.top=pSize->cy-76;
        rc.right=rc.left+15;
        rc.bottom=rc.top+15;
        XEle_SetRect(hButtonHidePane,&rc);
    
        rc.left=3;
        rc.top=pSize->cy-68;
        rc.right=rc.left+42;
        rc.bottom=rc.top+42;
        XEle_SetRect(hButtonMainMenu,&rc);
    
        rc.left=50;
        rc.top=pSize->cy-73;
        rc.right=rc.left+22;
        rc.bottom=rc.top+22;
        XEle_SetRect(hButtonTool1,&rc);
    
        rc.left=72;
        rc.top=pSize->cy-73;
        rc.right=rc.left+22;
        rc.bottom=rc.top+22;
        XEle_SetRect(hButtonTool2,&rc);
    
        rc.left=94;
        rc.top=pSize->cy-73;
        rc.right=rc.left+22;
        rc.bottom=rc.top+22;
        XEle_SetRect(hButtonTool3,&rc);
    
        rc.left=50;
        rc.top=pSize->cy-50;
        rc.right=rc.left+22;
        rc.bottom=rc.top+22;
        XEle_SetRect(hButtonTool4,&rc);
    
        rc.left=72;
        rc.top=pSize->cy-50;
        rc.right=rc.left+22;
        rc.bottom=rc.top+22;
        XEle_SetRect(hButtonTool5,&rc);
    
        rc.left=94;
        rc.top=pSize->cy-50;
        rc.right=rc.left+60;
        rc.bottom=rc.top+22;
        XEle_SetRect(hButtonTool6,&rc);
    
        rc.left=0;
        rc.top=99;
        rc.right=33;
        rc.bottom=pSize->cy-55-22;
        XEle_SetRect(hLeftPane,&rc);
    
        rc.left=1;
        rc.top=73;
        rc.right=pSize->cx-8;
        rc.bottom=rc.top+26;
        XEle_SetRect(hSearchEdit,&rc);
        return false;
    }
    
    bool DemoCPlus::OnWndDestroy( HWINDOW hWindow )
    {
        if(image_res.hImageLogo)
            XImage_Destroy(image_res.hImageLogo);
        return false;
    }
    
    bool DemoCPlus::OnFriendsLButtonUp( HELE hEle, POINT *pPt )
    {
        int id=XTree_HitTest(hEle,pPt);
        if(group1==id || group2==id)
        {
            if(XTree_IsExpand(hEle,id))
            {
                XTree_SetItemImage(hTree,id,0);
                XTree_Expand(hEle,id,false);
            }
            else
            {
                XTree_SetItemImage(hTree,id,1);
                XTree_Expand(hEle,id,true);
            }
        }
        else
        {
            wchar_t* lpText = XTree_GetItemText(hTree,id);
            MessageBox(0,lpText,0,0);
        }
        return false;
    }
    
    void DemoCPlus::CreateWnd()
    {
        int style=XC_SY_DEFAULT&~XC_SY_DRAW_CAPTION_ICON;
        style&=~XC_SY_DRAW_CAPTION_TITLE;
        //创建窗口
        hWindow = XWnd_CreateWindow(0,0,WINDOW_WIDTH,WINDOW_HEIGHT,L"炫彩界面库-窗口",NULL,style);
        XWnd_EnableDragWindow(hWindow,true);
        XWnd_SetBorderSize(hWindow,3,3,3,3);
        XWnd_SetRoundSize(hWindow,9);
        XWnd_SetCaptionHeight(hWindow,22);
        XWnd_SetMinWidth(hWindow,250);
        XWnd_SetMinHeight(hWindow,300);
    
        XWnd_EnableBorderStrokeInner(hWindow,false);
        XWnd_EnableBorderStrokeOuter(hWindow,false);
    
        LoadImageRes(); //加载图片资源
    
        //窗口背景图片
        XWnd_SetImageNC(hWindow,image_res.image_bk);
    
        //关闭按钮
        HELE hClose=XWnd_GetButtonClose(hWindow);
        HandleButton_Close(hClose);
    
        //最大化按钮
        HELE hMax=XWnd_GetButtonMax(hWindow);
        HandleButton_Max(hMax);
    
        //最小化按钮
        HELE hMin=XWnd_GetButtonMin(hWindow);
        HandleButton_Min(hMin);
    
        //天气
        CreateWeatherButton(hWindow);
    
        //头像
        HELE hFace=XBtn_Create(10,0,48,48,NULL,hWindow);
        XBtn_EnableCursorHand(hFace,true);
        HandleButton_Face(hFace);
    
        //状态
        HELE hUserState=XBtn_Create(60,0,32,22,NULL,hWindow);
        HandleButton_UserState(hUserState);
    
        //签名
        hUserSign=XBtn_Create(60,25,WINDOW_WIDTH-60-62,20,L"签名:www.xcgui.com",hWindow);
        HandleButton_UserSign(hUserSign);
    
        //搜索框
        hSearchEdit=XEdit_Create(1,73,WINDOW_WIDTH-8,26,hWindow);
        HandleEdit_Search(hSearchEdit);
    
        //创建工具按钮
        HandleCreateToolButton(hWindow);
    
        //主菜单按钮
        HandleCreateMainMenuButton(hWindow);
    
        //创建左边工具面板
        HandleCreateLeftPane(hWindow);
    
        //tab页
        HandleCreateMainTab(hWindow);
    
        hMenu = CreatePlayerCombox();
    
        XWnd_Adjust(hWindow);
    
        //XCGUI_RegWndNCMessage(hWindow,XWM_NCENDPAINT,&DemoCPlus::OnWndNCEndDrawWindow);
        //XCGUI_RegWndMessage(hWindow,WM_SIZE,&DemoCPlus::OnWndSize);
        //XCGUI_RegWndMessage(hWindow,WM_DESTROY,&DemoCPlus::OnWndDestroy);
    
        XCGUI_RegWndMessage(hWindow, XWM_MENUSELECT, &DemoCPlus::My_MenuSelect);
        
        XWnd_ShowWindow(hWindow,SW_SHOW);
    }
    
    bool DemoCPlus::EleRButtonDown( HELE hEle,UINT flags,POINT *pPt )
    {
        int id = XTree_HitTest(hEle,pPt);
    
        if(group1!= id && group2 != id)
        {
             POINT pt=*pPt;
             RECT rc;
             XListBox_GetItemRect(hEle,1,&rc);
    
            XEle_PointToNCWnd(hEle,&pt);
    
            HWINDOW hWindow = XEle_GetHWindow(hEle);
            ClientToScreen(XWnd_GetHWnd(hWindow),&pt);
    
            m_CurFriID = id;
    
            XMenu_Popup(hMenu,XWnd_GetHWnd(hWindow),pt.x,pt.y);
        }
        return false;
    }
    
    HMENUX DemoCPlus::CreatePlayerCombox()
    {
        HMENUX hMenu = XMenu_Create();
        XMenu_AddItem(hMenu,201,L"添加");
        XMenu_AddItem(hMenu,202,L"重命名");
        XMenu_AddItem(hMenu,203,L"删除");
        XMenu_SetAutoDestroy(hMenu, false);
        return hMenu;
    }
    
    BOOL DemoCPlus::My_MenuSelect( HWINDOW hWindow,int id )
    {
        wchar_t lID[10];
        wsprintf(lID, L"item%d",id);
        
        if (201 == id)
        {
            wchar_t* lpCurPlayer = XTree_GetItemText(hTree,m_CurFriID);
            if(NULL != lpCurPlayer)
            {
                XTree_InsertItem(hTree,lpCurPlayer,group2);
            }
        }
    
        return false;
    }
    
    int APIENTRY _tWinMain(HINSTANCE hInstance,  HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
    {
        XInitXCGUI();
    
        DemoCPlus lDemo;
        lDemo.CreateWnd();
    
        XRunXCGUI();
        return 0;
    }
    View Code

    里面用了调试预先知道的结果,如何智能判断弹窗ID是下一步需要解决的问题!

    不过已经能向指定地方加好友啦!多么好玩啊!

  • 相关阅读:
    任意进制间的转换
    判断线段相交 hdu 1086
    大数(高精度)加减乘除取模运算
    sqlserver2008透明书库加密
    数据库质疑
    sql2005 和sql2008 同时安装
    editrules
    sqlserver 表值函数
    sqlserver释放内存
    sql2008查看备份进度
  • 原文地址:https://www.cnblogs.com/xiangshancuizhu/p/3266691.html
Copyright © 2011-2022 走看看