2022年飞鸽源代码及编译全过程[归 .pdf

上传人:Q****o 文档编号:31706175 上传时间:2022-08-08 格式:PDF 页数:43 大小:270.85KB
返回 下载 相关 举报
2022年飞鸽源代码及编译全过程[归 .pdf_第1页
第1页 / 共43页
2022年飞鸽源代码及编译全过程[归 .pdf_第2页
第2页 / 共43页
点击查看更多>>
资源描述

《2022年飞鸽源代码及编译全过程[归 .pdf》由会员分享,可在线阅读,更多相关《2022年飞鸽源代码及编译全过程[归 .pdf(43页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、飞鸽源代码Visual C+ 以其可视化的编程风格成为目前Windows 程序设计与开发的主流开发工具。而对话框在Visual C+ 编程中使用的尤其多。诸如模式对话框、无模式对话框、基于对话框的应用程序等。绝大部分的VC+的书籍中都花费大量的篇幅与笔墨来讲解对话框,这充分证明了对话框在Windows 应用程序中的作用。很多人可能都用过Bitware 软件,不知大家还记不记得其界面对话框就可以伸展自如。按下一个按钮,对话框就向水平方向或垂直方向扩展。再按一下按钮,对话框又回复到原来的大小。其实这并不是一个很复杂的问题,下面我们就来讲解如何电动调节阀制作伸展自如的对话框。1 打开 VisualC

2、+ 工作台,新建工程设为aaa 。2 创建基于对话框的应用程序如下所示:其余选择皆为缺省即可。3 在对话框资源中增加控件资源,如下图所示:其中,最靠右边的一排控件和最靠近下面的两排控件将在对话框伸展或收缩时显示出来或被遮盖。并且为了示例方便,我们有意调节阀将他们的值对应起来。并且我们气动调节阀需要通过ClassWizard 给每个控件分别关联成员变量,如下所示:参考 DoDataExchange() 函数我们就可以知道每个控件所关联的变量了,如下所示:DDX_Text(pDX, IDC_HEIGHT, m_wHeight); DDX_Text(pDX, IDC_STREAM_ID, m_wSt

3、reamID); DDX_Text(pDX, IDC_WIDTH, m_wWidth); DDX_Text(pDX, IDC_SEQUENCE_ORDER, m_wSequenceOrder); DDX_Text(pDX, IDC_MAX_RATE, m_dwMaxRate); DDX_Text(pDX, IDC_MIN_RATE, m_dwMinRate); DDX_Text(pDX, IDC_HEIGHT2, m_wHeight2); DDX_Text(pDX, IDC_MAX_RATE2, m_dwMaxRate2); DDX_Text(pDX, IDC_MIN_RATE2, m_dwM

4、inRate2); DDX_Text(pDX, IDC_SEQUENCE_ORDER2, m_wSequenceOrder2); DDX_Text(pDX, IDC_STREAM_ID2, m_wStreamID2); DDX_Text(pDX, IDC_WIDTH2, m_wWidth2); DDX_Check(pDX, IDC_HORIZONTAL, m_bHorizontal); DDX_Check(pDX, IDC_VERTICAL, m_bVertical); 实际上,我们也可以不用ClassWizard 而直接将上面的一段代码copy 到DoDataExchange()函数的/AF

5、X_DATA_MAP(CAaaDlg) . /AFX_DATA_MAP 之间, (注意一定要在“/AFX_DATA_MAP(CAaaDlg) ”与“/AFX_DATA_MAP ”名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 43 页 - - - - - - - - - 之间 )。同时在 aaaDlg.h 文件中,在/AFX_DATA(CAaaDlg) enum IDD = IDD_AAA_DIALOG ; . /AFX_DATA 之间增加如下变量定义即可:(注意一定要在

6、 “ /AFX_DATA(CAaaDlg)”与“/AFX_DATA”之间 ) UINT m_wHeight; UINT m_wStreamID; UINT m_wWidth; UINT m_wSequenceOrder; DWORD m_dwMaxRate; DWORD m_dwMinRate; UINT m_wHeight2; DWORD m_dwMaxRate2; DWORD m_dwMinRate2; UINT m_wSequenceOrder2; UINT m_wStreamID2; UINT m_wWidth2; BOOL m_bHorizontal; BOOL m_bVertica

7、l; 5 在完成上面的步骤后,我们就可以定义几个新的变量用来保存窗口伸展状态时的信息以及收缩状态时的信息。如下:WORD m_wOrigrinWidth; /原始状态下的窗口宽度WORD m_wReducedWidth; / 收缩状态下的窗口宽度WORD m_wOrigrinHeight; /原始状态下的窗口高度WORD m_wReducedHeight; / 收缩状态下的窗口高度WORD m_screenWidth; / 屏幕宽度WORD m_screenHeight; / 屏幕高度在完成以上所有的步骤后,就可以对窗口的伸展与收缩进行随心所欲的控制了,电动球阀首先我们来侃侃具体的代码,下面再

8、进行具体的解释。代码为:CenterWindow(NULL); m_screenWidth = GetSystemMetrics(SM_CXSCREEN); m_screenHeight = GetSystemMetrics(SM_CYSCREEN); WINDOWPLACEMENT* lpwndpl=new WINDOWPLACEMENT; GetWindowPlacement(lpwndpl); m_wOrigrinWidth = lpwndpl-rcNormalPosition.right; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - -

9、 - - - - 名师精心整理 - - - - - - - 第 2 页,共 43 页 - - - - - - - - - m_wOrigrinWidth -= lpwndpl-rcNormalPosition.left; m_wOrigrinHeight = lpwndpl-rcNormalPosition.bottom; m_wOrigrinHeight -= lpwndpl-rcNormalPosition.top; LPRECT lpRect1,lpRect2; lpRect1=new RECT; lpRect2=new RECT; GetDlgItem(IDC_PROGRESS_BAR

10、)-GetWindowRect(lpRect1); GetDlgItem(IDC_STREAM_ID)-GetWindowRect(lpRect2); lpwndpl-rcNormalPosition.right=(lpRect1-right+lpRect2-left)/2; m_wReducedWidth = lpwndpl-rcNormalPosition.right; m_wReducedWidth -= lpwndpl-rcNormalPosition.left; GetDlgItem(IDC_PROGRESS_BAR)-GetWindowRect(lpRect1); GetDlgIt

11、em(IDC_SEQUENCE_ORDER2)-GetWindowRect(lpRect2); lpwndpl-rcNormalPosition.bottom=(lpRect1-bottom+lpRect2-top)/2; m_wReducedHeight = lpwndpl-rcNormalPosition.bottom; m_wReducedHeight -= lpwndpl-rcNormalPosition.top; delete lpRect1; delete lpRect2; if(m_bHorizontal = TRUE) lpwndpl-rcNormalPosition.righ

12、t = lpwndpl-rcNormalPosition.left; lpwndpl-rcNormalPosition.right += m_wOrigrinWidth; lpwndpl-rcNormalPosition.bottom = lpwndpl-rcNormalPosition.top; lpwndpl-rcNormalPosition.bottom += m_wReducedHeight; else lpwndpl-rcNormalPosition.right = lpwndpl-rcNormalPosition.left; lpwndpl-rcNormalPosition.rig

13、ht += m_wReducedWidth; lpwndpl-rcNormalPosition.bottom = lpwndpl-rcNormalPosition.top; lpwndpl-rcNormalPosition.bottom += m_wReducedHeight; if(m_bVertical = TRUE) lpwndpl-rcNormalPosition.right = lpwndpl-rcNormalPosition.left; lpwndpl-rcNormalPosition.right += m_wReducedWidth; 名师资料总结 - - -精品资料欢迎下载 -

14、 - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 43 页 - - - - - - - - - lpwndpl-rcNormalPosition.bottom = lpwndpl-rcNormalPosition.top; lpwndpl-rcNormalPosition.bottom += m_wOrigrinHeight; else lpwndpl-rcNormalPosition.right = lpwndpl-rcNormalPosition.left; lpwndpl-rcNormalPosition.ri

15、ght += m_wReducedWidth; lpwndpl-rcNormalPosition.bottom = lpwndpl-rcNormalPosition.top; lpwndpl-rcNormalPosition.bottom += m_wReducedHeight; SetWindowPlacement(lpwndpl); 上面这段代码首先将窗口置于屏幕中间,这可以通过函数CenterWindow (GetDesktopWindow() 来实现,函数CenterWindow() 的用法为:void CenterWindow( CWnd* pAlternateOwner = NUL

16、L ); 其中参数 pAlternateOwner 指向所想居中的窗口的指针。然电动蝶阀后利用函数GetSystemMetrics( int nIndex ) 得到系统当前设置如屏幕分辨率等。nIndexs= SM_CXSCREEN 时函数返回屏幕的宽度;返回值单位为像素点。nIndexs= SM_CYSCREEN 时函数返回屏幕的高度;返回值单位为像素点。函数 BOOL GetWindowPlacement( WINDOWPLACEMENT* lpwndpl ) 是最重要的。他的参数为一个指向结构变量WINDOWPLACEMENT的指针 (lpwndpl) ;其中WINDOWPLACEMEN

17、T结构变量数据结构具体为:typedef struct tagWINDOWPLACEMENT /* wndpl */ UINT length; UINT flags; UINT showCmd; POINT ptMinPosition; POINT ptMaxPosition; RECT rcNormalPosition; WINDOWPLACEMENT; 他包含了窗口在屏幕上的定位信息。其中成员变量的含义为:length:指结构变量的长度,单位字节。flags: 标志值,控制窗口最小化或窗口还原的方法,可以取如下值:WPF_SETMINPOSITION:指定窗口最小化时的x 位置和 y 位置

18、。WPF_RESTORETOMAXIMIZED:指定窗口以最大化方式还原,尽管可能窗口并不是在最大化时最小化的。不改变窗口的缺省还原方式。showCmd:指定窗口的当前显示状态。可以取值:SW_HIDE :隐藏窗口并激活另一窗口。SW_MINIMIZE:最小化指定窗口并激活系统窗口列表中最顶层窗口。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 43 页 - - - - - - - - - SW_RESTORE :激活并显示窗口,如果窗口处于最小化或最大化状态,则窗口还原

19、到原始大小和位置。SW_SHOW :以窗口的当前大小和位置激活并显示窗口。SW_SHOWMAXIMIZED:以最大化方式激活并显示窗口。SW_SHOWMINIMIZED:以图标方式激活并显示窗口。SW_SHOWMINNOACTIVE:以图标方式窗口。但不改变窗口的活动状态。SW_SHOWNA :以窗口的当前状态显示窗口。SW_SHOWNOACTIV ATE:以窗口最近一次的大小和位置显示窗口。但不改变窗口的活 动状态。SW_SHOWNORMAL:激活并显示窗口。如果窗口被最大化或最小化,则窗口还原到原始大小和位置。ptMinPosition :指定窗口最小化时的左伤角坐标。ptMaxPosit

20、ion :气动球阀指定窗口最大化时的左伤角坐标。rcNormalPosition :指定窗口在还原时的坐标。通过灵活使用函数GetWindowPlacement() 就可以得到窗口的配置信息。看到这,可能有些读者已经想到了GetWindowPlacement() 函数的姐妹函数SetWindowPlacement() ,不用多说,其用法如下:BOOL SetWindowPlacement( WINDOWPLACEMENT* lpwndpl );显然,通过函数SetWindowPlacement() ,再加以简单的计算,我们就可以来设置窗气动蝶阀口的位置、大小以及状态等,从而可以自如地控制窗口显

21、示与否以及窗口的大小、位置等。这里我们就不再多解释了。6 利用 ClassWizard 对控件 IDC_HORIZONTAL和 IDC_VERTICAL增加消息映射BB_CLICKED, 并分别在消息映射函数中增加如下代码如下:void CAaaDlg:OnHorizontal() / TODO: Add your control notification handler code here m_bHorizontal = !m_bHorizontal; UpdateData(FALSE); WINDOWPLACEMENT* lpwndpl=new WINDOWPLACEMENT; GetWi

22、ndowPlacement(lpwndpl); if(m_bHorizontal = TRUE) lpwndpl-rcNormalPosition.right = lpwndpl-rcNormalPosition.left; lpwndpl-rcNormalPosition.right += m_wOrigrinWidth; /* lpwndpl-rcNormalPosition.bottom = lpwndpl-rcNormalPosition.top; lpwndpl-rcNormalPosition.bottom += m_wReducedHeight; */ 名师资料总结 - - -精

23、品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 43 页 - - - - - - - - - else lpwndpl-rcNormalPosition.right = lpwndpl-rcNormalPosition.left; lpwndpl-rcNormalPosition.right += m_wReducedWidth; /* lpwndpl-rcNormalPosition.bottom = lpwndpl-rcNormalPosition.top; lpwndpl-rcNormalP

24、osition.bottom += m_wReducedHeight; */ SetWindowPlacement(lpwndpl); delete lpwndpl; void CAaaDlg:OnVertical() / TODO: Add your control notification handler code here m_bVertical = !m_bVertical; UpdateData(FALSE); WINDOWPLACEMENT* lpwndpl=new WINDOWPLACEMENT; GetWindowPlacement(lpwndpl); if(m_bVertic

25、al = TRUE) lpwndpl-rcNormalPosition.bottom = lpwndpl-rcNormalPosition.top; lpwndpl-rcNormalPosition.bottom += m_wOrigrinHeight; else lpwndpl-rcNormalPosition.bottom = lpwndpl-rcNormalPosition.top; lpwndpl-rcNormalPosition.bottom += m_wReducedHeight; SetWindowPlacement(lpwndpl); delete lpwndpl; 7 最后利

26、用 ClassWizard 对控件 IDC_BEGIN_SIMULATE增加消息映射BB_CLICKED 。在这里气动隔膜泵我们模拟了一个100 次循环的随机数显示程序。具体大妈如下:void CAaaDlg:OnBeginSimulate() / TODO: Add your control notification handler code here 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 43 页 - - - - - - - - - srand(unsign

27、ed)time(NULL); char temp10; SetDlgItemText(IDC_STATIC11,Now Beginning .); for(int i=0;i m_pProgressCtrl-SetPos(i); m_wSequenceOrder = m_wSequenceOrder2 = i; m_wStreamID = m_wStreamID2 = rand(); m_wHeight = m_wHeight2 = rand(); m_wWidth = m_wWidth2 = rand(); m_dwMaxRate = m_dwMaxRate2 = rand(); m_dwM

28、inRate = m_dwMinRate2 = rand(); switch(i%4) case 0: sprintf(temp, 欢 迎 使 用); break; case 1: sprintf(temp, 迎 使 用 欢); break; case 2: sprintf(temp, 使 用 欢 迎); break; case 3: sprintf(temp, 用 欢 迎 使); break; SetDlgItemText(IDC_WELCOME,temp); UpdateData(FALSE); UpdateWindow(); Sleep(50); SetDlgItemText(IDC_W

29、ELCOME,欢 迎 使 用); SetDlgItemText(IDC_STATIC11,Now Finnished .); 8 完成以上所有的步骤之后,我们就可以编译程序并运行。运行结果如下:(a) (b) (a): 程序启动时对话框状态(b): 点击 Horizontal 框后对话框状态。(c) (d) (c): 点击 Vertical 框后对话框状态。(d): 点击 BeginSimulating 按钮后系统模拟运行对话框状态。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7

30、 页,共 43 页 - - - - - - - - - 在本程序中,我们还用到了一些其它的技巧如修改窗口标题,进程状态条的显示、动态字符串显示以及不通过ClassWizard 而气动阀门直接通过在.cpp 和.h 文件中增加代码的方法来关电动阀门联控件与成员变量和消息映射等,这些都是一些很实用的技巧,读者可以参考上面的代码以及源程序细细体会,这里我们就不多说了。程序源工程文件见aaa.zip。在 VisualC+6.0 下编译通过。zwc1009 2007-09-19 16:25 Visual C+ 以其可视化的编程风格成为目前Windows 程序设计与开发的主流开发工具。而对话框在Visua

31、l C+ 编程中使用的尤其多。诸如模式对话框、无模式对话框、基于对话框的应用程序等。绝大部分的VC+的书籍中都花费大量的篇幅与笔墨来讲解对话框,这充分证明了对话框在Windows 应用程序中的作用。很多人可能都用过Bitware 软件,不知大家还记不记得其界面对话框就可以伸展自如。按下一个按钮,对话框就向水平方向或垂直方向扩展。再按一下按钮,对话框又回复到原来的大小。其实这并不是一个很复杂的问题,下面我们就来讲解如何电动调节阀制作伸展自如的对话框。1 打开 VisualC+ 工作台,新建工程设为aaa 。2 创建基于对话框的应用程序如下所示:其余选择皆为缺省即可。3 在对话框资源中增加控件资源

32、,如下图所示:其中,最靠右边的一排控件和最靠近下面的两排控件将在对话框伸展或收缩时显示出来或被遮盖。并且为了示例方便,我们有意调节阀将他们的值对应起来。并且我们气动调节阀需要通过ClassWizard 给每个控件分别关联成员变量,如下所示:参考 DoDataExchange() 函数我们就可以知道每个控件所关联的变量了,如下所示:DDX_Text(pDX, IDC_HEIGHT, m_wHeight); DDX_Text(pDX, IDC_STREAM_ID, m_wStreamID); DDX_Text(pDX, IDC_WIDTH, m_wWidth); DDX_Text(pDX, IDC

33、_SEQUENCE_ORDER, m_wSequenceOrder); DDX_Text(pDX, IDC_MAX_RATE, m_dwMaxRate); DDX_Text(pDX, IDC_MIN_RATE, m_dwMinRate); DDX_Text(pDX, IDC_HEIGHT2, m_wHeight2); DDX_Text(pDX, IDC_MAX_RATE2, m_dwMaxRate2); DDX_Text(pDX, IDC_MIN_RATE2, m_dwMinRate2); DDX_Text(pDX, IDC_SEQUENCE_ORDER2, m_wSequenceOrder2

34、); DDX_Text(pDX, IDC_STREAM_ID2, m_wStreamID2); DDX_Text(pDX, IDC_WIDTH2, m_wWidth2); DDX_Check(pDX, IDC_HORIZONTAL, m_bHorizontal); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 43 页 - - - - - - - - - DDX_Check(pDX, IDC_VERTICAL, m_bVertical); 实际上,我们也可以不用Clas

35、sWizard 而直接将上面的一段代码copy 到DoDataExchange()函数的/AFX_DATA_MAP(CAaaDlg) . /AFX_DATA_MAP 之间, (注意一定要在“/AFX_DATA_MAP(CAaaDlg) ”与“/AFX_DATA_MAP ”之间 )。同时在 aaaDlg.h 文件中,在/AFX_DATA(CAaaDlg) enum IDD = IDD_AAA_DIALOG ; . /AFX_DATA 之间增加如下变量定义即可:(注意一定要在 “ /AFX_DATA(CAaaDlg)”与“/AFX_DATA”之间 ) UINT m_wHeight; UINT m_

36、wStreamID; UINT m_wWidth; UINT m_wSequenceOrder; DWORD m_dwMaxRate; DWORD m_dwMinRate; UINT m_wHeight2; DWORD m_dwMaxRate2; DWORD m_dwMinRate2; UINT m_wSequenceOrder2; UINT m_wStreamID2; UINT m_wWidth2; BOOL m_bHorizontal; BOOL m_bVertical; 5 在完成上面的步骤后,我们就可以定义几个新的变量用来保存窗口伸展状态时的信息以及收缩状态时的信息。如下:WORD m

37、_wOrigrinWidth; /原始状态下的窗口宽度WORD m_wReducedWidth; / 收缩状态下的窗口宽度WORD m_wOrigrinHeight; /原始状态下的窗口高度WORD m_wReducedHeight; / 收缩状态下的窗口高度WORD m_screenWidth; / 屏幕宽度WORD m_screenHeight; / 屏幕高度在完成以上所有的步骤后,就可以对窗口的伸展与收缩进行随心所欲的控制了,电动球阀首先我们来侃侃具体的代码,下面再进行具体的解释。代码为:CenterWindow(NULL); 名师资料总结 - - -精品资料欢迎下载 - - - - -

38、 - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 43 页 - - - - - - - - - m_screenWidth = GetSystemMetrics(SM_CXSCREEN); m_screenHeight = GetSystemMetrics(SM_CYSCREEN); WINDOWPLACEMENT* lpwndpl=new WINDOWPLACEMENT; GetWindowPlacement(lpwndpl); m_wOrigrinWidth = lpwndpl-rcNormalPosition.right; m

39、_wOrigrinWidth -= lpwndpl-rcNormalPosition.left; m_wOrigrinHeight = lpwndpl-rcNormalPosition.bottom; m_wOrigrinHeight -= lpwndpl-rcNormalPosition.top; LPRECT lpRect1,lpRect2; lpRect1=new RECT; lpRect2=new RECT; GetDlgItem(IDC_PROGRESS_BAR)-GetWindowRect(lpRect1); GetDlgItem(IDC_STREAM_ID)-GetWindowR

40、ect(lpRect2); lpwndpl-rcNormalPosition.right=(lpRect1-right+lpRect2-left)/2; m_wReducedWidth = lpwndpl-rcNormalPosition.right; m_wReducedWidth -= lpwndpl-rcNormalPosition.left; GetDlgItem(IDC_PROGRESS_BAR)-GetWindowRect(lpRect1); GetDlgItem(IDC_SEQUENCE_ORDER2)-GetWindowRect(lpRect2); lpwndpl-rcNorm

41、alPosition.bottom=(lpRect1-bottom+lpRect2-top)/2; m_wReducedHeight = lpwndpl-rcNormalPosition.bottom; m_wReducedHeight -= lpwndpl-rcNormalPosition.top; delete lpRect1; delete lpRect2; if(m_bHorizontal = TRUE) lpwndpl-rcNormalPosition.right = lpwndpl-rcNormalPosition.left; lpwndpl-rcNormalPosition.ri

42、ght += m_wOrigrinWidth; lpwndpl-rcNormalPosition.bottom = lpwndpl-rcNormalPosition.top; lpwndpl-rcNormalPosition.bottom += m_wReducedHeight; else lpwndpl-rcNormalPosition.right = lpwndpl-rcNormalPosition.left; lpwndpl-rcNormalPosition.right += m_wReducedWidth; lpwndpl-rcNormalPosition.bottom = lpwnd

43、pl-rcNormalPosition.top; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 43 页 - - - - - - - - - lpwndpl-rcNormalPosition.bottom += m_wReducedHeight; if(m_bVertical = TRUE) lpwndpl-rcNormalPosition.right = lpwndpl-rcNormalPosition.left; lpwndpl-rcNormalPosition.

44、right += m_wReducedWidth; lpwndpl-rcNormalPosition.bottom = lpwndpl-rcNormalPosition.top; lpwndpl-rcNormalPosition.bottom += m_wOrigrinHeight; else lpwndpl-rcNormalPosition.right = lpwndpl-rcNormalPosition.left; lpwndpl-rcNormalPosition.right += m_wReducedWidth; lpwndpl-rcNormalPosition.bottom = lpw

45、ndpl-rcNormalPosition.top; lpwndpl-rcNormalPosition.bottom += m_wReducedHeight; SetWindowPlacement(lpwndpl); 上面这段代码首先将窗口置于屏幕中间,这可以通过函数CenterWindow (GetDesktopWindow() 来实现,函数CenterWindow() 的用法为:void CenterWindow( CWnd* pAlternateOwner = NULL ); 其中参数 pAlternateOwner 指向所想居中的窗口的指针。然电动蝶阀后利用函数GetSystemMet

46、rics( int nIndex ) 得到系统当前设置如屏幕分辨率等。nIndexs= SM_CXSCREEN 时函数返回屏幕的宽度;返回值单位为像素点。nIndexs= SM_CYSCREEN 时函数返回屏幕的高度;返回值单位为像素点。函数 BOOL GetWindowPlacement( WINDOWPLACEMENT* lpwndpl ) 是最重要的。他的参数为一个指向结构变量WINDOWPLACEMENT的指针 (lpwndpl) ;其中WINDOWPLACEMENT结构变量数据结构具体为:typedef struct tagWINDOWPLACEMENT /* wndpl */ UI

47、NT length; UINT flags; UINT showCmd; POINT ptMinPosition; POINT ptMaxPosition; RECT rcNormalPosition; WINDOWPLACEMENT; 他包含了窗口在屏幕上的定位信息。其中成员变量的含义为:length:指结构变量的长度,单位字节。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 43 页 - - - - - - - - - flags: 标志值,控制窗口最小化或窗口还原

48、的方法,可以取如下值:WPF_SETMINPOSITION:指定窗口最小化时的x 位置和 y 位置。WPF_RESTORETOMAXIMIZED:指定窗口以最大化方式还原,尽管可能窗口并不是在最大化时最小化的。不改变窗口的缺省还原方式。showCmd:指定窗口的当前显示状态。可以取值:SW_HIDE :隐藏窗口并激活另一窗口。SW_MINIMIZE:最小化指定窗口并激活系统窗口列表中最顶层窗口。SW_RESTORE :激活并显示窗口,如果窗口处于最小化或最大化状态,则窗口还原到原始大小和位置。SW_SHOW :以窗口的当前大小和位置激活并显示窗口。SW_SHOWMAXIMIZED:以最大化方式

49、激活并显示窗口。SW_SHOWMINIMIZED:以图标方式激活并显示窗口。SW_SHOWMINNOACTIVE:以图标方式窗口。但不改变窗口的活动状态。SW_SHOWNA :以窗口的当前状态显示窗口。SW_SHOWNOACTIV ATE:以窗口最近一次的大小和位置显示窗口。但不改变窗口的活 动状态。SW_SHOWNORMAL:激活并显示窗口。如果窗口被最大化或最小化,则窗口还原到原始大小和位置。ptMinPosition :指定窗口最小化时的左伤角坐标。ptMaxPosition :气动球阀指定窗口最大化时的左伤角坐标。rcNormalPosition :指定窗口在还原时的坐标。通过灵活使用

50、函数GetWindowPlacement() 就可以得到窗口的配置信息。看到这,可能有些读者已经想到了GetWindowPlacement() 函数的姐妹函数SetWindowPlacement() ,不用多说,其用法如下:BOOL SetWindowPlacement( WINDOWPLACEMENT* lpwndpl );显然,通过函数SetWindowPlacement() ,再加以简单的计算,我们就可以来设置窗气动蝶阀口的位置、大小以及状态等,从而可以自如地控制窗口显示与否以及窗口的大小、位置等。这里我们就不再多解释了。6 利用 ClassWizard 对控件 IDC_HORIZONT

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 技术总结

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁