Announcement

Collapse
No announcement yet.

fonts

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Jim Seekamp
    replied
    My pleasure

    Best Regards

    Jim


    ------------------
    Jim Seekamp

    Leave a comment:


  • Danny Faris
    replied
    Jim:
    I checked the forum this morning and got a great surprise. I implemented the fontmaker function you gave me, changed my dialog handles back to hWnd and compiled the program. And there, much to my total delight, appeared a dialog with print twice its usual size!

    I, as I have mentioned before, cannot make any sense out of low-level API calls, and I thank you so much for making this huge development in my program a reality!

    Take care.
    Danny.

    ------------------

    Leave a comment:


  • Jim Seekamp
    replied
    Fontmaker can be replaced by your own fontmaker routine if you want;
    but here is mine:

    function fontmaker(byval f$,byval fh&,byval fw&,byval uflag&) export as long

    dim lgfnt as logfont

    lgfnt.lffacename=f$
    lgfnt.lfheight=fh&
    lgfnt.lfwidth=fw&
    lgfnt.lfitalic=uflag&

    lgfnt.lfweight=x&
    'lgfnt.lfescapement=0
    'lgfnt.lforientation=%dmorient_portrait
    'lgfnt.lfunderline=0
    'lgfnt.lfstrikeout=0
    lgfnt.lfcharset=%default_charset ''%oem_charset
    lgfnt.lfoutprecision=%out_default_precis
    lgfnt.lfclipprecision=%clip_default_precis
    lgfnt.lfquality=%proof_quality
    lgfnt.lfpitchandfamily=%default_pitch

    function=createfontindirect(lgfnt)
    end function

    Best Regards

    Jim



    ------------------
    Jim Seekamp

    Leave a comment:


  • Danny Faris
    replied
    Jim:
    I'm trying to increase the size of the print in the various dialogs I have created with DDT with the code you posted here. I do not want to use a DLL, so I tried to convert the code to a function. I simply cut out the export keyword on the
    FUNCTION centerframe(BYVAL hWin&) AS LONG
    Line. Because I use hWin& for my dialog handles, I changed hWnd to hWin in the code as well. I then placed
    Call CenterFrame(hWin&)
    before the Dialog show statement.
    When compiling, PBDLL 6.0 gave error 516, stating that FontMaker was not defined, so I remmed out the
    hfont&=fontmaker("MS Sans Serif",BYVAL y1&,BYVAL x1&,0)
    line. The program compiled after that, but my dialog did not change in any way. What am I doing wrong?
    Thanks for your help!

    ------------------

    Leave a comment:


  • Lance Edmonds
    replied
    The automatically make a DDT dialog centered at creation time, add %DS_CENTER to the style flags for the dialog.

    Lance
    PowerBASIC Support

    Leave a comment:


  • Steve Lord
    replied
    It works!! Thanks.

    Steve

    Leave a comment:


  • Jim Seekamp
    replied
    Hi again.
    Here is what I'm currently using (in a dll):


    function centerframe(byval hwnd&) export as long

    static wndrect as rect
    static hfont&

    xsize%=getsystemmetrics(%sm_cxscreen)
    ysize%=getsystemmetrics(%sm_cyscreen)

    getwindowrect hwnd&,wndrect

    if xsize%>640 then
    xdlg%=(wndrect.nright-wndrect.nleft)
    ydlg%=(wndrect.nbottom-wndrect.ntop)
    wndrect.nleft=0
    wndrect.nright=ceil((xdlg%*xsize%)/640)
    wndrect.ntop=0
    wndrect.nbottom=ceil((ydlg%*ysize%)/480)
    end if

    ''center the dialog

    x1&=(xsize%-(wndrect.nright-wndrect.nleft))\2
    x2&=wndrect.nright-wndrect.nleft
    y1&=(ysize%-(wndrect.nbottom-wndrect.ntop+getsystemmetrics(%sm_cycaption)))\2
    y2&=wndrect.nbottom-wndrect.ntop
    style&=%swp_nozorder
    setwindowpos hwnd&,%null,x1&,y1&,x2&,y2&,style&

    ''set the font

    y1&=int((ysize%*16)/480) ''height
    x1&=int((xsize%*8)/640) ''width
    hfont&=fontmaker("MS Sans Serif",byval y1&,byval x1&,0)
    sendmessage hwnd&,%wm_setfont,hfont&,1

    if xsize%>640 then

    ''set dialog controls to right position and size

    hwndnext&=getwindow(hwnd&,%gw_child)

    while hwndnext&<>%null
    ctrlid&=getdlgctrlid(hwndnext&)

    control get loc hwnd&,ctrlid& to x1&,y1&
    control get size hwnd&,ctrlid& to x2&,y2&

    x1&=(x1&*xsize%)/640
    y1&=(y1&*ysize%)/480
    control set loc hwnd&,ctrlid&,x1&,y1&

    x2&=(x2&*xsize%)/640
    y2&=(y2&*ysize%)/480
    control set size hwnd&,ctrlid&,x2&,y2&

    sendmessage hwndnext&,%wm_setfont,hfont&,1

    hwndnext&=getwindow(hwndnext&,%gw_hwndnext)
    wend

    end if

    end function

    Leave a comment:


  • Steve Lord
    replied
    Yes Yes Yes !!!
    But for now can someone show me how to do this using the API (or at least a hint)?
    I am spoiled with the ease of VB

    Thanks
    Steve

    Leave a comment:


  • Jim Seekamp
    started a topic fonts

    fonts

    I am posting this message as a request for
    PBDLL to support other fonts for startup
    coordinates of dialog boxes and ability to
    set/change fonts for dialogs and individual
    controls. The Windows API calls make it a
    hairy ordeal.
    (but I'm not complaining too much; v6.0 is good)
    - Jim

Working...
X