Search  
Thursday, May 24, 2012 ..:: Forum ::.. Register  Login
 Forum Minimize
Pentru a putea posta mesaje trebuie să vă înregistraţi.
Notă: Mesajele cu conţinut jignitor sau ilegal (inclusiv cereri de soft piratat) nu sunt acceptate şi vor fi şterse imediat .

Pentru a primi raspunsuri rapide si corecte, scrieti in mesaj ce intentionati sa faceti, ce mesaj de eroare primiti, in ce context si in urma caror actiuni. De asemenea, mentionati versiunea de FoxPro in care lucrati!
Dacă nu specificați versiunea, se consideră VFP 9.0 SP2.

SearchForum Home
  Visual FoxPro  Win32 API  Setarea margini...
 Setarea marginilor ferestrei
 
 11/15/2005 9:45:57 AM
User is offlineandrei
54 posts
www.andreiloto.home.ro


Setarea marginilor ferestrei
 (N/A)

Am gasit pe http://www.universalthread.com un programel cu care se poate seta marginea ferestrelor (formurilor) (Sa nu arate neaparat dreptunghiulare). Nestiind unde sa-l pun, l-am pus aici deoarece este din categoria Windows API.

In the Init of a Form:

#DEFINE C_ALTERNATE 1
#DEFINE C_WINDING 2

declare integer CreatePolygonRgn in gdi32 ;
   string@ ppoints, integer npoints, integer nfillmode
declare integer SetWindowRgn in user32 ;
   integer hWnd, integer hRgn , integer bRedraw

cPoints = num2dword(0)+num2dword(0);
   +num2dword(THIS.Width+(sysmetric(13)*2));
   +num2dword(THIS.Height+sysmetric(9)+(sysmetric(12)*2));
   +num2dword(0)+num2dword(THIS.Height+sysmetric(9)+(sysmetric(12)*2))

set library to foxtools.fll

lnw = _WFindTitl(THIS.Caption)
lnh = _WhToHWnd(lnw)
lnr = CreatePolygonRgn(@cPoints, 3, C_WINDING)

SetWindowRgn(lnh, lnr, 1)
return

External function:
function Num2Dword
lparameter tnNum
local c0,c1,c2,c3
lcresult = chr(0)+chr(0)+chr(0)+chr(0)
if tnNum < (2^31 - 1) then
   c3 = chr(int(tnNum/(256^3)))
   tnNum = mod(tnNum,256^3)
   c2 = chr(int(tnNum/(256^2)))
   tnNum = mod(tnNum,256^2)
   c1 = chr(int(tnNum/256))
   c0 = chr(mod(tnNum,256))
   lcresult = c0+c1+c2+c3
else
   * not a valid number for a DWORD value
endif
return lcresult

Cred ca este frumos sa trec calea completa de unde l-am luat (http://www.universalthread.com/wconnect/wc.dll?LevelExtreme~2,84,18,12732).

 11/16/2005 12:32:56 AM
User is offlineGhiorghiu Bogdan
928 posts
1st




Re: Setarea marginilor ferestrei
 (Romania)

Si cum folosesc chestia asta?

Ai biblioteca?

 


Ghiorghiu Bogdan >>> Dacă tot te apuci să faci o treabă, fă-o bine de la inceput!
 11/16/2005 12:41:13 AM
User is offlineGrigore Dolghin
3590 posts
www.class-software.eu
1st






Re: Setarea marginilor ferestrei
 (Romania)
Ce biblioteca, man??
Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 11/16/2005 12:48:59 AM
User is offlineGhiorghiu Bogdan
928 posts
1st




Re: Setarea marginilor ferestrei
 (Romania)

Pai nu ii trebuie user32.dll ?

Am pus in director  foxtools.fll so in windows\system am pus user32.dll

Si tot nu mere!


Ghiorghiu Bogdan >>> Dacă tot te apuci să faci o treabă, fă-o bine de la inceput!
 11/16/2005 12:58:36 AM
User is offlineGrigore Dolghin
3590 posts
www.class-software.eu
1st






Re: Setarea marginilor ferestrei
 (Romania)

Pai... in windows exista un singur user32.dll, si acolo unde e, acolo trebuie sa stea. Nu umbla la el ca-ti busesti windowsul. Pune-l la loc.

Cat despre functie, am verificat-o adineauri si merge perfect. Ia zi tu ce problema ai si ce intelegi prin "nu merge". Ce naiba, parca esti userii mei, care ma suna si zic "programul nu merge", de parca eu am un glob de cristal in care ma uit si stiu ce se intampla acolo. Credeam ca un programator stie sa dea un astfel de raport. Ce eroare e, unde apare, in ce circumstante, s.a.m.d.

Ca atare, mana pe condei si zi ce nu merge.


Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 11/16/2005 1:10:54 AM
User is offlineEugen Gliga
1052 posts
1st




Re: Setarea marginilor ferestrei
 (Romania)
Hmm. La mine parca ar vrea sa mearga. Adica nu-mi da nici o eroare dar apare doar jumatatea de jos a formului, taiat pe diagonala. N-are nici margini, n-are nimic si nici nu-l pot muta. I-am pus si un buton frumos  in mijloc, il pot inchide si atat.:)




 11/16/2005 1:14:11 AM
User is offlineGhiorghiu Bogdan
928 posts
1st




Re: Setarea marginilor ferestrei
 (Romania)

Grig iti descriu exact ce pasi am facut.

Am downloadat si copiat in windows\system biblioteca user32.dll apoi in directorul in care se afla form-ul am copiat foxtools.fll

am creat un prg ce contine:

External function:
function Num2Dword
lparameter tnNum
local c0,c1,c2,c3
lcresult = chr(0)+chr(0)+chr(0)+chr(0)
if tnNum < (2^31 - 1) then
   c3 = chr(int(tnNum/(256^3)))
   tnNum = mod(tnNum,256^3)
   c2 = chr(int(tnNum/(256^2)))
   tnNum = mod(tnNum,256^2)
   c1 = chr(int(tnNum/256))
   c0 = chr(mod(tnNum,256))
   lcresult = c0+c1+c2+c3
else
   * not a valid number for a DWORD value
endif
return lcresult

Si cred ca s-a dus XP-ul, sper ca nu fie asa ca imi e lena sa imi pun imaginea la ora asta.

Cand lansez in executie form-ul primesc eroarea:

The procedure estry point SMapLS_IP_EBP_12 could net be located in the dynamic link library KERNEL32.DLL (eroare de win) iar foxul imi spune:

Cannot load 32-bit DLL ...\user32.dll.

Sper sa fi inteles care e problema mea.

 


Ghiorghiu Bogdan >>> Dacă tot te apuci să faci o treabă, fă-o bine de la inceput!
 11/16/2005 1:25:17 AM
User is offlineGrigore Dolghin
3590 posts
www.class-software.eu
1st






Re: Setarea marginilor ferestrei
 (Romania)

Ba exact asta s-a intamplat. S-a dus XP-ul. Da' de unde pana unde ti-a venit ideea sa descarci user32? de unde l-ai dat jos? pai.... asta e unul din fisierele de sistem Fiecare versiune de windows are user32 propriu. Nu stiu cum sa zic. Manevra asta este la fel cu "nu-mi place explorer.exe, ia sa dau eu jos mc.exe din Red Hat si sa-l pun in loc. oare merge??" Evident, nu merge. Sigur, am exagerat, dar consecintele sunt aceleasi.

Functia postata se foloseste asa cum e. Daca era de descarcat ceva, ar fi scris. hmmm..... trebuie sa-ti refaci windows-ul. Dupa aia mai vorbim.


Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 11/16/2005 1:31:14 AM
User is offlineGrigore Dolghin
3590 posts
www.class-software.eu
1st






Re: Setarea marginilor ferestrei
 (Romania)

De fapt il poti muta, si il poti si inchide. In coltul din stanga sus se vede o bucata din control box-ul ferestrei.

Functia doar seteaza cat din fereastra sa se vada.

cPoints = num2dword(0)+num2dword(0);
   +num2dword(THIS.Width+(sysmetric(13)*2));
   +num2dword(THIS.Height+sysmetric(9)+(sysmetric(12)*2));
   +num2dword(0)+num2dword(THIS.Height+sysmetric(9)+(sysmetric(12)*2))

Dupa cum vezi, sunt 6 termeni in string-ul ala. Adica coordonatele a 3 puncte. Functia API asteapta un buffer in care sunt coordonatele poligonului. Poligonul se aplica pe fereastra, si ce e in interior se vede, ce nu, nu. Si coordonatele de-acolo sunt 0,0 (coltul din stanga sus), width+2*border,height+titlebar+2*border (coltul din dreapta jos), 0,height+titlebar+2*border (coltul din stanga jos). Poligonul e un triunghi ale carui colturi sunt in punctele specificate.

Ia fa cPoints = num2dword(0)+num2dword(0);
   +num2dword(THIS.Width+(sysmetric(13)*2));
   +num2dword(THIS.Height+sysmetric(9)+(sysmetric(12)*2));
   +num2dword(0)+num2dword(THIS.Height+sysmetric(9)+(sysmetric(12)*2));
   +num2dword(100) + num2dword(100)

sa vezi ce iese.


Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 11/16/2005 1:36:46 AM
User is offlineGrigore Dolghin
3590 posts
www.class-software.eu
1st






Re: Setarea marginilor ferestrei
 (Romania)

Um... mai e o linie:

lnr = CreatePolygonRgn(@cPoints, 4, C_WINDING)

Al doilea parametru specifica numarul de puncte. Inainte erau 3, acum sunt 4.


Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 11/16/2005 2:03:45 AM
User is offlineEugen Gliga
1052 posts
1st




Re: Setarea marginilor ferestrei
 (Romania)
10x. Acuma e in regula. E chiar poligon si se poate si muta.


 4/25/2006 9:40:21 PM
User is offlineedyshor
1450 posts
1st




Re: Setarea marginilor ferestrei
 (Romania)
nu-mi vine sa cred !!! .. sub WindowsXP SP1 imi permite sa redenumesc si/sau sa mut fisierul user32.dll .. :( .. ai crede ca ar fi protejat de modificare ... totusi nu am avut curajul sa vad daca-l inlocuieste cu un back-up la restart .. e posibil .. :)
  Visual FoxPro  Win32 API  Setarea margini...

Search  Forum Home         

 Google Ads Minimize

    

Copyright 2002-2010 Profox   Terms Of Use  Privacy Statement