Get screen width, height etc. in X++ code


I took me a bit longer than expected to Google the solution for this Dynamics AX X++ coding question, as I was did not have the keyword “system metrics” in mind. Maybe this post will help someone to be 2 minutes faster in finding the solution.
static void test_WinAPI_getSystemMetrics(Args _args)
{
    #WinAPI
    int screenWidth, screenHeight;
    ;
    screenWidth = WinAPI::getSystemMetrics(#SM_CXSCREEN);
    screenHeight = WinAPI::getSystemMetrics(#SM_CYSCREEN);
    info(strfmt("Screen resolution: %1 x %2",screenWidth, screenHeight));
//other parameters:
//SM_CXSCREEN = 0        ‘ Width of screen
//SM_CYSCREEN = 1        ‘ Height of screen
//SM_CXFULLSCREEN = 16   ‘ Width of window client area
//SM_CYFULLSCREEN = 17   ‘ Height of window client area
//SM_CYMENU = 15         ‘ Height of menu
//SM_CYCAPTION = 4       ‘ Height of caption or title
//SM_CXFRAME = 32        ‘ Width of window frame
//SM_CYFRAME = 33        ‘ Height of window frame
//SM_CXHSCROLL = 21      ‘ Width of arrow bitmap on
//                       ‘  horizontal scroll bar
//SM_CYHSCROLL = 3       ‘ Height of arrow bitmap on
//                       ‘  horizontal scroll bar
//SM_CXVSCROLL = 2       ‘ Width of arrow bitmap on
//                       ‘  vertical scroll bar
//SM_CYVSCROLL = 20      ‘ Height of arrow bitmap on
//                       ‘  vertical scroll bar
//SM_CXSIZE = 30         ‘ Width of bitmaps in title bar
//SM_CYSIZE = 31         ‘ Height of bitmaps in title bar
//SM_CXCURSOR = 13       ‘ Width of cursor
//SM_CYCURSOR = 14       ‘ Height of cursor
//SM_CXBORDER = 5        ‘ Width of window frame that cannot
//                       ‘  be sized
//SM_CYBORDER = 6        ‘ Height of window frame that cannot
//                       ‘  be sized
//SM_CXDOUBLECLICK = 36  ‘ Width of rectangle around the
//                       ‘  location of the first click. The
//                       ‘  second click must occur in the
//                       ‘  same rectangular location.
//SM_CYDOUBLECLICK = 37  ‘ Height of rectangle around the
//                       ‘  location of the first click. The
//                       ‘  second click must occur in the
//                       ‘  same rectangular location.
//SM_CXDLGFRAME = 7      ‘ Width of dialog frame window
//SM_CYDLGFRAME = 8      ‘ Height of dialog frame window
//SM_CXICON = 11         ‘ Width of icon
//SM_CYICON = 12         ‘ Height of icon
//SM_CXICONSPACING = 38  ‘ Width of rectangles the system
//                       ‘ uses to position tiled icons
//SM_CYICONSPACING = 39  ‘ Height of rectangles the system
//                       ‘ uses to position tiled icons
//SM_CXMIN = 28          ‘ Minimum width of window
//SM_CYMIN = 29          ‘ Minimum height of window
//SM_CXMINTRACK = 34     ‘ Minimum tracking width of window
//SM_CYMINTRACK = 35     ‘ Minimum tracking height of window
//SM_CXHTHUMB = 10       ‘ Width of scroll box (thumb) on
//                       ‘  horizontal scroll bar
//SM_CYVTHUMB = 9        ‘ Width of scroll box (thumb) on
//                       ‘  vertical scroll bar
//SM_DBCSENABLED = 42    ‘ Returns a non-zero if the current
//                       ‘  Windows version uses double-byte
//                       ‘  characters, otherwise returns
//                       ‘  zero
//SM_DEBUG = 22          ‘ Returns non-zero if the Windows
//                       ‘  version is a debugging version
//SM_MENUDROPALIGNMENT = 40
//                       ‘ Alignment of pop-up menus. If zero,
//                       ‘  left side is aligned with
//                       ‘  corresponding left side of menu-
//                       ‘  bar item. If non-zero, left side
//                       ‘  is aligned with right side of
//                       ‘  corresponding menu bar item
//SM_MOUSEPRESENT = 19   ‘ Non-zero if mouse hardware is
//                       ‘  installed
//SM_PENWINDOWS = 41     ‘ Handle of Pen Windows dynamic link
//                       ‘  library if Pen Windows is
//                       ‘  installed
//SM_SWAPBUTTON = 23     ‘ Non-zero if the left and right
//                       ‘ mouse buttons are swapped
}

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.