Подскажите, как поменять свойства окна после вызова CreateWindowEx. invoke CreateWindowEx, 40000h,\ lpClassName,\ lpWindowName,\ WS_OVERLAPPEDWINDOW,\ CW_USEDEFAULT,\ CW_USEDEFAULT,\ CW_USEDEFAULT,\ CW_USEDEFAULT,\ NULL,\ NULL,\ [wc.hInstance],\ NULL Надо изменить WS_OVERLAPPEDWINDOW (4-ый параметр) на другой. Есть отдельная функция или ещё раз CreateWindowEx можно вызывать?
GetWindowLong/SetWindowLong Вызов ещё раз CreateWindowEx создаст новое окно. MSDN рулит. Даже старые версии для Win95.
invoke SetWindowLong,hWnd,GWL_EXSTYLE,WS_EX_TOOLWINDOW - exStyle invoke SetWindowLong,hWnd,GWL_STYLE,0 - все просто...
не все стили можно ставить через эти функи. подробности можно прочитать в msdn в хелпе на функции CreateWindow и CreateWindowEx
Не помогло! Код (Text): invoke CreateWindowEx, NULL,\ lpClassName,\ lpWindowName,\ WS_VISIBLE+WS_POPUP,\ 0,\ 0,\ 500,\ 500,\ NULL,\ NULL,\ [wc.hInstance],\ NULL mov [hwnd], eax invoke SetWindowLong, [hwnd],\ GWL_STYLE,\ WS_OVERLAPPEDWINDOW После этого кода окно должно быть в рамке? Посмотрите исходник если не лень.
Попробуй после SetWindowLong вызвать SetWindowPos с флагом SWP_FRAMECHANGED, точно не помню, но некоторые изменения только после этого вступают в силу.
В общем виде: Код (Text): long_Style = GetWindowLong(hwnd, GWL_STYLE); SetWindowLong(hwnd, GWL_STYLE, long_Style & ~style_delete);
Код (Text): invoke CreateWindowEx, NULL,\ lpClassName,\ lpWindowName,\ WS_VISIBLE+WS_POPUP,\ 0,\ 0,\ 500,\ 500,\ NULL,\ NULL,\ [wc.hInstance],\ NULL mov hwnd,eax invoke SetWindowLong, hwnd,\ GWL_STYLE,\ WS_OVERLAPPEDWINDOW ???
Great >>GetWindowLong/SetWindowLong >не все стили можно ставить через эти функи. подробности можно прочитать в msdn в хелпе на функции CreateWindow и CreateWindowEx Поскольку в этих хелпах нет таких подробностей, - поясните, на что указует ваше нотабене. Неужели на стили CS_ ?
kero > ... по-конкретнее ... RamMerLabs > ... не нахожу... Цитата из Window Styles: "... After the control has been created, these styles cannot be modified, except as noted ..." Много ли стилей содержат "To change this style after a window has been created, use SetWindowLong"?
q_q >Цитата из Window Styles: 1) Повнимательнее, пожалуйста: приказано было "прочитать в msdn в хелпе на функции CreateWindow и CreateWindowEx". 2) Не уверен, что правильно понял фразу "Много ли стилей содержат [...]", просьба расшифровать.
q_q Боюсь, фразу вашу понял все-таки правильно... Тогда на вопрос - >Много ли стилей содержат "To change this style after a window has been created, use SetWindowLong"? - отвечаю: мало, только WS_GROUP и WS_TABSTOP. А теперь укажите хотя бы один из оставшихся стилей, который SetWindowLong и в самом деле не могла бы переключить: WS_BORDER WS_CAPTION WS_CHILD WS_CLIPCHILDREN WS_CLIPSIBLINGS WS_DISABLED WS_DLGFRAME WS_HSCROLL WS_ICONIC WS_MAXIMIZE WS_MAXIMIZEBOX WS_MINIMIZE WS_MINIMIZEBOX WS_OVERLAPPED WS_OVERLAPPEDWINDOW WS_POPUP WS_POPUPWINDOW WS_THICKFRAME WS_SYSMENU WS_VISIBLE WS_VSCROLL. (За cmd.exe просьба не прятаться)
kero 1) Повнимательнее, пожалуйста: приказано было ... В указанных функциях в описании параметра style, содержится приведенная мною ссылка. Imho вполне логично более-менее объемную информацию оформлять отдельным разделом и при случае ссылаться на него. Боюсь, фразу вашу понял все-таки правильно... Не совсем. Это была не более чем ссылка на _официальную_ документацию. А теперь укажите Imho не тот случай, чтобы тратить свое время на проверку соответствия документации продукту. Если у тебя есть время, то пиши программу, проверяй ее на всевозможных soft- и hard-конфигурациях и помести сюда свое заключение. который SetWindowLong и в самом деле не могла бы переключить Тебе не приходит в голову, что изменение некоторых стилей могут/должны приводить не только к визуальным изменениям? Зачем для изменения некоторых стилей специально придуманы функции? Например, для WS_DISABLED и WS_VISIBLE, о чем указано в _официальной_ документации. Afaik использование этой функции, с параметром GWL_STYLE, вообще не приводит к визуальным эффектам, необходимы дополнительные усилия. (За cmd.exe просьба не прятаться) Не понял. А это тут причем?
q_q >>1) Повнимательнее, пожалуйста: приказано было ... >В указанных функциях в описании параметра style, содержится приведенная мною ссылка. >Imho вполне логично более-менее объемную информацию оформлять отдельным разделом и при случае ссылаться на него. А, так вот что такое подробности: это ссылка на ссылку... Неблагозвучно, не находите ? >>Боюсь, фразу вашу понял все-таки правильно... >Не совсем. Это была не более чем ссылка на _официальную_ документацию. Не скромничайте: "Много ли стилей содержат (итд)" - это прямо в тутор по риторике. >>А теперь укажите >Imho не тот случай, чтобы тратить свое время на проверку соответствия документации продукту. >Если у тебя есть время, то пиши программу, проверяй ее на всевозможных soft- и hard-конфигурациях и помести сюда свое заключение. Ой. А давайте лучше вернемся к нашим баранам. Был задан вопрос: как поменять WS_OVERLAPPEDWINDOW у окна, созданного с этим стилем. WS_OVERLAPPEDWINDOW - как раз из тех стилей, которые "не содержат" (см. выше). Я правильно понимаю, что ваш ответ - НИКАК ? А то ведь иначе вся ваша риторика - коту под хвост. Просьба ответить ответом, а не вопросом. >>который SetWindowLong и в самом деле не могла бы переключить >Тебе не приходит в голову, что изменение некоторых стилей могут/должны приводить не только к визуальным изменениям? Ой, правда ?? >Зачем для изменения некоторых стилей специально придуманы функции? Например, для WS_DISABLED и WS_VISIBLE, о чем указано в _официальной_ документации. >Afaik использование этой функции, с параметром GWL_STYLE, вообще не приводит к визуальным эффектам, необходимы дополнительные усилия. Ну что вы ломитесь в открытую дверь ? Али в Remarks к SetWindowLong об SetWindowPos не поведано ? >>(За cmd.exe просьба не прятаться) >Не понял. А это тут причем? А, так ваше Imho еще не мучило окно консоли...
А лучше все таки использовать MoveWindow. Дело в том, что окно не содержащее заголовка с координатами 0,0 (X,Y) находится в верхнем левом углу монитора, а содержащее заголовок чуть ниже(клиентская область). Переписав исходник на masm результата добился только используя MoveWindow