Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Создание окна

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Прочее] >> Создание окна
Имя
Сообщение << Старые топики   Новые топики >>
Создание окна - 2011-08-09 23:45:47.850000   
Omenus666

Сообщений: 108
Оценки: 0
Присоединился: 2008-04-11 16:44:07.336666
Блин мой мозг почти сломан, но я не сдаюсь!
Проблема в том что окно не прорисовывается.  Вот собственно исходник

.686 .model flat, stdcall&nbsp; ;32 bit memory model option casemap :none&nbsp; ;case sensitive &nbsp; include \MASM32\INCLUDE\windows.inc include \MASM32\INCLUDE\masm32.inc include \MASM32\INCLUDE\gdi32.inc include \MASM32\INCLUDE\user32.inc include \MASM32\INCLUDE\kernel32.inc include \MASM32\INCLUDE\advapi32.inc include \MASM32\INCLUDE\Ws2_32.inc include \masm32\INCLUDE\wsock32.inc includelib \MASM32\LIB\masm32.lib includelib \MASM32\LIB\gdi32.lib includelib \MASM32\LIB\user32.lib includelib \MASM32\LIB\kernel32.lib includelib \MASM32\LIB\advapi32.lib includelib \MASM32\LIB\Ws2_32.lib includelib \masm32\lib\wsock32.lib WinMain proto :DWORD,:DWORD,:DWORD,:DWORD .data Mname DB "CLIENT",0 ClassName db "First Windows",0 .data? hInstance dd ? CommandLine LPSTR ? .code Start: ;=========Прорисовка окна============ &nbsp;invoke GetModuleHandle,NULL &nbsp;mov hInstance,eax &nbsp;invoke GetCommandLine &nbsp;mov CommandLine,eax &nbsp;invoke WinMain,hInstance,NULL,CommandLine,SW_SHOW &nbsp;invoke ExitProcess, eax WinMain PROC hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:DWORD &nbsp;&nbsp;&nbsp; LOCAL wc:WNDCLASSEX&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; создание локальных пеpеменных в стеке &nbsp;&nbsp;&nbsp; LOCAL msg:MSG &nbsp;&nbsp;&nbsp; LOCAL hwnd:HWND &nbsp;mov wc.style,sizeof WNDCLASSEX &nbsp;mov wc.style, CS_HREDRAW or CS_VREDRAW &nbsp;mov wc.lpfnWndProc,offset WndProc &nbsp;mov wc.cbClsExtra,NULL &nbsp;mov wc.cbWndExtra,NULL &nbsp;push&nbsp; hInstance &nbsp;pop&nbsp;&nbsp; wc.hInstance &nbsp;invoke LoadIcon,hInstance,IDI_APPLICATION &nbsp;mov wc.hIcon,eax &nbsp;mov wc.hIconSm,eax &nbsp;invoke LoadCursor,hInstance,IDI_HAND &nbsp;mov wc.hCursor,eax &nbsp;mov wc.hbrBackground,COLOR_WINDOW+1 &nbsp;mov wc.lpszMenuName,NULL &nbsp;mov wc.lpszClassName,offset ClassName &nbsp; &nbsp;invoke RegisterClass,addr wc &nbsp;invoke CreateWindowEx,NULL,addr ClassName,addr Mname,WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInstance,NULL &nbsp;mov hwnd,eax &nbsp;invoke ShowCursor,TRUE &nbsp;invoke ShowWindow,hwnd,CmdShow &nbsp;invoke UpdateWindow, hwnd .WHILE TRUE&nbsp;&nbsp; ; Enter message loop &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; invoke GetMessage, ADDR msg,NULL,0,0 &nbsp;&nbsp;&nbsp; .BREAK .IF (!eax) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; invoke TranslateMessage, ADDR msg &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; invoke DispatchMessage, ADDR msg &nbsp;&nbsp;&nbsp; .ENDW &nbsp;&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;&nbsp;&nbsp; eax,msg.wParam ; сохpанение возвpащаемого значения в eax &nbsp;&nbsp;&nbsp;&nbsp; ret &nbsp;WinMain endp WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM &nbsp;&nbsp;&nbsp; .IF uMsg==WM_DESTROY&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; если пользователь закpывает окно &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; invoke PostQuitMessage,NULL ; выходим из пpогpаммы &nbsp;&nbsp;&nbsp; .ELSE &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; invoke DefWindowProc,hWnd,uMsg,wParam,lParam ; Дефаултная функция обpаботки окна &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ret &nbsp;&nbsp;&nbsp; .ENDIF &nbsp;&nbsp;&nbsp; xor eax,eax &nbsp;&nbsp;&nbsp; ret WndProc endp end Start
На количество либ не обращайте внимание я просто еще с сокетами работал и вот решил создать окно а тут такой облом

В чем проблема?
Post #: 1
RE: Создание окна - 2011-08-10 10:09:18.313333   
Flint_ta

Сообщений: 3720
Оценки: 1120
Присоединился: 2007-01-26 15:49:18.323333
Две ошибки нашел:
У вас в стиль окна передается размер структуры WNDCLASSEX
mov wc.style,sizeof WNDCLASSEX mov wc.style, CS_HREDRAW or CS_VREDRAW исправьте на:
mov wc.cbSize,sizeof WNDCLASSEX mov wc.style, CS_HREDRAW or CS_VREDRAW
Вторая ошибка: вы объявляете расширенную струтуру WNDCLASSEX, о чем свидетельствует суффикс EX,
для работы с ней нужно использовать расширенные апи RegisterClassExA, вместо RegisterClass
исправьте:
invoke RegisterClass,addr wc на
invoke RegisterClassExA,addr wc;
Post #: 2
RE: Создание окна - 2011-08-10 13:51:44.433333   
Omenus666

Сообщений: 108
Оценки: 0
Присоединился: 2008-04-11 16:44:07.336666
спасибо!! Ошибки не существенны а столько гемора!!
Post #: 3
Страниц:  [1]
Все форумы >> [Прочее] >> Создание окна







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.