Aide - Recherche - Membres - Calendrier
Version complète : pp compiler
Les Forums de PalmAttitude.org > GENERAL PalmOS > Développement sous PalmOS
Thireus
Bonjour,

Je commence depuis quelques jours à créer des petites apps pour mon Palm LifeDrive en utilisant Piaf. J'ai quelques questions concernant le Hires+.

En fait je voudrais savoir si quelqu'un peut me dire pourquoi et comment remédier au fait qu'en utilisant les fonctions Win... de PalmAPI2.pas pour écrire ou dessiner des rectangles (par exemple) je ne peux que remplir les 160*160 premiers pixels de mon écran?

En fait il faut utiliser d'autres fonctions que j'ai essayé de découvrir en utilisant la source de Fire.prc (qui lui peut se permettre de dépasser la limite), mais je n'ai pas vraiment compris (par exemple à quoi set WinScreenOff_...).

Est-ce que quelqu'un pourrait me donner un exemple de code utilisant PalmAPI2.pas qui permettrait de travailler en utilisant toute la résolution du Palm?


Très cordialement,
Thireus.
Patrice
Sous réserve que j'aie bien compris la question, je pense que tu devrais surtout te concentrer sur la fonction WinSetMode() (ou quelque chose du style, je n'ai pas les références sous les yeux)...
Thireus
J'ai bien essayé cette fonction mais je ne comprends pas comment elle fonctionne :s

http://www.access-company.com/developers/d...ow.html#1016515

C'est pourquoi je demande un petit code source simple juste avec du texte si c'est possible sourire.gif
Patrice
C'est peut-être plutôt WinScreenMode()...
Thireus
J'ai réussi à passer de 160*160 à 160*224... Voici comment j'ai fait à l'aide de la fonction WinScreenMode() :

Voici mon code, en fait l'astuce consiste à changer simplement de deph, la passer à 8bits puis repasser à 16.

Cependant je ne comprends pas pourquoi la résolution reste bloquée à 160*224 (un truc du genre).

Voici mon code:

CITATION
{$appl Thir}
program Thireus(cmd);

{$i PalmAPI2.pas}
{$i PPlib.pas}


procedure write(S: string;X,Y:integer);
var
N: integer;
begin
N:=length(S);
WinDrawChars(S,N,X,Y);
end;

Procedure DrawCell(u,v,X,Y: Integer);
Var
Rec: RectangleType;
begin
With Rec do begin
topLeft.X := X;
topLeft.y := Y;
extent.x := u;
extent.y := v;
WinDrawRectangle(Rec,0);
end;
end;


var
i,j,Wrt: integer;
Cmd: UInt16;
a: Boolean;
w,wt,dep1,dep2: UInt32;
mode: WinScreenModeOperation;

begin

a:=true;
w:=320;
wt:=480;
dep1:=8;
dep2:=16;
mode:=winScreenModeSet;
WinScreenMode(mode,w,wt,dep1,a);
WinScreenMode(mode,w,wt,dep2,a);

WinSetBackColor(255);
WinSetForeColor(255);
WinSetTextColor(0);

for i:=0 to 222 do begin
WinSetForeColor(i);
WinSetBackColor(i);
DrawCell(160,1,0,i+1);
write('Currently running on '+intToString(i),0,0);
end;
if cmd=sysAppLaunchCmdNormalLaunch then begin
Wrt:=SysTaskDelay(5*SysTicksPerSecond);
end;
end.


Maintenant mon souci est de passer à 320*480! En fait lorsque je veux dessiner un pixel à l'aide de la fonction WinDrawRectangle(). Lorsque j'essais j'obtiens un pixel de 2*2 :'(. Ce qui témoigne du fait que je suis en 160*224!

Vous savez comment faire??
Patrice
Toutes les explications sont LA
Thireus
Ha ouep sourire.gif

Super génial merci beaucoup ^^
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.
Invision Power Board © 2001-2008 Invision Power Services, Inc.