fork(1) download
  1. .386
  2. .model flat, stdcall
  3. option casemap:none
  4.  
  5. include \masm32\include\windows.inc
  6. include \masm32\include\user32.inc
  7. include \masm32\include\kernel32.inc
  8. include \masm32\include\comctl32.inc
  9. includelib \masm32\lib\comctl32.lib
  10. includelib \masm32\lib\user32.lib
  11. includelib \masm32\lib\kernel32.lib
  12.  
  13. WinMain PROTO :DWORD, :DWORD, :DWORD, :DWORD
  14.  
  15. .CONST
  16.  
  17. IDC_PROGRESS equ 1
  18. IDC_STATUS equ 2
  19. IDC_TIMER equ 3
  20.  
  21. .DATA
  22.  
  23. ClassName db "CommonControlWinClass", 0
  24. AppName db "Common Control Demo", 0
  25. ProgressClass db "msctls_progress32", 0
  26. Message db "Finished!", 0
  27. TimerID dd 0
  28.  
  29. .data?
  30. hInstance dd ?
  31. hwndProgress dd ?
  32. hwndStatus dd ?
  33. CurrentStep dd ?
  34.  
  35. .code
  36. start:
  37. invoke GetModuleHandle, NULL
  38. mov hInstance, eax
  39. invoke WinMain, hInstance, NULL, NULL, SW_SHOWDEFAULT
  40. invoke ExitProcess, eax
  41. invoke InitCommonControls
  42.  
  43. WinMain proc hInst:HINSTANCE, hPrevInst:HINSTANCE, CmdLine:LPSTR, CmdShow:DWORD
  44. LOCAL wc:WNDCLASSEX
  45. LOCAL msg:MSG
  46. LOCAL hwnd:HWND
  47.  
  48. mov wc.cbSize, SIZEOF WNDCLASSEX
  49. mov wc.style, CS_HREDRAW or CS_VREDRAW
  50. mov wc.lpfnWndProc, OFFSET WndProc
  51. mov wc.cbClsExtra, NULL
  52. mov wc.cbWndExtra, NULL
  53. push hInst
  54. pop wc.hInstance
  55. mov wc.hbrBackground, COLOR_APPWORKSPACE
  56. mov wc.lpszMenuName, NULL
  57. mov wc.lpszClassName, OFFSET ClassName
  58. invoke LoadIcon, NULL, IDI_APPLICATION
  59. mov wc.hIcon, eax
  60. mov wc.hIconSm, eax
  61. invoke LoadCursor, NULL, IDC_ARROW
  62. mov wc.hCursor, eax
  63. invoke RegisterClassEx, addr wc
  64. invoke CreateWindowEx, WS_EX_CLIENTEDGE, ADDR ClassName, ADDR AppName,
  65. WS_OVERLAPPED + WS_CAPTION + WS_SYSMENU + WS_MINIMIZEBOX + \
  66. WS_MAXIMIZEBOX + WS_VISIBLE, CW_USEDEFAULT,
  67. CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL,
  68. hInst, NULL
  69. mov hwnd, eax
  70. .while TRUE
  71. invoke GetMessage, ADDR msg, NULL, 0, 0
  72. .BREAK .IF (!eax)
  73. invoke TranslateMessage, ADDR msg
  74. invoke DispatchMessage, ADDR msg
  75. .endw
  76. mov eax, msg.wParam
  77. ret
  78. WinMain endp
  79.  
  80. WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
  81.  
  82. .if uMsg == WM_CREATE
  83. invoke CreateWindowEx, NULL, ADDR ProgressClass, NULL,
  84. WS_CHILD + WS_VISIBLE + PBS_SMOOTH + PBS_VERTICAL, 100,
  85. 200, 300, 20, hWnd, IDC_PROGRESS,
  86. hInstance, NULL
  87. mov hwndProgress, eax
  88.  
  89. invoke SendMessage, hwndProgress, PBM_SETBARCOLOR, 0, 0000FFh
  90. invoke SendMessage, hwndProgress, PBM_SETBKCOLOR, 0, 800000h
  91.  
  92.  
  93. mov eax, 1000
  94. mov CurrentStep, eax
  95. shl eax, 16
  96. invoke SendMessage, hwndProgress, PBM_SETRANGE, 0, eax
  97. invoke SendMessage, hwndProgress, PBM_SETSTEP, 10, 0
  98. invoke CreateStatusWindow, WS_CHILD+WS_VISIBLE, NULL, hWnd, IDC_STATUS
  99. mov hwndStatus, eax
  100. invoke SetTimer, hWnd, IDC_TIMER, 25, NULL
  101. mov TimerID, eax
  102.  
  103.  
  104.  
  105. .elseif uMsg == WM_DESTROY
  106. invoke PostQuitMessage, NULL
  107. .if TimerID != 0
  108. invoke KillTimer, hWnd, TimerID
  109. .endif
  110. .elseif uMsg == WM_TIMER
  111. invoke SendMessage, hwndProgress, PBM_STEPIT, 0, 0
  112. sub CurrentStep, 10
  113. .if CurrentStep == 0
  114. invoke KillTimer, hWnd, TimerID
  115. mov TimerID, 0
  116. invoke SendMessage, hwndStatus, SB_SETTEXT, 0, addr Message
  117. invoke MessageBox, hWnd, addr Message, addr AppName, MB_OK + MB_ICONINFORMATION
  118. invoke SendMessage, hwndStatus, SB_SETTEXT, 0, 0
  119. invoke SendMessage, hwndProgress, PBM_SETPOS, 0, 0
  120. .endif
  121. .else
  122. invoke DefWindowProc, hWnd, uMsg, wParam, lParam
  123. ret
  124. .endif
  125. xor eax, eax
  126. ret
  127. WndProc endp
  128.  
  129. end start
  130.  
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
prog.asm:1: error: attempt to define a local label before any non-local labels
prog.asm:2: error: attempt to define a local label before any non-local labels
prog.asm:2: error: parser: instruction expected
prog.asm:3: error: parser: instruction expected
prog.asm:5: error: parser: instruction expected
prog.asm:6: error: symbol `include' redefined
prog.asm:6: error: parser: instruction expected
prog.asm:7: error: symbol `include' redefined
prog.asm:7: error: parser: instruction expected
prog.asm:8: error: symbol `include' redefined
prog.asm:8: error: parser: instruction expected
prog.asm:9: error: parser: instruction expected
prog.asm:10: error: symbol `includelib' redefined
prog.asm:10: error: parser: instruction expected
prog.asm:11: error: symbol `includelib' redefined
prog.asm:11: error: parser: instruction expected
prog.asm:13: error: parser: instruction expected
prog.asm:37: error: parser: instruction expected
prog.asm:39: error: symbol `invoke' redefined
prog.asm:39: error: parser: instruction expected
prog.asm:40: error: symbol `invoke' redefined
prog.asm:40: error: parser: instruction expected
prog.asm:41: error: symbol `invoke' redefined
prog.asm:41: error: parser: instruction expected
prog.asm:43: error: symbol `WinMain' redefined
prog.asm:43: error: parser: instruction expected
prog.asm:44: error: parser: instruction expected
prog.asm:45: error: symbol `LOCAL' redefined
prog.asm:45: error: parser: instruction expected
prog.asm:46: error: symbol `LOCAL' redefined
prog.asm:46: error: parser: instruction expected
prog.asm:48: error: comma, colon or end of line expected
prog.asm:49: error: comma, colon or end of line expected
prog.asm:50: error: comma, colon or end of line expected
prog.asm:57: error: comma, colon or end of line expected
prog.asm:58: error: symbol `invoke' redefined
prog.asm:58: error: parser: instruction expected
prog.asm:61: error: symbol `invoke' redefined
prog.asm:61: error: parser: instruction expected
prog.asm:63: error: symbol `invoke' redefined
prog.asm:63: error: parser: instruction expected
prog.asm:64: error: symbol `invoke' redefined
prog.asm:64: error: parser: instruction expected
prog.asm:66: error: parser: instruction expected
prog.asm:67: error: parser: instruction expected
prog.asm:68: error: parser: instruction expected
prog.asm:70: error: parser: instruction expected
prog.asm:71: error: symbol `invoke' redefined
prog.asm:71: error: parser: instruction expected
prog.asm:72: error: parser: instruction expected
prog.asm:73: error: symbol `invoke' redefined
prog.asm:73: error: parser: instruction expected
prog.asm:74: error: symbol `invoke' redefined
prog.asm:74: error: parser: instruction expected
prog.asm:78: error: symbol `WinMain' redefined
prog.asm:78: error: parser: instruction expected
prog.asm:80: error: parser: instruction expected
prog.asm:82: error: parser: instruction expected
prog.asm:83: error: symbol `invoke' redefined
prog.asm:83: error: parser: instruction expected
prog.asm:84: error: parser: instruction expected
prog.asm:85: error: label or instruction expected at start of line
prog.asm:86: error: symbol `hInstance' redefined
prog.asm:86: error: parser: instruction expected
prog.asm:89: error: symbol `invoke' redefined
prog.asm:89: error: parser: instruction expected
prog.asm:90: error: symbol `invoke' redefined
prog.asm:90: error: parser: instruction expected
prog.asm:96: error: symbol `invoke' redefined
prog.asm:96: error: parser: instruction expected
prog.asm:97: error: symbol `invoke' redefined
prog.asm:97: error: parser: instruction expected
prog.asm:98: error: symbol `invoke' redefined
prog.asm:98: error: parser: instruction expected
prog.asm:100: error: symbol `invoke' redefined
prog.asm:100: error: parser: instruction expected
prog.asm:105: error: parser: instruction expected
prog.asm:106: error: symbol `invoke' redefined
prog.asm:106: error: parser: instruction expected
prog.asm:107: error: parser: instruction expected
prog.asm:108: error: symbol `invoke' redefined
prog.asm:108: error: parser: instruction expected
prog.asm:110: error: symbol `.elseif' redefined
prog.asm:110: error: parser: instruction expected
prog.asm:111: error: symbol `invoke' redefined
prog.asm:111: error: parser: instruction expected
prog.asm:113: error: symbol `.if' redefined
prog.asm:113: error: parser: instruction expected
prog.asm:114: error: symbol `invoke' redefined
prog.asm:114: error: parser: instruction expected
prog.asm:116: error: symbol `invoke' redefined
prog.asm:116: error: parser: instruction expected
prog.asm:117: error: symbol `invoke' redefined
prog.asm:117: error: parser: instruction expected
prog.asm:118: error: symbol `invoke' redefined
prog.asm:118: error: parser: instruction expected
prog.asm:119: error: symbol `invoke' redefined
prog.asm:119: error: parser: instruction expected
prog.asm:120: error: symbol `.endif' redefined
prog.asm:122: error: symbol `invoke' redefined
prog.asm:122: error: parser: instruction expected
prog.asm:124: error: symbol `.endif' redefined
prog.asm:127: error: symbol `WndProc' redefined
prog.asm:127: error: parser: instruction expected
prog.asm:129: error: parser: instruction expected
stdout
Standard output is empty