Вот, хочу, чтоб в Edit-е вместо парольных звездочек выводились толстые кружочки, как во всех парольных окнах XP. Манифесты все добавлял как надо, а звездочки все равно вылазят как в 98-й. В чем дело?
Это официальная версия или практический опыт? В MSDN дословно написано: "Если у вас обычный Edit, то будут звездочки, а если Edit из comctl32.dll, то будут кружочки". Вопрос собственно такой, если в разных библиотеках зарегистрирован класс с одним и тем же именем, как мне указать, из какой библиотеки я хочу использовать этот класс?
kkrutoy если ты не вызываешь InitCommonControls, то используется обычный Edit. Иначе из comctl32. По-моему, так
>Манифесты все добавлял как надо А все же - как именно ? (И почему манифестЫ ?) >В MSDN дословно написано: "Если у вас обычный Edit, то будут звездочки, а если Edit из comctl32.dll, то будут кружочки". Видите ли, MSDN надо читать не только внимательно, но и критически: пишут там нередко неряшливо. Например, если ваш эдит задан в ресурсном диалоге, а диалог без фонта (т.е. с системным фонтом) - выскочат кружочки, а если с MS Sans Serif - палочки FatMoon >если ты не вызываешь InitCommonControls, то используется обычный Edit. Иначе из comctl32. По-моему, так А вы проверьте
10110111 InitCommonControls выступает гарантиром загрузки comctl32 в startup-коде которой может быть сделано много чего.
Манифест делал и InitCommonControls. Если бы все дело было в шрифте...Зачем делать 2 одинаковых Edit тогда? В Edit из comctrl32 кажется есть фича, чтоб у него нельзя было кружочки превратить в символы. Так что шрифт не при чем. Походу тайна зарыта в MSDN навека ))
FatMoon InitCommonControls не в силах заставить класс Edit регистрироваться не в user32, а в comctl32. InitCommonControls требуется тогда, когда у вас в работе характерные для comctl32 контролы, а не ветераны вроде эдита. kkrutoy Именно манифест обеспечивает вашей проге регистрацию в comctl32 (версия указана в манифесте) всех стандартных контролов оптом. Посему - пожалуй, зря вы так уверены, что "манифесты все добавлял как надо". А ваши размышления о шрифте, о таинственной "фиче"... Короче, вот кое-что о секретах Edit-а: Код (Text): .386 .model flat,stdcall option casemap:none inclib macro x include x.inc includelib x.lib endm include windows.inc inclib user32 inclib kernel32 ;inclib gdi32 ;;inclib comctl32 .data _psw db "Psw" _edit db "Edit",0 _mbox db "MessageBox",0 .data? buffer db 256 dup(?) .code start: invoke GetModuleHandle,0 invoke CreateWindowEx,WS_EX_TOPMOST OR WS_EX_CLIENTEDGE,\ offset _edit,offset _psw,\ WS_VISIBLE OR WS_OVERLAPPEDWINDOW OR ES_PASSWORD,\ 20,20,400,200,0,0,eax,0 push ebx mov ebx,eax ; invoke GetStockObject,DEFAULT_GUI_FONT ; invoke SendMessage,ebx,WM_SETFONT,eax,TRUE invoke GetClassLong,ebx,GCL_HMODULE invoke GetModuleFileName,eax,addr buffer,255 invoke SetWindowText,ebx,addr buffer pop ebx invoke MessageBox,0,addr buffer,offset _mbox,MB_TOPMOST invoke ExitProcess,0 ;; invoke InitCommonControls end start Положите рядом: PswEdit.exe.manifest + PswEdit.exe + переименованный exe (скажем - PswEdit_.exe). Запустите оба этих exe и потрудитесь насладиться результатом. Или у вас Win98 ?
В вышеприведенном коде раскомментируйте свежедобавленные gdi32, DEFAULT_GUI_FONT, WM_SETFONT, и если у вас DEFAULT=Tahoma - будут вам махонькие.
Ну да, четко работает. Ток в архиве манифест битый был. Пришлось штук 5 левых скормить, чтоб добиться желаемого результата. Ну спасибо!
kkrutoy > Ток в архиве манифест битый был. ?? > Пришлось штук 5 левых скормить, чтоб добиться желаемого результата. ?? Как все загадочно... Не рассекретите хотя бы эти ваши 5 левых штук ? Ну, чтобы сравнить с битым и понять, какие не бьются на ваших бермудах.
Неужели теперь и с рарами та же беда, что и с зипами (см. в форуме WASM-SITE ветку "Аттач")... Прискорбно. А манифест, кстати, можно добыть в редакторе ресурсов из проверенных стандартных прог (калькулятор итд).