炫彩界面库论坛

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 2237|回复: 0

[建议] 建议再加强下MessageBox 宽高根据内容自动调整,还有图标

[复制链接]
  • TA的每日心情
    郁闷
    2023-6-14 10:06
  • 发表于 2017-5-27 23:02:23 | 显示全部楼层 |阅读模式
    1. #include "stdafx.h"
    2. #include "Resource.h"
    3. #include "XMessageBox.h"
    4. #include "API.h"

    5. CXMessageBox::CXMessageBox()
    6. {

    7. }
    8. CXMessageBox::~CXMessageBox()
    9. {

    10. }
    11. BOOL CXMessageBox::Create(CString sMsg, CString sTitle, UINT nType, HWND hWnd)
    12. {
    13.         int Width = 320, Height = 180;
    14.         hWindow = XModalWnd_Create(Width, Height, sTitle, hWnd);
    15.         if (!hWindow)
    16.         {
    17.                 //创建失败返回
    18.                 return FALSE;
    19.         }
    20.         XWnd_SetLayoutSize(hWindow, 2, 24, 2, 2);
    21.         XWnd_SetDragBorderSize(hWindow, 0, 0, 0, 0);


    22.         HBKM hBkm = XWnd_GetBkManager(hWindow);
    23.         COLORREF bCor = RGB(104, 33, 122);
    24.         XBkM_AddBorder(hBkm, window_state_flag_leave, RGB(0, 0, 0), 191, 1);
    25.         X::XSTxtC(S_CTRL, 0, Width - H_BTN, H_TITLE, sTitle, hWindow, Txt_Type_LC);

    26.         int iLeft = Width - H_BTN_L - S_CTRL;
    27.         int iTop = S_CTRL;
    28.         X::XBtnC(iLeft, iTop, _T(""), hWindow, Btn_Type_Cls);

    29.         iLeft = S_CTRL;
    30.         iTop = H_TITLE + S_CTRL;
    31.         X::XSTxtC(iLeft, iTop, Width - S_CTRL * 2, Height - H_TITLE - H_BTN - S_CTRL * 4, sMsg, hWindow, Txt_Type_CC);
    32.         /*
    33.         按钮参数                        含义
    34.         MB_OK                                默认值。有一个确认按钮在里面。
    35.         MB_YESNO                        有是和否在里面。
    36.         MB_ABORTRETRYIGNORE        有Abort(放弃),Retry(重试)和Ignore(跳过)
    37.         MB_YESNOCANCEL                消息框含有三个按钮:Yes,No和Cancel
    38.         MB_RETRYCANCEL                有Retry(重试)和Cancel(取消)
    39.         MB_OKCANCEL                        消息框含有两个按钮:OK和Cancel
    40.         */
    41.         iTop = Height - H_BTN - S_CTRL*2;
    42.         iLeft = Width - W_BTN - S_CTRL*2;
    43.         switch (nType)
    44.         {
    45.         case MB_OK:
    46.         {
    47.                 XEle_RegEventCPP(X::XBtnC(iLeft, iTop, _T("确定"), hWindow, Btn_Type_Btn), XE_BNCLICK, &CXMessageBox::OnBtnClick_OK);
    48.         }        break;
    49.         case MB_YESNO:
    50.         {
    51.                 XEle_RegEventCPP(X::XBtnC(iLeft, iTop, _T("否"), hWindow, Btn_Type_Btn), XE_BNCLICK, &CXMessageBox::OnBtnClick_No);
    52.                 iLeft -= W_BTN + S_CTRL;
    53.                 XEle_RegEventCPP(X::XBtnC(iLeft, iTop, _T("是"), hWindow, Btn_Type_Btn), XE_BNCLICK, &CXMessageBox::OnBtnClick_Yes);
    54.         }        break;
    55.         case MB_ABORTRETRYIGNORE:
    56.         {
    57.                 XEle_RegEventCPP(X::XBtnC(iLeft, iTop, _T("跳过"), hWindow, Btn_Type_Btn), XE_BNCLICK, &CXMessageBox::OnBtnClick_Ignore);
    58.                 iLeft -= W_BTN + S_CTRL;
    59.                 XEle_RegEventCPP(X::XBtnC(iLeft, iTop, _T("重试"), hWindow, Btn_Type_Btn), XE_BNCLICK, &CXMessageBox::OnBtnClick_Retry);
    60.                 iLeft -= W_BTN + S_CTRL;
    61.                 XEle_RegEventCPP(X::XBtnC(iLeft, iTop, _T("放弃"), hWindow, Btn_Type_Btn), XE_BNCLICK, &CXMessageBox::OnBtnClick_Abort);
    62.         }        break;
    63.         case MB_YESNOCANCEL:
    64.         {
    65.                 XEle_RegEventCPP(X::XBtnC(iLeft, iTop, _T("取消"), hWindow, Btn_Type_Btn), XE_BNCLICK, &CXMessageBox::OnBtnClick_Cancel);
    66.                 iLeft -= W_BTN + S_CTRL;
    67.                 XEle_RegEventCPP(X::XBtnC(iLeft, iTop, _T("否"), hWindow, Btn_Type_Btn), XE_BNCLICK, &CXMessageBox::OnBtnClick_No);
    68.                 iLeft -= W_BTN + S_CTRL;
    69.                 XEle_RegEventCPP(X::XBtnC(iLeft, iTop, _T("是"), hWindow, Btn_Type_Btn), XE_BNCLICK, &CXMessageBox::OnBtnClick_Yes);

    70.         }        break;
    71.         case MB_RETRYCANCEL:
    72.         {
    73.                 XEle_RegEventCPP(X::XBtnC(iLeft, iTop, _T("取消"), hWindow, Btn_Type_Btn), XE_BNCLICK, &CXMessageBox::OnBtnClick_Cancel);
    74.                 iLeft -= W_BTN + S_CTRL;
    75.                 XEle_RegEventCPP(X::XBtnC(iLeft, iTop, _T("重试"), hWindow, Btn_Type_Btn), XE_BNCLICK, &CXMessageBox::OnBtnClick_Retry);

    76.         }        break;
    77.         case MB_OKCANCEL:
    78.         {
    79.                 XEle_RegEventCPP(X::XBtnC(iLeft, iTop, _T("取消"), hWindow, Btn_Type_Btn), XE_BNCLICK, &CXMessageBox::OnBtnClick_Cancel);
    80.                 iLeft -= W_BTN + S_CTRL;
    81.                 XEle_RegEventCPP(X::XBtnC(iLeft, iTop, _T("确定"), hWindow, Btn_Type_Btn), XE_BNCLICK, &CXMessageBox::OnBtnClick_OK);

    82.         }        break;
    83.         default:
    84.         {
    85.                 XEle_RegEventCPP(X::XBtnC(iLeft, iTop, _T("确定"), hWindow, Btn_Type_Btn), XE_BNCLICK, &CXMessageBox::OnBtnClick_OK);

    86.         }
    87.                 break;
    88.         }






    89.         return TRUE;
    90. }

    91. int  CXMessageBox::Dialog()
    92. {
    93.         return XModalWnd_DoModal(hWindow);
    94. }

    95. int  CXMessageBox::OnBtnClick_OK(BOOL *pbHandled)
    96. {
    97.         XModalWnd_EndModal(hWindow, IDOK);
    98.         return 0;
    99. }
    100. int  CXMessageBox::OnBtnClick_Yes(BOOL *pbHandled)
    101. {
    102.         XModalWnd_EndModal(hWindow, IDYES);
    103.         return 0;
    104. }
    105. int  CXMessageBox::OnBtnClick_No(BOOL *pbHandled)
    106. {
    107.         XModalWnd_EndModal(hWindow,IDNO);
    108.         return 0;
    109. }
    110. int  CXMessageBox::OnBtnClick_Abort(BOOL *pbHandled)
    111. {
    112.         XModalWnd_EndModal(hWindow, IDABORT);
    113.         return 0;
    114. }
    115. int  CXMessageBox::OnBtnClick_Ignore(BOOL *pbHandled)
    116. {
    117.         XModalWnd_EndModal(hWindow, IDIGNORE);
    118.         return 0;
    119. }
    120. int  CXMessageBox::OnBtnClick_Retry(BOOL *pbHandled)
    121. {
    122.         XModalWnd_EndModal(hWindow, IDRETRY);
    123.         return 0;
    124. }
    125. int CXMessageBox::OnBtnClick_Cancel(BOOL *pbHandled)
    126. {
    127.         XModalWnd_EndModal(hWindow, IDCANCEL);
    128.         return 0;
    129. }
    复制代码


    评分

    参与人数 1炫彩币 +2 收起 理由
    dasemimi + 2 楼主这个好强大,居然分装了messagebox.

    查看全部评分

    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    QQ|Archiver|手机版|小黑屋|炫彩界面库 ( 鄂ICP备2023014763号-1 )

    GMT+8, 2024-4-26 13:35 , Processed in 0.074392 second(s), 21 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表