如何有效地使用对话框

2016-01-29 11:52 16 1 收藏

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

【 tulaoshi.com - C语言心得技巧 】

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

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

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

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com) 在 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
                        

来源:http://www.tulaoshi.com/n/20160129/1483687.html

延伸阅读
Director中非常有用的一个Xtra是MUI Dialog Xtra,这是D自代的对话框生成器。在6.0版本中就有这个Xtra了,但是很奇怪大多开发者都只应用了它最基本的特性,如果他们能否充分利用MUI Xtra的话,那么,你就可以自己定义个完全响应的对话框,而不是去用很废内存和磁盘空间的MIAW来实现。你可以去任意定制它,并且你可以完全根据你或者你的客...
标签: windows 操作系统
用户在Windows下与打开文件对话框打交道的次数一定不少,我们在一些软件的使用过程中,免不了要使用Windows的标准打开对话框来打开文件。但是,我们在使用Windows 2000打开文件对话框是还有一些小小的技巧,充分地利用这些小技巧,能够提高我们使用计算机的效率,同时还可以达到一些意想不到的功能。 1、快速加入特定的文件 ...
自绘对话框 作者:Alon 下载示例源代码 闲来无事,写了一个简单的对话框界面,希望给需要的朋友有所帮助。 界面如下: 界面很单调,我只是想说明一下如何实现界面的自绘。如果有需要,也可以绘制更复杂漂亮的界面。 程序的实现也不复杂,接下来就跟着我一步一步做。...
获取静态控件文本的方法:GetDlgItem函数获得对话框中控件的指针,然后调用GetWindowText获得文本。注意:静态控件的属性必须将Notify选为可能。同理:SetWindowText可以指定文本。 获取编辑框内容:GetDlgItem(ID)-GetWindowText(); 字符内容转换为数值:atoi()把字符串转换为数值;同理:数字到字符串itoa(); GetDlgItemText(ID)可以完成...
标签: autocad教程
在执行AutoCAD命令的过程中,用户与AutoCAD之间主要是通过文本窗口和对话框来进行人机交互。 2.3.1 使用文本窗口 AutoCAD的文本窗口与AutoCAD窗口相对独立,用户可通过如下方式来显示该窗口: (1) 在AutoCAD中按F2键 (2) 选择菜单【View(视图)】→【Display(显示)】→【Text Window(文本窗口)】 (3) 在命令...

经验教程

747

收藏

19
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部