wie komm´ ich an ´n MCI-Fenster in ´ner Hook-Proc ?

Windowsspezifisches Forum , API ,..
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
sibru
Beiträge: 265
Registriert: 15.09.2004 18:11
Wohnort: hamburg

wie komm´ ich an ´n MCI-Fenster in ´ner Hook-Proc ?

Beitrag von sibru »

Hallo,

ich will in ´nem PathRequester u.A. den Verzeichniss-Baum bis unter den
Fenster-Titel vergrößern (Fenster-Titel (default "Ordner suchen") wird schon
durch den 1. PB-Parameter ersetzt).
Hierzu hab´ ich ´ne Hook-Proc gebaut, die bereits Titel und Promt vertauscht.
Nur komm´ ich nicht an den Verzeichniss-Baum, der als MCI-Fenster
angelegt wird.

Hat jemand ´ne Ahnung, wie ich ´drankomm ?

Hier mal die Aufbau-Msg´s, die die Hook-Proc durchlaufen:

Code: Alles auswählen

#WM_WINDOWPOSCHANGING    lPara=1243180
   0 / 0, 0 * 0
#WM_WINDOWPOSCHANGED    lPara=1243180
   386 / 1, 432 * 413
#WM_ACTIVATEAPP    wPara=1
#WM_NCACTIVATE    lPara=[jaPBe]  wPara=1
#WM_ACTIVATE  #WN_BAD_HANDLE    lPara=[jaPBe]  wPara=1
#WM_SHOWWINDOW    wPara=1
#WM_WINDOWPOSCHANGING    lPara=1243640
   0 / 0, 0 * 0
#WM_GETTEXT    lPara=1240756  wPara=510
#WM_NCPAINT    wPara=1
#WM_GETTEXT    lPara=3743720  wPara=100
#WM_CTLCOLORDLG    lPara=[Ordner suchen]  wPara=33621093
#WM_ERASEBKGND    wPara=33621093
#WM_WINDOWPOSCHANGED    lPara=1243640
   386 / 1, 432 * 413
#WM_PAINT  
#WM_CTLCOLORSTATIC    lPara=[Fenster-Titel]  wPara=33621093
#WM_GETTEXT    lPara=3746784  wPara=[MCI command handling window]
#WM_GETTEXT    lPara=1239908  wPara=510
#WM_SETTEXT    lPara=3753248
#WM_CTLCOLORSTATIC    lPara=[Ordner suchen]  wPara=1644233770
#WM_CTLCOLORSTATIC    lPara=[Ordner:]  wPara=1644233770
#WM_CTLCOLOREDIT    lPara=[Arbeitsplatz]  wPara=1845560549
#WM_CTLCOLOREDIT    lPara=[Arbeitsplatz]  wPara=1845560549
#WM_CTLCOLORBTN    lPara=[Neuen &Ordner erstellen]  wPara=1644233770
#WM_NOTIFY    lPara=1242992  wPara=14150
  Code=#NM_CUSTOMDRAW  , hWndFrom=1180152, IdFrom=14150
  401 / 368,  147 x 28
#WM_NOTIFY    lPara=1242992  wPara=14150
  Code=#NM_CUSTOMDRAW  , hWndFrom=1180152, IdFrom=14150
  401 / 368,  147 x 28
#WM_CTLCOLORBTN    lPara=[OK]  wPara=1644233770
#WM_NOTIFY    lPara=1242992  wPara=1
  Code=#NM_CUSTOMDRAW  , hWndFrom=3539538, IdFrom=1
  604 / 368,  95 x 28
#WM_NOTIFY    lPara=1242992  wPara=1
  Code=#NM_CUSTOMDRAW  , hWndFrom=3539538, IdFrom=1
  604 / 368,  95 x 28
#WM_CTLCOLORBTN    lPara=[Abbrechen]  wPara=1644233770
#WM_NOTIFY    lPara=1242992  wPara=2
  Code=#NM_CUSTOMDRAW  , hWndFrom=1704552, IdFrom=2
  706 / 368,  95 x 28
#WM_NOTIFY    lPara=1242992  wPara=2
  Code=#NM_CUSTOMDRAW  , hWndFrom=1704552, IdFrom=2
  706 / 368,  95 x 28
#WM_NCHITTEST    lPara=14877069
   MousePos=397 / 227
#WM_GETTEXT    lPara=3752808  wPara=100
Bild Bild
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

Ich kapiers nicht ...

Hast vielleicht auch mal was ausführbares?
Windows 10 Pro, 64-Bit / Outtakes | Derek
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Was ist ein MCI-Fenster?
Kann man damit Musik machen :mrgreen:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
sibru
Beiträge: 265
Registriert: 15.09.2004 18:11
Wohnort: hamburg

Beitrag von sibru »

Es wird ein Pfadrequester aufgebaut... und dann möchte ich das Verzeichniss-Fenster, das als MDI aufgebaut ist, vergrößern.

Code: Alles auswählen

Global ReqHook, Req_PromptID, Req_OrgProc

Procedure Req_CallBack(hwnd.l, msg.l, wParam.l, lParam.l)
  Protected Titel$, Prompt$
  Protected rect.RECT
  result.l = CallWindowProc_(Req_OrgProc, hwnd, msg, wParam, lParam)
  ;WinMsg_Analyse(hwnd, msg, wParam, lParam) ;<-- generiert das Protokoll vom letzten Post (siehe oben)
  Select msg
    Case #WM_CTLCOLORSTATIC
      If Req_PromptID = 0 : Req_PromptID = lParam ;nur beim 1. #WM_CTLCOLORSTATIC !!! (das ist die Baum-Überschrift...)
        Titel$ = Space(500) : GetWindowText_(hwnd, @Titel$, 500) ;Fenster-Titel ("Ordner suchen")
        Prompt$ = Space(500) : GetWindowText_(Req_PromptID, @Prompt$, 500) ;Prompt = Baum-Überschrift
        SetWindowText_(hwnd, @Prompt$) ;Überschrift wird Fenster-Titel...
        SetWindowText_(Req_PromptID, @Titel$) ;... und umgekehrt
      EndIf
  EndSelect
  ProcedureReturn result
EndProcedure

Procedure Req_CBTProc(nCode.l, wParam.l, lParam.l)
  result.l = CallNextHookEx_(ReqHook, nCode, wParam, lParam)
  If nCode = #HCBT_CREATEWND ;vor Aufbau des Requesters
    * cbt_cw.CBT_CREATEWND = lParam
    * lpcs.CREATESTRUCT = * cbt_cw\lpcs
    ;If *lpcs\hWndParent = WindowID()  And
    If * lpcs\lpszClass = 32770 ;unser Requester ?
      * lpcs\y = 1 ;ganz oben auf´m Monitor positionieren
    EndIf
    result = 0
  EndIf
  If nCode = #HCBT_ACTIVATE ;Requester wird aktiviert
    Req_OrgProc = SetWindowLong_(wParam, #GWL_WNDPROC, @Req_CallBack())
    If ReqHook : UnhookWindowsHookEx_(ReqHook) : ReqHook = 0 : EndIf ;Proc trägt sich selbst aus
    result = 0
  EndIf
  ProcedureReturn result
EndProcedure

Procedure.s PfadRequester(PR_Titel$, PR_StartPfad$)
  #WH_CBT = 5
  ReqHook = SetWindowsHookEx_(#WH_CBT, @Req_CBTProc(), 0, GetCurrentThreadId_())
  ProcedureReturn PathRequester(PR_Titel$, PR_StartPfad$)
EndProcedure

;OpenWindow(0,0,0,0,0,0,"")
PfadRequester("Fenster-Titel", "")
Bild Bild
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

Kapier es immer noch nicht ...

Was hat ein PathRequester mit MDI zu tun? :?
Windows 10 Pro, 64-Bit / Outtakes | Derek
Antworten