界面设计-自定义对话框

mac2024-03-17  25

步骤一:去掉对话框的边框,资源视图中更改对话框的边框属性为None

步骤二:实现对话框的移动

添加onlbutton消息并点击确定

 在OnLButton中添加如下代码:

::SendMessage(GetSafeHwnd(), WM_SYSCOMMAND, SC_MOVE + HTCAPTION, 0);

 设计各个部分的矩形框大小,在对话框的头文件中添加如下代码:

//self - 自定义对话框各个部分 #define SELF_WINDOW_HEIGHT 400 #define SELF_WINDOW_WIDTH 600 #define SELF_WINDOW_TITLE_HEIGHT 80 #define SELF_WINDOW_TITLE_WIDTH 600 #define SELF_BOARD_WIDTH 10 //endself

步骤3:添加消息:OnGetMaxMinInfo

 在消息函数中添加如下代码段:

//将窗口设置为不可改变的大小 void CCDesignWndBySelfDlg::OnGetMinMaxInfo(MINMAXINFO* lpMMI) { // TODO: 在此添加消息处理程序代码和/或调用默认值 //self-code lpMMI->ptMaxTrackSize.x = SELF_WINDOW_WIDTH; lpMMI->ptMaxTrackSize.y = SELF_WINDOW_HEIGHT; lpMMI->ptMinTrackSize.x = SELF_WINDOW_TITLE_WIDTH; lpMMI->ptMinTrackSize.y = SELF_WINDOW_HEIGHT; //end self-code CDialogEx::OnGetMinMaxInfo(lpMMI); }

步骤4:在Onpaint中添加如下代码:

void CCDesignWndBySelfDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // 用于绘制的设备上下文 SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0); // 使图标在工作区矩形中居中 int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); // 得到客户区大小 CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; // 绘制图标 dc.DrawIcon(x, y, m_hIcon); // //wjl-debug-MessageBox(L"isIconis()"); } else { //CDialogEx::OnPaint(); // //wjl-debug-MessageBox(L"isNotIconis()"); //将标题栏区域设置颜色为黑色 CPaintDC paintDC(this); CDC *pCDC = &paintDC; CRect titleRect; titleRect.top = 0; titleRect.left = 0; titleRect.bottom = SELF_WINDOW_TITLE_HEIGHT; titleRect.right = SELF_WINDOW_TITLE_WIDTH; // CBrush brush, *oldBrush; brush.CreateSolidBrush(RGB(50, 50, 50)); oldBrush = pCDC->SelectObject(&brush); pCDC->Rectangle(&titleRect); pCDC->SelectObject(oldBrush); ReleaseDC(pCDC); } }

最终的效果为:

最新回复(0)