ich hatte von Pablo eine Antwort bekommen mit der ich nichts anzufangen wusste :
hm ... und dann habe ich angefangen zu googlen ...The funny thing of this is that to use a ListView control you don't need any ActiveX, it works perfect just with CreateWindowEx()
mit Hilfe der ot4xb hab ich dann so was zusammen gebaut
Code: Alles auswählen
#define _OT4XB_MAP_WAPIST_FUNC_
#include "ot4xb.ch"
#include "CommCtrl_constants.ch"
#include "WinUser_constants.ch"
#include "Appevent.ch"
#include "DLL.CH"
DLLFUNCTION SendMessageA( nHwnd, nCmd, wParam, lParam) ;
USING STDCALL FROM USER32.DLL
STATIC DLLFUNCTION CreateWindowExA( dwExStyle, lpClassName, lpWindowName, ;
dwStyle, x,y, nWidth, nHeight, hWndParent, ;
hMenu, hInstance, lpParam ) ;
USING STDCALL ;
FROM USER32.DLL
STATIC DLLFUNCTION GetModuleHandleA( lpModuleName ) ;
USING STDCALL ;
FROM KERNEL32.DLL
STATIC DLLFUNCTION GetWindowLongA( hWnd, nIndex ) ;
USING STDCALL ;
FROM USER32.DLL
proc appsys()
RETURN
proc main()
LOCAL oListView
LOCAL nEvent, oXbp, mp1, mp2
LOCAL oDlg
LOCAL aSize := {500,500}
LOCAL aPos := {0,0}
LOCAL nStyles
LOCAL nHWND
LOCAL aaSize
LOCAL oItem
LOCAL nWindowProc
oDlg := XbpDialog():New(AppDesktop() ,,aPos,aSize,,.T.)
oDlg:tasklist := .T.
oDlg:title := "ListView Control"
oDlg:icon := 1
oDlg:Create()
CenterControl(oDlg)
aaSize := oDlg:drawingArea:currentsize()
nStyles := (WS_CHILD+WS_VISIBLE)
nHWND := CreateWindowExA( 0,TRACKBAR_CLASS, 0,nStyles,;
0, 0, aaSize[1],aaSize[2],;
oDlg:drawingArea:GetHWND(), 0, ;
GetModuleHandleA(0), 0 )
IF nHWND != 0
nWindowProc := GetWindowLongA( nHWND, GWL_WNDPROC )
oDlg:drawingArea:SetHWND( nHWND, .T. )
ENDIF
SendMessageA(nHWND,TBM_SETRANGE,0,MakeLong(0,10)) //
* SendMessageA(nHWND,TBM_SETPOS,5,0) //
* SendMessageA(nHWND,TBM_SETPOS,0,5) //
nEvent := xbe_None
WHILE nEvent != xbeP_Close
nEvent := AppEvent ( @mp1, @mp2, @oXbp )
oXbp:HandleEvent ( nEvent, mp1, mp2 )
IF nEvent == xbeP_Quit
QUIT // AppQuit()
ENDIF
ENDDO
RETURN
das ganze ist nun ohne *.OCX und das "Prinzip" wird ja auch beim Progressbar des "Xbase++ SP2 Pack" benutzt.
nun ist ja bekannt das der SP2 Progressbar schneller ist als die MsComCtl.OCX Lösung.
bei einem "TRACKBAR" macht das wohl nicht aus aber das selbe "müsste" ja dann auch mit ListView gehen ... wie Pablo sagte.
wer es nicht erwarten kann ( wie ich ) der kann sich ja mal diese URL ansehen http://winapi.foosyerdoos.org.uk/info/common_cntrls.php
die Demo Sourcen sind für
gedacht//BCC55 - Link with comctl32.lib
//MINGW - Link with libcomctl32.a (-lcomctl32)
//MSVC - Link with comctl32.lib
Nachtrag : Umfrage