Deutsch
Bugs und vermeintliche

Erledigt: Probleme mit XProfan 11.2

 

Detlef
Jagolski
Hallo Roland,

habe eine Dll für Owner Draw Menüs, unter XProfan 11 gab es keine Probleme.
Mit XProfan 11.2 habe jetzt ein Anwendungsfehler.
Hast Du ein Tipp für mich, wie ich das wieder hinbekomme das es wieder läuft?

Gruß
Detlef
KompilierenMarkierenSeparieren
 $P+
Set(ErrorLevel,0)
 $H WINDOWS.PH
 $H MESSAGES.PH
 $H SHELLAPI.PH
 $H STRUCTS.PH
 $H COMMCTRL.PH
 $I XPSTILDLL32.INC
Declare appexit%
Declare Edit1&
var hMenuFont1&         = Create(FONT,Arial,14,0,0,0,0)
var hMenuFont2&         = Create(FONT,Arial,14,0,0,1,0)
var hMenuFont3&         = Create(FONT,Arial,16,0,1,1,0)

SubClassProc

    If SubClassMessage(%hwnd, ~WM_MEASUREITEM)

        MeasureItem (&sWnd, &sLParam)
        Set(WinProc,1)

    ElseIf SubClassMessage(%hwnd, ~WM_DRAWITEM)

        DrawItem (&sLParam, hImageList1&, hImageList2&)
        Set(WinProc,1)

    ElseIf SubClassMessage(Edit1&, ~WM_CONTEXTMENU)

        ConTextMenu (Edit1&, hConTextMenu&, LoWord(&sLParam), HiWord(&sLParam))
        Set(WinProc, 0)

    ElseIf SubClassMessage(Edit1&, ~WM_MEASUREITEM)

        MeasureItem (Edit1&, &sLParam)
        Set(WinProc, 0)

    ElseIf SubClassMessage(Edit1&, ~WM_DRAWITEM)

        DrawItem (&sLParam, hImageList1&, hImageList2&)
        Set(WinProc, 0)

    ElseIf SubClassMessage(Edit1&, ~WM_COMMAND)

        WMCommand (Edit1&, &sWParam)
        Set(WinProc, 0)

    EndIf

EndProc

Proc CreateMainMenu

    Popup &Datei
    AppendMenu 1,&Neu...	Strg+N
    AppendMenu 2,&Öffnen...	Strg+O
    AppendMenu 3,S&chließen
    Separator
    AppendMenu 5,&Speichern	Strg+S
    AppendMenu 6,Speichern &unter...
    Separator
    AppendMenu 8,Seiten&ansicht
    AppendMenu 9,&Drucken...	Strg+P
    Separator
    AppendMenu 11,&Beenden
    Popup &Bearbeiten
    AppendMenu 12,A&usschneiden	Strg+X
    AppendMenu 13,&Kopieren	Strg+C
    AppendMenu 14,E&infügen	Strg+V
    Separator
    AppendMenu 16,&Suchen...	Strg+F
    SubPopup &Gehe zu
    AppendMenu 17,&Erster
    AppendMenu 18,&Letzter
    AppendMenu 19,&Nähster
    AppendMenu 20,&Vorheriger
    EndSub

EndProc

Set(TrueColor,1)
WindowStyle $003F
WindowTitle Menü
Window %maxX + 5,114 - 742,528
Cls ~GetSysColor(15)
CreateMainMenu
UseFont MS Sans Serif,13,0,0,0,0
SetDialogFont 1
var IconDll$ = XPStilDll32.Dll
var hImageList1& = CreateImageList(Addr(IconDll$))
var hImageList2& = CreateImageListGray(Addr(IconDll$))
SetCheckedImage(116)
SetMenuStandardColors()
SetMenuColors (RGB(230,0,0),RGB(100,0,0),RGB(10,100,20),RGB(255,253,191),RGB(230,0,0),RGB(255,208,251))
SetMenuBitmap (SP32.DLL, MICKI)
var hConTextMenu& = SetConTextMenuEdit(hMenuFont1&,-1,3,0,1,2,5,-1)
var hMenu& = ~GetMenu(%hwnd)
var hSubMenu& = ~GetSubMenu(hMenu&,0)
SetColorXPMenu hMenu&, RGB(187,212,247)
ChangeMenuItem (hSubMenu&,0,45,hMenuFont2&,RGB(230,0,0))
ChangeMenuItem (hSubMenu&,1,7,hMenuFont1&,RGB(230,0,0))
ChangeMenuItem (hSubMenu&,2,-1,hMenuFont2&,RGB(230,0,0))
ChangeMenuItem (hSubMenu&,3,-1,-1,-1)
ChangeMenuItem (hSubMenu&,4,16,hMenuFont3&,RGB(230,0,0))
ChangeMenuItem (hSubMenu&,5,-1,hMenuFont1&,RGB(70,75,210))
ChangeMenuItem (hSubMenu&,6,-1,-1,-1)
ChangeMenuItem (hSubMenu&,7,8,hMenuFont1&,RGB(70,75,210))
ChangeMenuItem (hSubMenu&,8,12,hMenuFont1&,RGB(70,75,210))
ChangeMenuItem (hSubMenu&,9,-1,-1,-1)
ChangeMenuItem (hSubMenu&,10,-1,hMenuFont1&,RGB(70,75,210))
hSubMenu& = ~GetSubMenu(hMenu&,1)
ChangeMenuItem (hSubMenu&,0,0,hMenuFont1&,RGB(70,75,210))
ChangeMenuItem (hSubMenu&,1,1,hMenuFont1&,RGB(70,75,210))
ChangeMenuItem (hSubMenu&,2,2,hMenuFont1&,RGB(70,75,210))
ChangeMenuItem (hSubMenu&,3,-1,-1,-1)
ChangeMenuItem (hSubMenu&,4,11,hMenuFont2&,RGB(0,53,99))
ChangeMenuItem (hSubMenu&,5,-1,hMenuFont1&,-1)
var hSubPopMenu& = ~GetSubMenu(hSubMenu&,5)
ChangeMenuItem (hSubPopMenu&,0,117,hMenuFont1&,-1)
ChangeMenuItem (hSubPopMenu&,1,119,hMenuFont1&,-1)
ChangeMenuItem (hSubPopMenu&,2,113,hMenuFont1&,-1)
ChangeMenuItem (hSubPopMenu&,3,114,hMenuFont1&,-1)
Edit1&=Create(Edit,%hwnd,,112,153,121,21)
Set(SubClassMode,1)
SubClass %hwnd,1
SubClass Edit1&,1
SetWindowPos %hwnd = 207,114 - 742,528;0

WhileNot appexit%

    WaitInput

    If %key = 2

        appexit%=1

    ElseIf Clicked(Edit1&)

    ElseIf Clicked(ChoiceBox1&)

    ElseIf %key = 4

        Fenstergröße

    ElseIf %key = 5

        Hilfe

    EndIf

Wend

SubClass %hwnd,0
SubClass Edit1&,0

1.257 kB
Hochgeladen:06.04.2009
Ladeanzahl70
Herunterladen
 
XProfan X4, PRFellow, Profan2Cpp - Version 2.0c-pre5, Windows 11
06.04.2009  
 




RGH
Hallo,

zunächst bekomme ich bei Deinem Code den Fehler Definition im Header fehlt: MENUINFO. In welcher Headerdatei ist bei Dir diese Definition drin? (Dann kann ich sie bei mir nachtragen.)

Zum anderen: Bei WM_DRAWITEM und WM_MEASUREITEM setzt Du WinProc auf 1, d.h. es wird also anschließend die Windowsprozedur aufgerufen. Da XProfan 11.2 eigene erweiterte Menüs anbietet, reagiert diese dann also auch auf diese Messages. Ich weiß nun nicht, was ChangeMenuItem genau macht, aber vermutlich gibst Du den Menu-Einträgen den Stil MF_OWNERDRAW. (Ansonsten würden diese Messages ja nicht erzeugt werden.) Da Du aber vermutlich den Datenwert (letzten Parameter bei AppendMenu im Falle von MF_OWNERDRAW) anders nutzt als ich, muss es hier zwangsläufig knallen, weil meine Routinen für diese beiden Messages ja nicht mit Deinen Inhalten rechnen.

Gruß
Roland
 
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
06.04.2009  
 




Detlef
Jagolski
Sorry MenuInfo steht in structs.ph
KompilierenMarkierenSeparieren
MENUINFO = cbSize&,fMask&,dwStyle&,cyMax&,hbrBack&,dwContextHelpID&,dwMenuData&;

ChangeMenuItem setzt MF_OWNERDRAW, Icon, Schrift Type und Schriftfarbe.

Gruß

Detlef
 
XProfan X4, PRFellow, Profan2Cpp - Version 2.0c-pre5, Windows 11
06.04.2009  
 




Detlef
Jagolski
Hallo Roland,

habe jetzt Set(WinProc, 1) auf Set(WinProc, 0) gesetzt, und es geht.

Super und Danke
 
XProfan X4, PRFellow, Profan2Cpp - Version 2.0c-pre5, Windows 11
06.04.2009  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

1.937 Betrachtungen

Unbenanntvor 0 min.
Roland Schäffer05.01.2011

Themeninformationen

Dieses Thema hat 2 Teilnehmer:

Detlef Jagolski (3x)
RGH (1x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie