begin process at 2010 02 10 03:58:31
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

CreateWindow


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

CreateWindow

vendredi 17 décembre 2004 à 02:13:24 | CreateWindow

Djoobstil

Bonjour,
Est-il possible d'utiliser CreateWindow en mode console (main et non WinMain) ?
Cordialement, Djoobstil
vendredi 17 décembre 2004 à 03:06:53 | Re : CreateWindow

Nebula

Membre Club
Ben oui : une application console est une application Win32.
vendredi 17 décembre 2004 à 11:06:45 | Re : CreateWindow

Djoobstil

Pourtant, je n'arrive pas à le faire générer d'HWND (j'en ai besoin pour les sockets asynchrones).

En fait, je sais pas vraiment comment m'y prendre, je dois plutt faire un CreateDialog ou CreateWindow sachant que j'ai la fentre qui reçoit la réponse de la fonction asynchrone:

LRESULT CALLBACK WSAAsyncProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
{
case WM_WSAASYNC:
if (!WSAGETSELECTERROR(lParam))
puts("WSAAsyncGetHostByAddr success.");
else puts("error");
return 1;
}
return 1;
}

(Code en C).
Cordialement, Djoobstil
vendredi 17 décembre 2004 à 13:39:55 | Re : CreateWindow

Nebula

Membre Club
http://msdn.microsoft.com/library/en-us/winui/winui/windowsuserinterface/windowing/windows/windowfeatures.asp?frame=true#message_only

Et tu gères les messages qui t'intéressent (ainsi que quelques obligatoires pour quitter le programme, WM_DESTROY au minimum).
vendredi 17 décembre 2004 à 18:20:19 | Re : CreateWindow

Djoobstil

Le probleme est que je n'arrive pas a former le HWND, il est toujours à null.
Une idée de la raison ?

Cordialement, Djoobstil
vendredi 17 décembre 2004 à 18:59:20 | Re : CreateWindow

Nebula

Membre Club
Ce code fonctionne chez moi, pioche dedans ce qui te manque :

#include <windows.h>
#include <stdio.h>
#include "assert.h"

#define WND_CLASS TEXT("CONSOLE_WND")

LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
switch (uMsg) {
case WM_MOUSEMOVE:
puts("Ahaha, ca chatouille !");
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
default:
return DefWindowProc(hWnd, uMsg, wParam, lParam);
}
}

int main(void) {
WNDCLASSEX wc;
HWND hWnd;
MSG Msg;
wc.cbSize = sizeof(wc);
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = GetModuleHandle(NULL);
wc.hIcon = NULL;
wc.hCursor = NULL;
wc.hbrBackground = (HBRUSH) (COLOR_WINDOW + 1);
wc.lpszMenuName = NULL;
wc.lpszClassName = TEXT(WND_CLASS);
wc.hIconSm = NULL;
assert(RegisterClassEx(&wc) != 0);
hWnd = CreateWindowEx(WS_EX_APPWINDOW, TEXT(WND_CLASS), TEXT("Une fenêtre en mode console"), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 300, 100, NULL, NULL, wc.hInstance, NULL);
assert(hWnd != NULL);
ShowWindow(hWnd, SW_SHOWNORMAL);
assert(UpdateWindow(hWnd) != 0);
while (GetMessage(&Msg, NULL, 0, 0) > 0) {
if (IsDialogMessage(hWnd, &Msg) == 0) {
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
}
return Msg.wParam;
}
vendredi 17 décembre 2004 à 20:18:31 | Re : CreateWindow

Djoobstil

Parfait, ça marche !
Mais ça soulève un deuxième probleme avec: WSAAsyncGetHostByAddr

Je l'utilise comme suit:

WSAAsyncGetHostByAddr(hwnd, WM_WSAASYNC, (char *)&addr, len, type,
(char *)&listn->hp, sizeof(listn->hp));


il n'appelle pas WndProc, alors que normalement, même en cas d'échec de la résolution de l'host il devrait appeller la fonction.

Cordialement, Djoobstil
vendredi 17 décembre 2004 à 20:44:20 | Re : CreateWindow

Nebula

Membre Club
Hm il l'appelle en cas de succès au moins ?
vendredi 17 décembre 2004 à 21:44:32 | Re : CreateWindow

Djoobstil

oui et en cas de succès, lParam est null.
Cordialement, Djoobstil
vendredi 17 décembre 2004 à 22:53:51 | Re : CreateWindow

aardman

Membre Club
Salut,

HANDLE WSAAsyncGetHostByAddr(
HWND hWnd,
unsigned int wMsg,
const char* addr,
int len,
int type,
char* buf,
int buflen
);

hWnd: handle de fenetre valide.
wMsg: message qui sera envoyé a la fenetre.
addr: pointeur sur un DWORD qui contient l'adresse a resoudre (format ipv4).
len: longueur de l'adresse, c'est a dire sizeof(DWORD).
type: SOCK_STREAM
buf: buffer vide, déclaré en global, d'une taille de MAXGETHOSTSTRUCT octets. (un tableau de BYTE par exemple).
buflen: taille du buffer, c'est a dire MAXGETHOSTSTRUCT.

Quand tu recois le message, tu peux afficher le numéro de l'erreur (HIWORD(lParam))
S'il n'y a pas d'erreur, tu peux déclarer un pointeur struct hostent* et le caster avec l'adresse du tableau de byte.
Et ensuite tu peux acceder aux champs de la structure hostent..

1 2 3

Cette discussion est classée dans : font, tahoma, createwindow


Répondre à ce message

Sujets en rapport avec ce message

probleme de boucle!!! :( [ par matteokun ] matteokunBonjour,Je suis débutant en C++ et j'essai de réaliser le jeu du pendu en C++ mais je rencontre quelques difficultées sur une boucle...Biensu trivial pursuit en langage c [ par blainchris ] chrisun grand merci pour gds75 pour son coup de main, mais si quelqu' un avait un autre programme en c du trivial pursuit avec une interface graphique A propos de Builder 4 [ par franclin ] erreur:Regle du projet introuvable a l`ouverture d`un fichier a quoi est-il du? ShellExecute bloquant [ par garslouche ] Bonjour,je voudaris lancer un programme et ne récupérer la main que que celui-ci est terminé.Y a-t-il une sorte de ShellExecute bloquant ?Merci.On ne Grand débat [ par garslouche ] Bonjour à tous,je voudrais avoir l'avis d'un maximum de gens sur la question suivante :Quand vous programmez comment choisissez-vous le nom des variab Opérateur postfixé [ par garslouche ] Bonjour à tous,est-ce quelqu'un asit s'il est possible de définir un opérateur unaire post-fixé ?Par exemple pour faire factorielleMerciOn ne force pa Les fonctions d'une DLL [ par garslouche ] Salut,je voudrais pourvoir connaitre les fonctions externes d'une DLL (comme le fait l'outil Depends de VC++).Idéalement j'aimerais aussi voir le type Form et PID [ par garslouche ] Bonjour,j'ai le handle d'une fenêtre et je voudrais récupérer le ProcessID de l'appli qui l'a créée.Est-ce possible ? Si oui, comment ?Merci !On ne fo Propriétés [ par garslouche ] Bonjour à tous,je souhaite afficher la fenêtre de propriétés d'un fichier tout comme le fait Windows.Eventuellement la même chose pour un répertoire s Makefile VC++ 6 [ par garslouche ] Bonjour,j'ai exporté le makefile d'un projet. Je récupère donc un fichier .mak que j'ai ensuite modifié.Comment faire pour que VC++ utilise ce makefil


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,187 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales