Accueil > Forum > > > > Ancien code - CreateWindowEx ne fonctionne pas
Ancien code - CreateWindowEx ne fonctionne pas
dimanche 26 octobre 2003 à 02:44:28 |
Ancien code - CreateWindowEx ne fonctionne pas

TehWan
|
Je ne comprends vraiment pas pourquoi CreateWindowEx ne fonctionne pas. Je code en ancien code avec MASM32. J'ai même essayé la nouvelle syntaxe (invoke) et cela ne fonctionne pas plus. Peut-être que le code va vous en dire plus... .386 .model flat, stdcall option casemap:none
include \masm32\include\windows.inc include \masm32\include\kernel32.inc include \masm32\include\user32.inc include \masm32\include\gdi32.inc
includelib \masm32\lib\kernel32.lib includelib \masm32\lib\user32.lib includelib \masm32\lib\gdi32.lib
.data? msg MSG <?> wc WNDCLASS <?>
.data hWnd dword 0 hInstance dword 0
hWin dword 0 uMsg dword 0 lParam dword 0 wParam dword 0
szDisplayName byte "Wolf Rules", 0 szClassName byte "Wolf", 0
.code start: ;WinMain push 0 call GetModuleHandle mov hInstance, eax
mov wc.style, CS_HREDRAW or CS_VREDRAW lea eax, WndProc mov wc.lpfnWndProc, eax mov wc.cbClsExtra, 0 mov wc.cbWndExtra, 0 mov wc.lpszMenuName, 0 lea eax, szClassName mov wc.lpszClassName, eax push hInstance pop wc.hInstance
push 0 call CreateSolidBrush mov wc.hbrBackground, eax
push IDI_APPLICATION push 0 call LoadIcon mov wc.hIcon, eax
push IDC_ARROW push 0 call LoadCursor mov wc.hCursor, eax
lea eax, wc push eax call RegisterClass
push 0 push hInstance push 0 push 0 push 600 push 800 push 0 push 0 push WS_OVERLAPPED or WS_VISIBLE lea eax, szDisplayName push eax lea eax, szClassName push eax push WS_EX_WINDOWEDGE call CreateWindowEx mov hWnd, eax
push SW_SHOW push hWnd call ShowWindow
push hWnd call UpdateWindow
StartLoop: push 0 push 0 push 0 lea eax, msg push eax call GetMessage
cmp eax, 0 je ExitLoop
lea eax, msg push eax call TranslateMessage
lea eax, msg push eax call DispatchMessage
jmp StartLoop
ExitLoop: mov eax, msg.wParam ret ;WinMain End
WndProc: mov eax, [esp+4] mov hWnd, eax
mov eax, [esp+8] mov uMsg, eax
mov eax, [esp+12] mov wParam, eax
mov eax, [esp+16] mov lParam, eax
cmp uMsg, WM_CREATE je _CREATE
cmp uMsg, WM_DESTROY je _DESTROY
cmp uMsg, WM_COMMAND je _COMMAND
jmp _END
_CREATE: push hWin pop hWnd jmp _END
_DESTROY: push 0 call PostQuitMessage jmp _END
_COMMAND: mov eax, wParam jmp _END
_END: push lParam push wParam push uMsg push hWin call DefWindowProc ret ;WndProc End
end start
|
Avec des compares (cmp) et des jumps (je et jmp), j'ai pu déterminer ce qui ne fonctionnait pas. Pourtant, CreateWindowEx fonctionnait plus tôt. Pourriez-vous me dire ce qui ne fonctionne pas dans mon code? Merci. -- Wolf -- NB: Je ne veux pas être méchant mais les débutants qui vont me dire que je n'ai pas de procédure ou que c'est à cause du déroulement linéaire feraient mieux de retourner étudier les bases du assembly.
|
|
dimanche 26 octobre 2003 à 05:28:47 |
Re : Ancien code - CreateWindowEx ne fonctionne pas

TehWan
|
Je l'ai trouvé! Dans le WndProc, simplement changer mov hWnd, eax pour mov hWin, eax
-- Wolf --
|
|
Cette discussion est classée dans : mov, wc, push, call, eax
Répondre à ce message
Sujets en rapport avec ce message
BeginPaint code débutant [ par TRAX44 ]
Bonjour, le problème est tout simple je comprends absolument pas ce qui marche pas. Le "programme" est censé créer une fenêtre est afficher du texte e
mon programme bloque [ par rhumsek ]
slt j'ai améliore mon programme mais il provoque une erreure lorsdu calcul de la somme des entiers saisi (sommeentier)POURTANT il exécute bien les de
LecteurEstDvd asm inline [ par AlexMAN ]
Bonjour, Voila j'ai un ptit pb au nivo, je pense, de l'appel de la fonction DeviceIoControl, le code : //Fonction Cint __stdcall LecteurEstDvd(char *p
HELP ! :'( [ par TheHacker ]
Salut j'ai un probleme: voici mon code, il fonctionne correctement, activer le programme vous verres qu'a la fin i laffiche un MessageBox avec marqué
Problème de création de Dialog [ par bni ]
Bonjour,Suivant un tutoriel disponible sur le net, j'ai essayé de creer une boite de dialogue. Le seul problème, c'est qu'il n'y a qu'une console qui
Quels sont les parametres (nombre, taille...) [ par Renfield ]
Bonjour,on peut appeler RunDll32 pour executer des fonctions contenues dans des dll...j'aimerais m'affranchir de cette étape, mais j'ai pour cela beso
Une mémoire "read" [ par msteve ]
Bonsoir, Je suis débutant et j'ai recopié un programme test. Je parviens à l'assembler, puis à créer un .exe ; quend je lance l'exe j'obtiens la boîte
Assembleur et tableau + linux + bof [ par flocic ]
Bonjour, J'ai un petit pb de comprehension, j'ai un programme qui deborde au bout 44 octet à cause d'un depassement d ela taille du tableau. Mais ce
declaration externe + news Kmdkit [ par patatalo ]
salut, du nouveau pour les fondus de ring 0 sous NT: http://www.website.masmforum.com/tutorials/kmdtute/ ( kmd = kernel mode drivers ) avec masm32,
exception 13 lors du scan memoire haute [ par patatalo ]
salut, pourquoi ce code de detection de memoire en mode 32 bits sans paging me donne une exception 13 sur certaines cartes meres ( ASUS ) a l'adresse
Livres en rapport
|
Derniers Blogs
[TECHDAYS2012] OUI J'Y SERAI![TECHDAYS2012] OUI J'Y SERAI! par JeremyJeanson
Bonsoir, Certes, je l'annonce avec un peu de retard, mais je serai effectivement au Techdays demain. Comme l'an dernier, je participerai au programme ATE (Ask The Expert). Si vous avez des questions Workflow, WCF, AppFabric ou plus généralement .net, n'hé...
Cliquez pour lire la suite de l'article par JeremyJeanson TFS INTEGRATION TOOLS - SUIVI DES SYNCHRONISATIONS AVEC REPORTING SERVICESTFS INTEGRATION TOOLS - SUIVI DES SYNCHRONISATIONS AVEC REPORTING SERVICES par vfabing
Afin de s'assurer du bon fonctionnement des différentes synchronisations effectuées par les TFS Integration Tools, 2 rapports sont présents dès l'installation. Il suffit alors d'effectuer les manipulations suivantes pour pouvoir les visualiser : Loca...
Cliquez pour lire la suite de l'article par vfabing CSS CONTENT STATE SELECTORS (PERSONNAL DRAFT)CSS CONTENT STATE SELECTORS (PERSONNAL DRAFT) par FREMYCOMPANY
Bonjour à tous, Je viens de publier une proposition comprenant 5 pseudo-classes pour le CSS Working Group ayant trait à l'état de chargement d'un élément (ex: IMG,VIDEO,AUDIO,OBJECT pour l'HTML.). Si le c½ur vous en dit, vous pouvez retrouver cette p...
Cliquez pour lire la suite de l'article par FREMYCOMPANY MBA : POURQUOI FAIRE ET COMMENT LE CHOISIR ?MBA : POURQUOI FAIRE ET COMMENT LE CHOISIR ? par ROMELARD Fabrice
Formation initiale Durant la formation, le découpage classique est le suivant (je donnerai les équivalences Suisse lorsque je les connaîtrais) : Ecole primaire jusqu'au Collège : Formation générale permettant d'obtenir les méthodes...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice Y'A DES ERREURS QUI PEUVENT RENDRE LE DéVELOPPEUR VIOLENTY'A DES ERREURS QUI PEUVENT RENDRE LE DéVELOPPEUR VIOLENT par Aleks
Quand on a ce genre d'erreur sans log :
Et bas on a juste envie de choper le gas de Microsoft qu'a développé ça et lui foutre des baffes de Coboye ! ...
Cliquez pour lire la suite de l'article par Aleks
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|