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 9

Learn More

Igor XOP Toolkit

Learn More

Igor NIDAQ Tools MX

Learn More