如何有效地使用对话框

夏颜lwj

夏颜lwj

2016-01-29 11:52

如何有效地使用对话框,如何有效地使用对话框

如何有效地使用对话框
译者:徐景周(原作:VGirish)

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/cyuyanjiaocheng/)

Q:如何在对话框中加入工具条

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/cyuyanjiaocheng/) 在 OnInitDialog 中加入下面代码:
BOOL CYourDlg::OnInitDialog(){       CDialog::OnInitDialog();       // Create the toolbar. To understand the meaning of the styles used, you        // can take a look at the MSDN for the Create function of the CToolBar class.          ToolBar.Create(this, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_TOOLTIPS |CBRS_FLYBY | CBRS_BORDER_BOTTOM);      // I have assumed that you have named your toolbar''s resource as IDR_TOOLBAR1.      // If you have given it a different name, change the line below to accomodate       // that by changing the parameter for the LoadToolBar function.        ToolBar.LoadToolBar(IDR_TOOLBAR1);        CRect rcClientStart;      CRect rcClientNow;      GetClientRect(rcClientStart);      // To reposition and resize the control bar     RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST,0, reposQuery, rcClientNow);     CPoint ptOffset(rcClientNow.left - rcClientStart.left,rcClientNow.top-rcClientStart.top);     CRect rcChild;     CWnd* pwndChild = GetWindow(GW_CHILD);     while (pwndChild)     {       pwndChild->GetWindowRect(rcChild);       ScreenToClient(rcChild);       rcChild.OffsetRect(ptOffset);       pwndChild->MoveWindow(rcChild, FALSE);       pwndChild = pwndChild->GetNextWindow();     }   CRect rcWindow;     GetWindowRect(rcWindow);     rcWindow.right += rcClientStart.Width() - rcClientNow.Width();     rcWindow.bottom += rcClientStart.Height() - rcClientNow.Height();     MoveWindow(rcWindow, FALSE);     // And position the control bars     RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0);       return TRUE;  // return TRUE  unless you set the focus to a control  }
Q:如何改变对话框的形状?

可用下面一些函数:
CreatePolygonRgn
CreateRectRgn
CreateRoundRectRgn 等.
  CRgn m_rgn;  // Put this in your dialog''s header file. i.e. a member variable  // This Gets the size of the Dialog: This piece of code is to be placed in the  // OnInitDialog Function of your dialog.  CRect rcDialog  GetClientRect(rcDialog);  // The following code Creates the area and assigns it to your Dialog  m_rgn.CreateEllipticRgn(0, 0, rcDialog.Width(), rcDialogHeight());  SetWindowRgn(GetSafeHwnd(), (HRGN) m_rgn, TRUE);
Q:如何实现非客户区移动?

可用下面二种方法
// Handler for WM_LBUTTONDOWN message  void CYourDialog::OnLButtonDown(UINT nFlags, CPoint point)  {     CDialog::OnLButtonDown(nFlags, point);     PostMessage( WM_NCLBUTTONDOWN, HTCAPTION, MAKELPARAM( point.x, point.y));  }  // Handler for WM_NCHITTEST message  LONG CYourDialog::OnNcHitTest( UINT uParam, LONG lParam )  {       int xPos = LOWORD(lParam);     int yPos = HIWORD(lParam);     UINT nHitTest = CDialog::OnNcHitTest(CSize(xPos, yPos));     return (nHitTest == HTCLIENT) ? HTCAPTION : nHitTest;  }

Q:如何使对话框初始为最小化状态?

在 OnInitDialog 中加入下面代码:
SendMessage(WM_SYSCOMMAND, SC_MAXIMIZE, NULL);
Q:如何限定对话框大小范围?

在 WM_SIZING中加入下面代码:
void CYourDialog::OnSizing(UINT fwSide, LPRECT pRect)   {     if(pRect->right - pRect->left <=200)     pRect->right = pRect->lef      
展开更多 50%)
分享

猜你喜欢

如何有效地使用对话框

C语言教程 C语言函数
如何有效地使用对话框

如何有效的使用对话框之二

C语言教程 C语言函数
如何有效的使用对话框之二

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

如何使用文件复制对话框

编程语言 网络编程
如何使用文件复制对话框

关于对话框

编程语言 网络编程
关于对话框

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

Excel“选项”对话框使用问答

办公软件
Excel“选项”对话框使用问答

折叠对话框

办公软件
折叠对话框

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

仿制金山毒霸专杀工具界面

仿制金山毒霸专杀工具界面

Pro/ E 参数化技术在冲压模CAD中的应用

Pro/ E 参数化技术在冲压模CAD中的应用
下拉加载更多内容 ↓