Author Topic: program won't display 1st screen  (Read 2360 times)

shankle

  • Member
  • ****
  • Posts: 833
program won't display 1st screen
« on: January 06, 2013, 09:27:30 AM »
I have about a half dozen programs converted to GoAsm 32.
They all work fine using the same code as below.

I have one that I am trying to convert that will NOT show the 1st screen
using the code below. It fails at the ShowWindow API saying that the
handle is invalid.
Have tried with GoBug but could not solve the problem.
The #define code is added as per Edgar. He said the windows headers
have to be changed because of LPSTR.

#define LINKFILES
#define codejps   ;this is a folder I created
#define
#INCLUDE windows.h

DATA SECTION 
#ifndef LPSTR
  #if !x64
   #define LPSTR dd
  #else
   #define LPSTR dq
  #endif     
#endif 
CommandLine LPSTR  ?

WinMain:
    FRAME hInst,hPrevInst,CmdLine,CmdShow
   LOCAL wc:WNDCLASSEXA,msg:MSG,hWnd,RR:RECT     
   mov   D[wc.cbSize], SIZEOF WNDCLASSEXA
   mov   D[wc.style],CS_BYTEALIGNWINDOW | CS_HREDRAW | CS_VREDRAW
    mov   D[wc.lpfnWndProc], OFFSET WndProc
   mov   D[wc.cbClsExtra],NULL
   mov   D[wc.cbWndExtra],NULL
   push  [hInst]
   pop   [wc.hInstance]
   invoke LoadIcon, NULL, IDI_APPLICATION
   mov   D[wc.hIcon], eax
               invoke LoadCursor,NULL,IDC_ARROW
   mov   D[wc.hCursor],eax
   invoke CreateSolidBrush,[colorbk]          ; background color
              mov   D[hBrush],eax
   mov   D[wc.hbrBackground],eax
   mov   D[wc.lpszMenuName],NULL
   mov   D[wc.lpszClassName],offset szDisplayName
   mov   D[wc.hIconSm],0   
   invoke RegisterClassEx, addr wc
    invoke SystemParametersInfo, SPI_GETWORKAREA, 0, addr RR, 0        
   
   INVOKE CreateWindowEx, NULL, ADDR szDisplayName, ADDR AppName,\
          WS_OVERLAPPEDWINDOW,[RR.left],[RR.top],[RR.right],\
          [RR.bottom],NULL,NULL,[hInst],NULL           
   mov  [hWnd],eax       
   INVOKE ShowWindow, [hWnd],SW_SHOWNORMAL 

Thanks for any help.

dedndave

  • Member
  • *****
  • Posts: 8823
  • Still using Abacus 2.0
    • DednDave
Re: program won't display 1st screen
« Reply #1 on: January 06, 2013, 09:41:04 AM »
hiya Jack
it is likely that the problem lies with WndProc - code you have not shown us
the frame may not be set up properly or DefaultWindowProc may not be executed properly
but - more likely that the WM_CREATE code does not return 0 in EAX
this is a signal used to tell windows whether or not to continue creating the window
if you return a non-zero value, windows doesn't create the window, and the call to CreateWindow(Ex) will return 0

shankle

  • Member
  • ****
  • Posts: 833
Re: program won't display 1st screen
« Reply #2 on: January 06, 2013, 12:13:25 PM »
Problem is fixed Dave.
Thank you.
I was looking for the cause at B when it was at Y.

In other words I had a "ret" ticked out in WM_Destroy.
YUK......

dedndave

  • Member
  • *****
  • Posts: 8823
  • Still using Abacus 2.0
    • DednDave
Re: program won't display 1st screen
« Reply #3 on: January 06, 2013, 12:50:23 PM »
 :t