amiga-virus nachprogrammieren ;-)



  • In wiefern werden sie den falsch angezeigt?
    Was für ein Betriebssystem benutzt du?



  • Win98
    Da sind so grüne Striche, wo eigentlich Transrapenz sein soll!
    Mit TransrapentBlt(...) gehts glaube ich auch 🙂



  • hmm...
    also erstmal danke an paranoiac für deinen code und deiner mühe 😉

    aber was mich jetz mal stark interessieren würde :

    könnte man das ganze nicht auch unter SDL machen anstatt mit der WinAPI ?
    wenn wir schon beim thema grafik sind, bietet sich die frage an denke ich...

    ich mein vielleicht lieg ich selber auch falsch, aber ist es nich so , dass man die WinAPI nur für fenster-anwendungen unter WINDOWS verwendet ? bzw. für gewisse Win32-console einstellungen ?

    ich mein wenn es um grafik programmierung geht, ich könnte ja auch ein 2d spiel coden, dann könnt ich doch gleich SDL nehmen oder ? oder Directx SDK...



  • @para: Ich mag dein WM_PAINT nicht! Das Bitmap lädt man in WM_CREATE oder in der WinMain. Das Gleiche gilt für das MemDC.



  • ok

    cu para
    😃



  • @Hammer: Es ist ziemlich doof, die Region bei Programmstart erstellen zu lassen. Besser ist es, sie gleich binär vorliegen zu haben. Dies kannst du einfach erreichen, indem du dir meinen RegionBuilder (suehe meine HP) runterlädst. Damit kannst du eine Region speichern und sie in dein Programm als Resource einbinden. Wie das alles geht steht in der RegionBuilder-Hilfe.



  • Nö, WebFritzi, da hast du leider unrecht. Das packt man normalerweise in WM_PAINT damit die Region so frisch wie möglich ist.



  • Original erstellt von <Hendrik>:
    Nö, WebFritzi, da hast du leider unrecht. Das packt man normalerweise in WM_PAINT damit die Region so frisch wie möglich ist.

    Du meinst wohl meinen ersten Post von den letzten beiden. Aber da hast du leider unrecht, da es hierbei nicht um Regions, sondern um Bitmaps und DCs ging. Pass das nächte mal ein wenig besser auf.



  • Nein ich meinte schon deinen Beitrag an Hammer. Wenn man die Region mit deinem Programm erstellt, ist die doch total veraltet. Man sollte die immer frisch in WM_PAINT generieren.



  • Original erstellt von <Hendrik>:
    Nein ich meinte schon deinen Beitrag an Hammer. Wenn man die Region mit deinem Programm erstellt, ist die doch total veraltet. Man sollte die immer frisch in WM_PAINT generieren.

    *LOL* Genau. Damit man immer schön warten muss, oder was? So ein Blödsinn! Zu Testzwecken ist sowas vielleicht geeignet, aber nicht für die Endversion. Da sollte die Region dann binär vorliegen. Dann kann man sie meinetwegen immer wieder neu generieren, denn das geht viel schneller als das Verfahren, das para hier anwendet (immer wieder das Bitmap in ein 24-Bit-Bitmap umwandeln und dann die Region Pixel für Pixel mit CombineRgn() erstellen).



  • @Webfritzie
    Da du von Testzwecken redest, ist es natürlich auch sinnvoll dir Regions jedesmal neu zu erstellen (bei jedem Start). Sonst müsste man ja immer dein Programm, welches nicht von dir ist, sondern von der Skinningpage (wo ich auch die Funktionen her hab), nehmen und dass wäre sehr kompliziert. Hat man ein Programm mal fertig ist es mit sicherheit einfacher sie als Binary vorliegen zu haben.

    Das man das Bild nicht in WM_PAINT läd ist mir nomalerweise auch klar, aber es ging nicht, wenn ich es einmal am Anfang lade, auch nicht wenn das Bitmap static ist. Da es nur ein Testprogramm war und innerhalb von kürzester Zeit geschrieben wurde, hab ich es halt "falsch" gemacht. Es war jediglich zur Demonstration gedacht.

    para
    😃



  • zum code von para nochmal:

    vorweg:
    also ich hab jetz mal begonnen mich mit der winapi auseinanderzusetzen...
    jetz kann ich wenigstens mit den begriffen handles und den WM_MESSAGES was anfangen 🙄
    naja was ich bisher aber nur kann, sind fenster erstellen und deren inhalt gestalten... naja und mit ressourcen hab ich mich etwas beschäftigt...

    womit ich aber noch gar nich klarkomm sind dialoges und regions...
    was genau sind dialoges und regions im vergleich zu fenstern ??
    und warum werden die hier verwendet im code ?

    ausserdem wundert mich noch, dass para keine getmessage-schleife in der WinMain verwendet ... ? wie funktioniert das da dann ? ich mein irgendwo müssen doch die messages eingefangen werden die das os zum programm sendet ...

    wäre dankbar wenn einer den code vonn para etwas erklären könnte zum thema messages einfangen und regions und dialoges...

    thx
    mfg haMMer



  • Original erstellt von paranoiac.org:
    Sonst müsste man ja immer dein Programm, welches nicht von dir ist, sondern von der Skinningpage (wo ich auch die Funktionen her hab), nehmen und dass wäre sehr kompliziert.

    Das ist ja wohl die Höhe!!! Mein Programm hat mit den Funktionen der Skinning Pages sehr wenig zu tun. Es benutzt einen besseren Algorithmus. Ich geb aber zu, dass es zuerst der gleiche war. Und: der neue Algorithmus ist von MIR! Und auch wenn alles nur abgekupfert wäre, dann wäre das Prog trotzdem sinnvoll!
    Und was wäre nun kompliziert daran, mein Prog zu benutzen??? Du scheinst mein Prog garnicht zu kennen, mein Lieber! Du gibst dort ein Bitmap an, welches in eine Region "umgewandelt" wird. Das Gute daran ist, dass man die Region abspeichern kann als Datei. In deinem Proggi kannst du sie dann wieder als Resource laden... und das geht um einiges schneller als immer wieder die Region neu zu generieren.



  • Was meint ihr mit der Skinning Page gibt mal nen Link her



  • jetz hab ich schon gedacht, jemand hat sich mühe gegeben um auf meine fragen zu reagieren ... 🙄

    lol naja... mal abwarten
    vielleicht muss ich mir doch noch mehr tuts besorgen und durchlesen



  • Original erstellt von Hammer:
    vielleicht muss ich mir doch noch mehr tuts besorgen und durchlesen

    Wäre bestimmt nicht schlecht. Hatte gerade viel zu tun. Ich schau mir dein Prob gleich mal an. Tut mir leid, aber das MUSSTE einfach mal raus.

    @Nitromaus: http://www.flipcode.com/articles/article_win32skins.shtml



  • Doch ich kenne dein Programm sehr wohl. Davon mal abgesehen weiss ich auch, dass auf der Skinning Page auch ein Beispiel ist, wie man aus einem Bitmap Regions im Binary Format erstellt! Ist mir aber auch völlig egal!

    Ich meinte damit nur, das es Unsinn ist, ´wenn man doch nur testen will, extra ein Programm zu benutzen welches 5 min länger braucht um das Ding zu speichern aber dann bei der Anwendung ein paar Sekunden schneller läuft. Hat man eine Anwendung mal fertig die Skins verwendet ist es nat. sinnvoller es mit einem Binary zu machen!

    Und jetzt reite nicht darauf rum, sondern freu dich einfach, dass heut schönes Wetter war :p :p

    Danke!
    cu para
    😃



  • ....
    ....
    ihr beiden scheint guten plan zu haben mit den winapi funktionen ..!

    kann mir von euch jemand seine icq nummer geben, oder sagen, in welchem irc channel er sich öfters aufhält, sofern vorhanden.. ?

    wäre net echt net mich etwas mit einem erfahrenen zu unterhalten..
    mir fehlt halt der überblick über die fktnen. , bzw. viele kenn ich noch gar net und ich weiss net wo ich nachschauen soll...

    ich weiss ich bin zu gierig :), hab erst vor 8 wochen mit c/c++ angefangen, und hab schon n winsocket-consolen chatprog erstellt...
    jetz will ich mir winapi geben und unbedingt meinen traum erfüllen, den ich schon seit 3 jahren hatte... den desktop-roboter, der die maus verschluckt !danach steig ich um auf libSDL 😃

    lets rock!

    mfg haMMer



  • Original erstellt von Hammer:
    **was genau sind dialoges und regions im vergleich zu fenstern ??
    und warum werden die hier verwendet im code ?
    **

    Also, erstmal heißt das "Dialoge". Ein Dialog ist ein Fenster. Mehr nicht. Man kann aber ein solches Fenster in einer Resource ganz einfach erstellen. Zum Beispiel:

    ////////////////////////////////////////////////
    ////              About Dialog              ////
    ////////////////////////////////////////////////
    ID_DLG_ABOUT  DIALOG 0, 0, 164, 94
    STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
    CAPTION "About Metronomania"
    LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
    FONT 8, "MS Sans Serif"
    {
       CONTROL ""                        , ID_WND_STC_IMG  , STATIC, WS_CHILD | WS_VISIBLE | SS_ICON            , 10, 18,  21, 20
       CONTROL "Metronomania"            , ID_WND_STC_TITLE, STATIC, WS_CHILD | WS_VISIBLE | SS_LEFT            , 46,  9, 129, 16
       CONTROL "Böna Company 2000 - 2002", ID_WND_STC_BOENA, STATIC, WS_CHILD | WS_VISIBLE | SS_LEFT            , 49, 32,  92, 10
       CONTROL "FritzPhilipp@web.de"     , ID_WND_STC_MAIL , STATIC, WS_CHILD | WS_VISIBLE | SS_LEFT | SS_NOTIFY, 49, 48,  69, 10
       CONTROL "OK"                      , ID_WND_BUT_OK   , BUTTON, WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON   , 57, 67,  53, 16
    }
    

    Ebenso einfach kann man z.B. Menus erstellen. Wegen dieser Einfachheit benutzen viele Dialoge, anstatt CreateWindow() zu benutzen.

    ausserdem wundert mich noch, dass para keine getmessage-schleife in der WinMain verwendet ... ? wie funktioniert das da dann ? ich mein irgendwo müssen doch die messages eingefangen werden die das os zum programm sendet ...

    Recht hast du! Das ist auch eine Eigenheit von Dialogen. Man benutzt einfach DialogBox() und gibt dort im letzten Parameter die DLGPROC (entspricht der WINDOWPROC bei Fenstern) an. In der angegebenen DLGPROC werden dann die Messages verarbeitet, die an den Dialog gehen.

    wäre dankbar wenn einer den code vonn para etwas erklären könnte zum thema messages einfangen und regions und dialoges...

    Nö, hab ich jetzt keine Lust zu. Ich kann dir noch schnell was zu Regions sagen. Du kannst dir eine Region vorstellen wie einen Bereich, in dem einige Punkte enthalten sind und andere nicht. Also irgendeine beliebige Form. Eine solche Form kannst du jetzt per SetWindowRgn() deinem Fenster zuweisen. Die Form wird dann sozusagen über das Fenster "gestülpt", und nur da, wo die Form über dem Fenster liegt, wird das Fenster auch gezeichnet. Alles andere gehört dann nicht mehr zum Fenster. Ja, so ist das. 😉



  • Original erstellt von paranoiac.org:
    Ich meinte damit nur, das es Unsinn ist, wenn man doch nur testen will, extra ein Programm zu benutzen welches 5 min länger braucht um das Ding zu speichern aber dann bei der Anwendung ein paar Sekunden schneller läuft.

    5 Minuten??? 😮 Ich wähne, du kennst das Programm wirklich nicht. Naja - zumindest nicht gut. OK, wir gehen das ganze mal durch. Also, du willst plötzlich ein neues Bmp für dein Window haben - und damit auch eine neue Region. OK, du änderst also erstmal den Namen des Bmps in der Resource. Soweit, so gut. Wir gehen mal von einem komplizierten BMP aus. Wenn du jetzt immer wieder im Programm deine Funktionen darüber laufen lässt, dauert das superlange! Was spricht nun dagegen, einmal den RegionBuilder anzuschmeißen und die Routine (die schneller ist als die in deinem Proggi) darüber laufen zu lassen? Dann bist du fertig. Den Namen der RGNDATA-Resourcendatei hast du doch in deinem Resourcenscript. Die wurde vom RegionBuilder schnell geändert. Alles, was jetzt in der Vorbereitung länger dauert, sind ein paar Klicks - einmal RegionBuilder öffnen (am besten, du hast ihn bei sowas die ganze Zeit geöffnet), einmal die BMP-Datei öffnen, einmal Region generieren (wie gesagt - schneller als in deinem Code) und einmal speichern. Das war's. Höchstens ne halbe Minute! Und: du bist das Warten in deinem Programm los.

    P.S.: Sorry, dass ich nochmal darauf rumreiten musste. Aber ich muss doch mein Programm verteidigen. 😉


Anmelden zum Antworten