| |
|
|
| mon Frage à Andreas Miethe, quoi richtigerweise chez funzt stehen pourrait, um cela Malen aller individuel Einträge qui ListBox avec cela selbst trop prendre, dass un hPic gezeichnet wird statt z.B. qui Eintragstext. KompilierenMarqueSéparationcls
var h&=create(ListBox,hWnd,0,10,10,200,200)
var hPic&=create(hNewPic,15,15,$1278FF)
subClass h&,1
addString(h&,Hallo Welt)
addString(h&,Hallo Welt2)
while 1
waitInput
wend
end
subClassProc
if &sWnd=h&
funzt
drawPic hPic
endif
endProc
|
|
|
| |
|
|
|
Andreas Miethe
| allô @IF
Habe encore un kleines Problem beim Starten per Interpreter, la fois ne kleine récréation faire, la plus part du temps hilft cela. KompilierenMarqueSéparationHeader-Dateien
$H windows.ph
$H messages.ph
Strukturen
Struct RECT = Left&,Top&,Right&,Bottom&
Struct DRAWITEMSTRUCT = CtlType&,CtlID&,itemID&,itemAction&,itemState&,hwndItem&,hDC&,rcItem!RECT,itemData&
Declare lpdis#,Rect#,h&
Dim lpdis#,DRAWITEMSTRUCT
Dim Rect#,RECT
var hPic&=create(hNewPic,15,15,$1278FF)
cls ~GetSysColor(~COLOR_BTNFACE)
subClass %hwnd,1
h& = Control(LISTBOX,,~WS_BORDER | ~WS_CHILD | ~WS_VISIBLE | ~LBS_OWNERDRAWFIXED | ~LBS_HASSTRINGS | ~LBS_STANDARD ,10,10,200,200,%hwnd,0,%hInstance,0)
SendMessage(h&, ~LB_SETITEMHEIGHT,0,Makelong(18,0))
Var Item& = AddString(h&,Hallo Welt)
SendMessage(h&,~LB_SETITEMDATA,Item&,hPic&)
Item& = AddString(h&,Hallo Welt 2)
SendMessage(h&,~LB_SETITEMDATA,Item&,hPic&)
AddString(h&,Hallo Welt 3)
Warum geht es mit dem Interpreter erst, wenn ich in die Listbox klicke ?
Als Kompilat funktioniert es !
Habe ich heute ein Brett vorm Kopf ?
Var Ende& = 0
Whilenot Ende&
WaitInput
EndWhile
end
SubClassProc
If SubClassMessage(%hwnd,~WM_DRAWITEM)
lpdis# = &slParam
Var Text$ = GetString$(lpdis#.hwndItem&,lpdis#.itemID&)
Var hbmpPicture& = SendMessage(lpdis#.hwndItem&,~LB_GETITEMDATA, lpdis#.itemID&,0)
Var hdcMem& = ~CreateCompatibleDC(lpdis#.hdc&)
Var hbmpOld& = ~SelectObject(hdcMem&, hbmpPicture&)
lpdis#.rcItem!left&= lpdis#.rcItem!left& + 20
Rect#.Left& = lpdis#.rcItem!left&
Rect#.Top& = lpdis#.rcItem!Top&
Rect#.Right& = lpdis#.rcItem!Right&
Rect#.Bottom& = lpdis#.rcItem!Bottom&
~DrawText(lpdis#.hdc&, Addr(Text$), Len(Text$), Rect#,0)
~BitBlt(lpdis#.hdc&, lpdis#.rcItem!left&-20, lpdis#.rcItem!top&, lpdis#.rcItem!right& - lpdis#.rcItem!left&,lpdis#.rcItem!bottom& - lpdis#.rcItem!top&, hdcMem&, 0, 0, ~SRCCOPY)
~SelectObject(hdcMem&, hbmpOld&)
~DeleteDC(hdcMem&)
Set(WinProc, 1)
EndIf
ENDPROC
|
|
|
| Gruss Andreas ________ ________ ________ ________ _ Profan 3.3 - XProfanX2 Win 95,98,ME,2000,XP,Vista - Win 7 32 / 64 Bit ASUS X93S - Intel Core I7-NVIDIA GForce 540M 8GB Arbeitsspeicher Homepage : [...] | 21.02.2009 ▲ |
|
|
|
|
| Wow dankesehr Schonmal - so vois je sur jeden le cas comme gedacht ist.
si je quelque chose zum Interpreter herausfind... |
|
|
| |
|
|
|
Jörg Sellmeyer | |
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 21.02.2009 ▲ |
|
|
|
|
Andreas Miethe
| Jörg Sellmeyer
allô Jörg,
cela scheint à qui direkten Übergabe qui Rechteckstruktur dans qui Drawitem-Struktur trop liegen. HH hatte aussi cela Problem chez Ownerdraw-Menüs. pourquoi cela chez mir klappt et chez andern pas ? je n'en sais rien. Habe den Code dahingehend abgeändert, sollte maintenant marcher. |
|
|
| Gruss Andreas ________ ________ ________ ________ _ Profan 3.3 - XProfanX2 Win 95,98,ME,2000,XP,Vista - Win 7 32 / 64 Bit ASUS X93S - Intel Core I7-NVIDIA GForce 540M 8GB Arbeitsspeicher Homepage : [...] | 22.02.2009 ▲ |
|
|
|
|
Jörg Sellmeyer | je hatte encore pas 11.1 sur elle! Steoll doch nochmal den originalen Code rein - peut-être lag es daran. @Horst - quelle Version la hâte Du? |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 22.02.2009 ▲ |
|
|
|
|
Andreas Miethe
| allô Jörg,
ici nochmal cela Original. KompilierenMarqueSéparationHeader-Dateien
$H windows.ph
$H messages.ph
Strukturen
Struct RECT = Left&,Top&,Right&,Bottom&
Struct DRAWITEMSTRUCT = CtlType&,CtlID&,itemID&,itemAction&,itemState&,hwndItem&,hDC&,rcItem!RECT,itemData&
Declare lpdis#,Rect#,h&,WP#
Dim lpdis#,DRAWITEMSTRUCT
var hPic&=create(hNewPic,15,15,$1278FF)
cls ~GetSysColor(~COLOR_BTNFACE)
subClass %hwnd,1
h& = Control(LISTBOX,,~WS_BORDER | ~WS_CHILD | ~WS_VISIBLE | ~LBS_OWNERDRAWFIXED | ~LBS_HASSTRINGS | ~LBS_STANDARD | ~LBS_NOTIFY,10,10,200,200,%hwnd,0,%hInstance,0)
SendMessage(h&, ~LB_SETITEMHEIGHT,0,Makelong(18,0))
Var Item& = AddString(h&,Hallo Welt)
SendMessage(h&,~LB_SETITEMDATA,Item&,hPic&)
Item& = AddString(h&,Hallo Welt 2)
SendMessage(h&,~LB_SETITEMDATA,Item&,hPic&)
AddString(h&,Hallo Welt 3)
Warum geht es mit dem Interpreter erst, wenn ich in die Listbox klicke ?
Als Kompilat funktioniert es !
Habe ich heute ein Brett vorm Kopf ?
Var Ende& = 0
Whilenot Ende&
WaitInput
EndWhile
end
SubClassProc
If SubClassMessage(%hwnd,~WM_DRAWITEM)
lpdis# = &slParam
Var Text$ = GetString$(lpdis#.hwndItem&,lpdis#.itemID&)
Var hbmpPicture& = SendMessage(lpdis#.hwndItem&,~LB_GETITEMDATA, lpdis#.itemID&,0)
Var hdcMem& = ~CreateCompatibleDC(lpdis#.hdc&)
Var hbmpOld& = ~SelectObject(hdcMem&, hbmpPicture&)
lpdis#.rcItem!left&= lpdis#.rcItem!left& + 20
~DrawText(lpdis#.hdc&, Addr(Text$), Len(Text$), lpdis#.rcItem,0)
~BitBlt(lpdis#.hdc&, lpdis#.rcItem!left&-20, lpdis#.rcItem!top&, lpdis#.rcItem!right& - lpdis#.rcItem!left&,lpdis#.rcItem!bottom& - lpdis#.rcItem!top&, hdcMem&, 0, 0, ~SRCCOPY)
~SelectObject(hdcMem&, hbmpOld&)
~DeleteDC(hdcMem&)
Set(WinProc, 1)
EndIf
ENDPROC
|
|
|
| Gruss Andreas ________ ________ ________ ________ _ Profan 3.3 - XProfanX2 Win 95,98,ME,2000,XP,Vista - Win 7 32 / 64 Bit ASUS X93S - Intel Core I7-NVIDIA GForce 540M 8GB Arbeitsspeicher Homepage : [...] | 22.02.2009 ▲ |
|
|
|
|
Jörg Sellmeyer | Mh - seltsam. Im Interpreter knallts pas, dans compilierter forme déjà. Allerdings zeigt chez mir qui Runtime toujours 11.0 à et qui Interpreter 11.1, quoique je alle Fichiers aus dem letzten(?) Update vom 2.12. sur elle habe. |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 22.02.2009 ▲ |
|
|
|
|
Andreas Miethe
| ensuite ist quoi schiefgelaufen chez Deinem Update. mon Runtime zeigt korrekt 11.1 à.
Dateidatum Runtime, Interpreter et Compiler 26.11.2008 11:01 |
|
|
| Gruss Andreas ________ ________ ________ ________ _ Profan 3.3 - XProfanX2 Win 95,98,ME,2000,XP,Vista - Win 7 32 / 64 Bit ASUS X93S - Intel Core I7-NVIDIA GForce 540M 8GB Arbeitsspeicher Homepage : [...] | 22.02.2009 ▲ |
|
|
|
|
Jörg Sellmeyer | Ok - maintenant hab ego aussi. Hatte oublier qc dans den Projekteinstellungen qui neue Runtime anzugeben. Läuft alors jusqu'à sur qui Interpreter-/Runtime-Seltsamigkeit, qui Du dessus erwähnt la hâte. |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 22.02.2009 ▲ |
|
|
|
|
| cela Beispiel zeigt, dass es tant pis ist, dass qui SubClassProc seulement im WaitInput greift.
Werden im Programmablauf zunächst qui Listboxen erzeugt et befüllt, wonach ensuite qui Hauptschleife avec WaitInput erreicht wird.
Weil qui Nouvelles verloren sommes, volonté zunächst aucun Items dargestellt. |
|
|
| |
|
|
|
| Hmpf, aussi si je z.B. wm_drawItem zusätzlich comme UserMessage deklariere um qui Hauptschleife mitzuteilen, dass dans ListBoxen Einträge trop zeichnen wären, ensuite erhalte je (naturellement) weder dans uwnd, ulparam encore uwparam une brauchbare Info - sodass je récente zeichnen pourrait.
Könnte on _nur dedans qui subClassProc et dedans des waitInput addString anweisen sodass qui Einträge aussi angezeigt volonté. :/
je teste la fois, si on wm_command comme UserMessage nutzen peux - sollte oui chez lbs_notfiy versandt volonté avec Handle qui ListBox im ulParam.
Nachtrag: wm_command wird pas ausgelöst de addString - ldr. (aussi) aucun Solution. |
|
|
| |
|
|