problème avec CreateWindowEx ?

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
celtic88
Messages : 309
Inscription : sam. 12/sept./2015 14:31
Localisation : Alger

problème avec CreateWindowEx ?

Message par celtic88 »

slt tout le monde :)

alors mon problème :( : c'est que j'essaie de crée un "widow" avec un 'class name' bien identique ! tous la marche très bien la fenetre est bien crée mai elle reste blocker et je sai pas pour quoi !

merci pour votre aide bien apprécié :)

Code : Tout sélectionner

Global classname.s="testttttt",hTestWndProc

Procedure TrstWndProc(hWnd, uMsg, wParam, lParam)
  Select uMsg
    Case #WM_PAINT
      hDC = GetDC_(hWnd) 
      tRect.RECT
      GetClientRect_(hWnd,@tRect) 
      ValidateRect_(hWnd, @tRect) 
      aRet = FillRect_(hDC, @tRect, GetStockObject_(#WHITE_BRUSH) )
      iRet = DrawText_(hDC, @"Test", -1,@tRect, (#DT_SINGLELINE|#DT_CENTER|#DT_VCENTER))
      ReleaseDC_(hWnd, hDC)
    Case #WM_CLOSE
      DestroyWindow_(hWnd)
      UnregisterClass_(classname,GetModuleHandle_(#NUL))
      End
    Case #WM_DESTROY
      ;PostQuitMessage_(0)
    Default
      ProcedureReturn DefWindowProc_(hWnd, uMsg, wParam, lParam) 
  EndSelect
  ProcedureReturn 0
EndProcedure

hicon=LoadIcon_(0,#IDI_APPLICATION)
hcursor=LoadCursor_(0,#IDC_ARROW)
classst.WNDCLASSEX
classst\cbSize= SizeOf(WNDCLASSEX)
classst\style=(#CS_VREDRAW| #CS_HREDRAW)
classst\lpfnWndProc=@TrstWndProc()
classst\hInstance=GetModuleHandle_(#NUL)
classst\hIcon=hicon
classst\hCursor=hcursor
classst\hbrBackground=GetStockObject_(#WHITE_BRUSH)
classst\lpszClassName=@classname
classst\hIconSm=hicon
hTestWndProc=RegisterClassEx_(@classst)

hTest=CreateWindowEx_(0,classname,"Test 123",#WS_OVERLAPPEDWINDOW, #CW_USEDEFAULT, 0, #CW_USEDEFAULT, 0, 0, 0, GetModuleHandle_(#NUL), 0)
ShowWindow_(hTest,#SW_SHOW)

While #True
  Delay(9999)
Wend
.....i Love Pb :)
Avatar de l’utilisateur
celtic88
Messages : 309
Inscription : sam. 12/sept./2015 14:31
Localisation : Alger

Re: problème avec CreateWindowEx ?

Message par celtic88 »

@Spock merci pour ta réponse :)!

en fait je cherche a crée un fenêtre avec la fonction "CreateWindowEx https://msdn.microsoft.com/en-us/librar ... s.85).aspx " ,pour plus d option et pour les avantages qu'elle me donne cette "fonction" ...,bon voila ma question c est pas comment crée un fenêtre !,mai pour quoi mon programme ce bloque et re-merci.
.....i Love Pb :)
Avatar de l’utilisateur
celtic88
Messages : 309
Inscription : sam. 12/sept./2015 14:31
Localisation : Alger

Re: problème avec CreateWindowEx ?

Message par celtic88 »

ahhh il faux crée un fenêtre avec "OpenWindow" avan,, pour que ça marche c est un peu bizarre sa tu l trouve non?
.....i Love Pb :)
Avatar de l’utilisateur
celtic88
Messages : 309
Inscription : sam. 12/sept./2015 14:31
Localisation : Alger

Re: problème avec CreateWindowEx ?

Message par celtic88 »

bon je programme avec d autre language est je veut Juste apprendre le pb question de sa facilite les chouse
.....i Love Pb :)
Avatar de l’utilisateur
celtic88
Messages : 309
Inscription : sam. 12/sept./2015 14:31
Localisation : Alger

Re: problème avec CreateWindowEx ?

Message par celtic88 »

OOK MERCI :)
.....i Love Pb :)
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Re: problème avec CreateWindowEx ?

Message par nico »

Je ne crois pas que CreateWindowEx ai besoin d'une fenêtre parente, c'est une option.

Si tu codes avec des API, les fenêtres; les fonctions de PureBasic deviennent inutiles; même si PureBasic n'offre pas toutes les fonctionnalités pour les fenêtres et contrôles, tu peux quand même les rajouter avec des API, genre SetWindowLongPtr par exemple.

C'est une très mauvaise idée de passer par des API pour créer tes fenêtres, tu vas perdre en simplicité.

Sur Purearea, tu as des exemples:
http://www.purearea.net/pb/english/index.htm

Code : Tout sélectionner

; English forum:
; Author: Unknown (updated for PB4.00 by blbltheworm)
; Date: 31. March 2003
; OS: Windows
; Demo: No

Procedure WindowCallback(Window, Message, wParam, lParam) 
  Select Message 
    Case #WM_CLOSE 
      If MessageBox_(Window, "Wirklich beenden?", "EXIT", #MB_YESNO) = #IDYES 
        DestroyWindow_(Window) 
      Else 
        Result  = 0 
      EndIf 
    Case #WM_DESTROY 
      PostQuitMessage_(0) 
      Result  = 0 
    Default 
      Result  = DefWindowProc_(Window, Message, wParam, lParam) 
  EndSelect 
  ProcedureReturn Result 
EndProcedure 

#Style  = #WS_VISIBLE | #WS_BORDER | #WS_SYSMENU 
#StyleEx  = #WS_EX_TOOLWINDOW ;| #WS_EX_OVERLAPPEDWINDOW 

WindowClass.s  = "MeinFenster" 
wc.WNDCLASSEX 
wc\cbsize  = SizeOf(WNDCLASSEX) 
wc\lpfnWndProc  = @WindowCallback() 
wc\hCursor  = LoadCursor_(0, #IDC_CROSS); #IDC_ARROW   = Arrow 
; #IDC_SIZEALL = Size Arrow 
; #IDC_CROSS   = Cross 
wc\hbrBackground  = #COLOR_WINDOW + 1;CreateSolidBrush_(RGB($8F,$8F,$8F)) 
wc\lpszClassName  = @WindowClass 
RegisterClassEx_(@wc) 

hWndMain  = CreateWindowEx_(#StyleEx, WindowClass, "Test-Window", #Style, 10, 10, 200, 200, 0, 0, 0, 0) 
CreateWindowEx_(0, "Static", "", #WS_CHILD | #WS_VISIBLE | $12, 9, 9, 102, 22, hWndMain, 0, 0, 0) 
CreateWindowEx_(0, "Button", "Button 1", #WS_CHILD | #WS_VISIBLE, 10, 10, 100, 20, hWndMain, 0, 0, 0) 

ShowWindow_(hWndMain,  #SW_SHOWDEFAULT) 
UpdateWindow_(hWndMain); 

While GetMessage_(msg.MSG, #Null, 0, 0 ) 
  TranslateMessage_(msg) 
  DispatchMessage_(msg) 
Wend
Avatar de l’utilisateur
celtic88
Messages : 309
Inscription : sam. 12/sept./2015 14:31
Localisation : Alger

Re: problème avec CreateWindowEx ?

Message par celtic88 »

est ca marche lollll par ici http://www.winprog.org/tutorial/simple_window.html

Code : Tout sélectionner

Global classname.s="test_best",hTestWndProc,hTest,Idbout1=1003,Idbout2=1004,IDC_MAIN_STATUS=1005
Procedure LoWord(value)
  ProcedureReturn value & $FFFF
EndProcedure
Procedure HiWord(value)
  ProcedureReturn value >> 16 & $FFFF
EndProcedure
Procedure TrstWndProc(hWnd, uMsg, wParam, lParam)
  Select uMsg
    Case #WM_COMMAND
      Select LoWord(wParam)
        Case Idbout1
          MessageBox_(hWnd,"vous avez cliqué sur le bouton 1","",32)
        Case Idbout2
          MessageBox_(hWnd,"vous avez cliqué sur le bouton 2","",32)
      EndSelect
      ;Debug Str(LoWord(wParam)) + "  " + Str(HiWord(wParam)) + "  " + Str(lParam)
    Case #WM_PAINT
      spaint.PAINTSTRUCT
      hDC = BeginPaint_(hWnd,@spaint) 
      tRect.RECT
      GetClientRect_(hWnd,@tRect) 
      DrawText_(hDC, @classname, -1,@tRect, (#DT_SINGLELINE|#DT_CENTER|#DT_VCENTER))
      EndPaint_(hWnd,@spaint) 
    Case #WM_CLOSE
      DestroyWindow_(hWnd)
      UnregisterClass_(classname,hTestWndProc)
      End
    Case #WM_DESTROY
      ;PostQuitMessage_(0)
    Case #WM_SIZE
      SendMessage_(GetDlgItem_(hWnd, IDC_MAIN_STATUS), #WM_SIZE, 0, 0)
    Default
      ProcedureReturn DefWindowProc_(hWnd, uMsg, wParam, lParam) 
  EndSelect
  ProcedureReturn 0
EndProcedure

Procedure WinThread(*avooi) 
  
  hicon=LoadIcon_(0,#IDI_INFORMATION)
  hcursor=LoadCursor_(0,#IDC_HAND)
  
  classst.WNDCLASSEX
  With classst
    \cbSize= SizeOf(WNDCLASSEX)
    \style=(#CS_VREDRAW| #CS_HREDRAW)
    \lpfnWndProc=@TrstWndProc()
    \hInstance=GetModuleHandle_(#NUL)
    \hIcon=hicon
    \hCursor=hcursor
    \hbrBackground=GetStockObject_(#WHITE_BRUSH)
    \lpszClassName=@classname
    \lpszMenuName=3
    \hIconSm=hicon
  EndWith
  
  hTestWndProc=RegisterClassEx_(@classst)
  
  hTest=CreateWindowEx_(#WS_EX_TOPMOST,classname,"Test 123",#WS_OVERLAPPEDWINDOW, #CW_USEDEFAULT, 50,#CW_USEDEFAULT,  50, 0, 0, GetModuleHandle_(#NUL), 0)
  hwndbout= CreateWindowEx_( 0,"Button", "bouton 1", #WS_CHILD | #WS_VISIBLE, 10, 10, 100, 20, hTest, Idbout1, GetModuleHandle_(#NUL), 0) 
  CreateWindowEx_(0, "Button", "bouton 2", #WS_CHILD | #WS_VISIBLE, 110, 10, 100, 20, hTest, Idbout2, GetModuleHandle_(#NUL), 0) 
  status_handle=CreateWindowEx_(0, "msctls_statusbar32", "", #WS_CHILD | #WS_VISIBLE, 0, 0, 0, 0, hTest, IDC_MAIN_STATUS, GetModuleHandle_(#NUL), 0)   
  Dim status_parts(2)
  status_parts(0)=200
  status_parts(1)=100+status_parts(0)
  status_parts(2)=100+status_parts(1)
  SendMessage_(status_handle, #SB_SETPARTS, 3, @status_parts())  
  SendMessage_(status_handle, #SB_SETTEXT, 0, @"Ready")
  SendMessage_(status_handle, #SB_SETTEXT, 1, @"For test")  
  SendMessage_(status_handle, #SB_SETTEXT, 2, @"Oky")   
  #SB_SETICON = #WM_USER + 15
  SendMessage_(status_handle, #SB_SETICON, 2, hicon)
  ShowWindow_(hTest,#SW_SHOW)
  Msg.MSG
  While GetMessage_(@Msg, hTest, 0, 0) > 0 : DispatchMessage_(@Msg) : Wend
  
EndProcedure


Thread = CreateThread_( #Null, #Null, @WinThread(), #Null, #Null, #Null)

While #True
  Sleep_(999999999)
Wend
Dernière modification par celtic88 le lun. 14/sept./2015 15:02, modifié 5 fois.
.....i Love Pb :)
Avatar de l’utilisateur
celtic88
Messages : 309
Inscription : sam. 12/sept./2015 14:31
Localisation : Alger

Re: problème avec CreateWindowEx ?

Message par celtic88 »

mico j ai pas veu ton poste merci a vous j apprend beaucoup avec vous :)
.....i Love Pb :)
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Re: problème avec CreateWindowEx ?

Message par nico »

Peut être que Celtic est un habitué du langage C, cela lui permettrait de convertir du code C plus facilement et d'utiliser des librairies propre à PureBasic.
Avatar de l’utilisateur
celtic88
Messages : 309
Inscription : sam. 12/sept./2015 14:31
Localisation : Alger

Re: problème avec CreateWindowEx ?

Message par celtic88 »

Spock,
oui c est tree tree simple, mai la dans ce section de débutants en chercher a progresser et comprendre comment les chose ce passe pour l apprendre et pour quoi pas le modifie et donner ton propre désire :) ,et comme tu sais pb ne propos pas a tout les fonctions de windows des raccourci comme "OpenWindow" il faux que tu débrouille tout seul et voila location d apprendre ;)

salutations à vous.
.....i Love Pb :)
Avatar de l’utilisateur
celtic88
Messages : 309
Inscription : sam. 12/sept./2015 14:31
Localisation : Alger

Re: problème avec CreateWindowEx ?

Message par celtic88 »

loooooool omg what this! mai moi je connais pas le chinois :lol:
.....i Love Pb :)
Avatar de l’utilisateur
celtic88
Messages : 309
Inscription : sam. 12/sept./2015 14:31
Localisation : Alger

Re: problème avec CreateWindowEx ?

Message par celtic88 »

pb un puissant langage,, toujours je pence a son créateur mai ce mec est pure genie!!!


un tree Grand Respect pour son createur
.....i Love Pb :)
Avatar de l’utilisateur
celtic88
Messages : 309
Inscription : sam. 12/sept./2015 14:31
Localisation : Alger

Re: problème avec CreateWindowEx ?

Message par celtic88 »

Pure basic = La puissance en toute simplicité
.....i Love Pb :)
Avatar de l’utilisateur
celtic88
Messages : 309
Inscription : sam. 12/sept./2015 14:31
Localisation : Alger

Re: problème avec CreateWindowEx ?

Message par celtic88 »

mai J'arrive pas à le comprendre pour quoi ce puissant langage n arrive pas a avoir son statue comme un langage de haute niveau est avoir plus de programmeur quil le pratique ,et ci en le compare avec d autre langage comme vb ou dephii le Pb son sor tree tree bien avec eux,, je dirais même un peut mieux que delphi a mon avis et largement contre le vb.net !! :)
.....i Love Pb :)
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: problème avec CreateWindowEx ?

Message par Micoute »

Je n'aurais pas mieux dis !
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Répondre