Function to Use Relative Window Sizes

This code allows display of graphs, tables, and panels using /W=(...) values as RELATIVE sizes in %. The file below uses STRUCTURE definitions to store the screen sizes. The STRUCTURE could just as easily be replaced by GLOBALS stored in a root:Packages:... folder. See the Screen Sizer Module for the specific example of this.

// structure to store screen parameters
// values are RELATIVE SIZES
// POINTS: used for /W=() in tables and graphs
// PIXELS: used for /W=() in panels

STRUCTURE ScreenSizeParameters
    variable scrwpxl
    variable scrhpxl
    variable scrwpnt
    variable scrhpnt
ENDSTRUCTURE

// initialize the screen sizes

Static Function InitScreenParameters(ScrP)
    STRUCT ScreenSizeParameters &ScrP
   
    // get screen pixel sizes
   
    if (cmpstr(IgorInfo(2),"Macintosh")==0)
   
        // MacOS
       
        string IgorStuff=""
        variable scr0,scr1,scr2
   
        IgorStuff=IgorInfo(0)
        scr0 = strsearch(IgorStuff,"RECT",0)
        scr1 = strsearch(IgorStuff,",",scr0+9)
        scr2 = strlen(IgorStuff)-2     
        ScrP.scrwpxl = str2num(IgorStuff[scr0+9,scr1-1])/100
        ScrP.scrhpxl = str2num(IgorStuff[scr1+1,scr2])/100
    else

        // WinXX (must maximize the frame)

        MoveWindow/F 2, 2, 2, 2
        GetWindow kwFrameInner wsizeDC

        ScrP.scrwpxl = (v_right-v_left)/100
        ScrP.scrhpxl = (v_bottom-v_top)/100
    endif

    // set screen point sizes
   
    ScrP.scrwpnt = ScrP.scrwpxl*72/ScreenResolution
    ScrP.scrhpnt = ScrP.scrhpxl*72/ScreenResolution
   
    return 0
end

// EXAMPLE USEAGE
// Show Examples displays a graph and panel at 60%x40% of screen

Function ShowExamples()
   
    // define the screen parameter structure
   
    STRUCT ScreenSizeParameters ScrP
   
    // initialize it
   
    InitScreenParameters(ScrP)
   
    // show a graph window at 60% x 40% of screen
   
    display/W=(0,0,60*ScrP.scrwpnt,40*ScrP.scrhpnt) as "60 x 40 Graph"
   
        // show a table window at 60% x 40% of screen
   
    edit/W=(0,0,60*ScrP.scrwpnt,40*ScrP.scrhpnt) as "60 x 40 Table"
   
    // show a panel at 60% x 40% of screen
   
    NewPanel/W=(0,0,60*ScrP.scrwpxl,40*ScrP.scrhpxl) as "60 x 40 Panel"

    return 0
end

Forum

Support

Gallery

Igor Pro 8

Learn More

Igor XOP Toolkit

Learn More

Igor NIDAQ Tools MX

Learn More