![]() |
|
|
![]()
|
|
| cdman |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 1.2.2009 Где: Новосибирск Репутация: нет Всего: нет |
Люди, всем привет !
Я не могу разобраться со строкой редактирования, слабовато понимаю, пошаговые действия с назначением какого-нибудь шрифта, например Comic sans (Нужен высотой в 20 пикселей). Подскажите пожалуйста, какие функции WIN API использовать. Могу бросить текст. Но пока не буду. Может вы что-нибудь предложите? |
|||
|
||||
| 586 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: нет Всего: 146 |
||||
|
||||
| cdman |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 1.2.2009 Где: Новосибирск Репутация: нет Всего: нет |
Edit Line делается CreateWindowEx .
Потом нужно GetDC ? Контекст нужен для задания шрифта ? Может функцией GetTextExtentPoint32 как-то можно ? The GetTextExtentPoint32 function computes the width and height of the specified string of text. http://msdn.microsoft.com/en-us/library/dd144938 Огромное спасибо за ответы. |
|||
|
||||
| cdman |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 1.2.2009 Где: Новосибирск Репутация: нет Всего: нет |
Вот накатал это, но текст в строку редактирования не пишется вообще. Что может быть ?
.686P .model flat,stdcall option casemap:none include C:\masm32\include\windows.inc include C:\masm32\include\user32.inc include C:\masm32\include\kernel32.inc include C:\masm32\include\gdi32.inc include C:\masm32\include\comdlg32.inc include C:\masm32\include\shell32.inc include I:\mbuilder\baumanets\baumanets.inc includelib C:\masm32\lib\user32.lib includelib C:\masm32\lib\kernel32.lib includelib C:\masm32\lib\gdi32.lib includelib C:\masm32\lib\comdlg32.lib includelib C:\masm32\lib\shell32.lib includelib I:\mbuilder\baumanets\baumanets.lib WinMain proto :DWORD,:DWORD,:DWORD,:DWORD RGB macro red,green,blue xor eax,eax mov ah,blue shl eax,8 mov ah,green mov al,red endm szText MACRO Name,Text:VARARG LOCAL lbl jmp lbl Name db Text,0 lbl: ENDM .const TickerID equ 1 .data? hwndTicker HWND ? hInstance HINSTANCE ? CommandLine LPSTR ? hFont dd 0 .data TextTicker db "Ticker",0 ;_______________ ClassName db "mbuilder",0 BtnClName db "button",0 StatClName db "static",0 EditClName db "edit",0 LboxClName db "listbox",0 CboxClName db "combobox",0 ReditClName db "richedit",0 RichEditLib db "riched32.dll",0 FormCaption db "Form",0 lpFontName1 db "Comic Sans MS",0 TestString db "TATB",0 ;_______________ .code start: invoke GetModuleHandle,NULL mov hInstance,eax invoke GetCommandLine invoke WinMain,hInstance,NULL,CommandLine,SW_SHOWDEFAULT invoke ExitProcess,eax WinMain proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:DWORD LOCAL wc :WNDCLASSEX LOCAL msg :MSG LOCAL hwnd :HWND mov wc.cbSize,SIZEOF WNDCLASSEX mov wc.style,CS_BYTEALIGNCLIENT mov wc.lpfnWndProc,offset WndProc mov wc.cbClsExtra,NULL mov wc.cbWndExtra,NULL push hInst pop wc.hInstance mov wc.hbrBackground,COLOR_BTNFACE+1 mov wc.lpszClassName,OFFSET ClassName invoke LoadIcon,NULL,IDI_APPLICATION mov wc.hIcon,eax mov wc.hIconSm,eax invoke LoadCursor,NULL,IDC_ARROW mov wc.hCursor,eax invoke RegisterClassEx,addr wc invoke CreateWindowEx,0,ADDR ClassName,ADDR FormCaption,WS_SYSMENU or WS_SIZEBOX,2062,452,384,291,0,0,hInst,0 mov hwnd,eax INVOKE ShowWindow,hwnd,SW_SHOWNORMAL INVOKE UpdateWindow,hwnd .WHILE TRUE invoke GetMessage,ADDR msg,0,0,0 .BREAK .IF (!eax) invoke TranslateMessage,ADDR msg invoke DispatchMessage,ADDR msg .ENDW mov eax,msg.wParam ret WinMain endp WndProc proc hWnd:HWND,uMsg:UINT,wParam:WPARAM,lParam:LPARAM LOCAL hdc:HDC LOCAL ps:PAINTSTRUCT .IF uMsg == WM_DESTROY invoke PostQuitMessage,NULL .ELSEIF uMsg == WM_CREATE invoke BeginPaint,hWnd, ADDR ps mov hdc,eax invoke CreateFontA,18,0,0,0,FW_BOLD,0,0,0, 1,64,0,2,0 + 0, offset [lpFontName1] mov hFont,eax invoke CreateWindowEx,WS_EX_CLIENTEDGE,ADDR EditClName,ADDR TextTicker,WS_CHILD or ES_LEFT or ES_AUTOHSCROLL or WS_VISIBLE,48,32,121,48,hWnd,TickerID,hInstance,0 mov hwndTicker,eax invoke SendMessage, hwndTicker, WM_SETFONT, hFont, 0 invoke SelectObject, hdc, eax mov hFont,eax RGB 200,200,50 invoke SetTextColor,hdc,eax RGB 0,0,255 invoke SetBkColor,hdc,eax invoke TextOut,hdc,0,0,ADDR TestString,SIZEOF TestString invoke SelectObject,hdc, hFont invoke EndPaint,hWnd, ADDR ps .ELSE invoke DefWindowProc,hWnd,uMsg,wParam,lParam ret .ENDIF xor eax,eax ret WndProc endp end startdPaint,hWnd, ADDR ps Это сообщение отредактировал(а) cdman - 11.12.2010, 18:50 |
|||
|
||||
| 586 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: нет Всего: 146 |
Это из какого места программы кусок?
|
|||
|
||||
| cdman |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 1.2.2009 Где: Новосибирск Репутация: нет Всего: нет |
Делаю журнал трейдера (Под себя), раньше много программил под DOS, писал архиваторы, игрушки простенькие (Тетрис, Lines). Под винду пока ещё немного не привычно.
У Тебя есть Скайп ? Мой cdman__x . Добавляйся потрещим. |
|||
|
||||
| 586 |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: нет Всего: 146 |
В коде содержатся ещё и другие ошибки:
Ошибка 1:
Между этими строками пропущено mov CommandLine, eax Ошибка 2: Структура WNDCLASSEX заполняется не полностью (не инициализирован wc.lpszMenuName).
|
||||
|
|||||
| cdman |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 1.2.2009 Где: Новосибирск Репутация: нет Всего: нет |
wc.lpszMenuName относиться к ресурсам, я пока в такие дебри не лез. Его обязательно задавать ?
Добавляйся. |
|||
|
||||
| 586 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: нет Всего: 146 |
||||
|
||||
| cdman |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 1.2.2009 Где: Новосибирск Репутация: нет Всего: нет |
Сейчас разберу, спасибо за поддержку !
|
|||
|
||||
| cdman |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 1.2.2009 Где: Новосибирск Репутация: нет Всего: нет |
Привет 586, программил всю ночь, сделал несколько едитов, и оказалось что, цвет фона и шрифта проблематично присвоить качдому элементу. И ещё непонятно, порядок Ифов и Елсов ... Можно ли обойтись без WM_CTLCOLOREDIT. Использовать на прорисовку, освежение и изменение свойств элементов только WM_PAINT ? Сложно ...
Надо научиться менять: Цвет фона Edit'а, цвет фона шрифта и цвет шрифта - всего 3 параметра. Вот тут начали обсуждать, но никуда не пришли http://forum.sources.ru/index.php?showtopic=74628 WndProc proc hWnd:HWND,uMsg:UINT,wParam:WPARAM,lParam:LPARAM LOCAL hdc:HDC LOCAL ps:PAINTSTRUCT .IF uMsg == WM_DESTROY . . .ELSEIF uMsg == WM_CREATE . . . .ELSEIF uMsg == WM_CTLCOLOREDIT . . . .ELSEIF uMsg == WM_PAINT .ELSEIF uMsg == WM_COMMAND mov eax,wParam .IF lParam != 0 .IF ax == AddDealID shr eax,16 .IF ax == BN_CLICKED invoke MessageBox,hWnd,addr TextAddDeal,0,MB_ICONINFORMATION .ENDIF .ELSEIF ax == AllTradesID shr eax,16 .IF ax == BN_CLICKED invoke MessageBox,hWnd,addr TextAllTrades,0,MB_ICONINFORMATION .ENDIF .ENDIF .ENDIF ret .ELSE invoke DefWindowProc,hWnd,uMsg,wParam,lParam ret .ENDIF xor eax,eax ret Вот что-то к этому : SetDCBrushColor Устанавливает в текущем контексте устройства (DC) цвет кисти в заданный код цвета. SetDCPenColor Устанавливает цвет пера в текущем контексте устройства (DC) в заданный код цвета. Это сообщение отредактировал(а) cdman - 12.12.2010, 13:21 |
|||
|
||||
| 500mhz |
|
|||
![]() шайтан ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1017 Регистрация: 5.5.2008 Где: Киев / Italy Репутация: нет Всего: 14 |
господа вам не кажется что мы в 2010 (почти в 2011) и все что выше понаписано можно сделать в редакторе ресурсов?
-------------------- |
|||
|
||||
![]()
|
| Правила форума "Asm для Windows/DOS" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
| 1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Asm для Windows/Dos | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |