none
如何取得用户屏幕的工作区的大小? RRS feed

  • 问题

  •  

    我现在想做一个window,会根据客户的工作区的大小来自适应!

    但不是全屏显示的,不能讲start那一行的蓝色区域遮盖掉!

     

    想请问一下,如何来做??

    2008年12月5日 4:27

答案

  •  Sheng Jiang (蒋晟) 写:
    call the SystemParametersInfo function with the SPI_GETWORKAREA value.

     

    SystemParametersinfo

      函数功能:该函数查询或设置系统级参数。该函数也可以在设置参数中更新用户配置文件。
      函数原型:B00L SystemParametersinfo(UINT uiAction,UINT uiParam,PVOID pvParam,UINT fWinlni);
           SPI_GETWORKAREA:检索主显示器的工作区大小。工作区是指屏幕上不被系统任务条或应用程序桌面工具遮盖的部分。参数pvParam必须指向RECT结构以接收工作区的坐标信息,坐标是用虚拟屏幕坐标来表示的。
      
           
    Code Snippet
    RECT rWorkArea; 
    BOOL bResult = SystemParametersInfo(SPI_GETWORKAREA, sizeof(RECT), &rWorkArea, 0);

     

    2008年12月9日 16:01

全部回复

  •  

    CWnd::GetClientRect 

    void GetClientRect( LPRECT lpRect ) const;

    Parameters

    lpRect

    Points to a RECT structure or a CRect object to receive the client coordinates. The left and top members will be 0. The right and bottom members will contain the width and height of the window.

    Remarks

    Copies the client coordinates of the CWnd client area into the structure pointed to by lpRect. The client coordinates specify the upper-left and lower-right corners of the client area. Since client coordinates are relative to the upper-left corners of the CWnd client area, the coordinates of the upper-left corner are (0,0).

    2008年12月5日 5:03
    版主
  •  

    getclientRect好像不行啊!

    那样只能取到我的程式的dialog的客户区!

    我现在是要取到windows的客户区

     

    2008年12月5日 5:50
  • 那你要先得到客户的工作区的句柄(m_hWnd);
    然后:
    CRect rect;
    m_hWnd->GetWindowClient(&rect);
    ScreenToClient(&Rect);
    2008年12月5日 7:06
    版主
  •  

    getClientRect只能得到我的dialog的客户区,得不到windows的客户区啊!!
    2008年12月5日 13:10
  • call the SystemParametersInfo function with the SPI_GETWORKAREA value.
    2008年12月5日 15:31
    版主
  • 先获得屏幕大小然后再减去系统任务栏的大小

    2008年12月6日 2:52
    版主
  •  

    getClientRect ,谁调用它,获得谁的客户区,都是从CWnd 派生的。
    2008年12月7日 3:05
  • 你说的window也许是指frame外框架 包括标题栏.

    dialog改变时调用GetClientRect 然后MoveWindow来设置frame大小.

    2008年12月8日 2:14
  •  Sheng Jiang (蒋晟) 写:
    call the SystemParametersInfo function with the SPI_GETWORKAREA value.

     

    SystemParametersinfo

      函数功能:该函数查询或设置系统级参数。该函数也可以在设置参数中更新用户配置文件。
      函数原型:B00L SystemParametersinfo(UINT uiAction,UINT uiParam,PVOID pvParam,UINT fWinlni);
           SPI_GETWORKAREA:检索主显示器的工作区大小。工作区是指屏幕上不被系统任务条或应用程序桌面工具遮盖的部分。参数pvParam必须指向RECT结构以接收工作区的坐标信息,坐标是用虚拟屏幕坐标来表示的。
      
           
    Code Snippet
    RECT rWorkArea; 
    BOOL bResult = SystemParametersInfo(SPI_GETWORKAREA, sizeof(RECT), &rWorkArea, 0);

     

    2008年12月9日 16:01