CreateWindowEx

Тема в разделе "WASM.BEGINNERS", создана пользователем sometime, 17 июн 2009.

  1. sometime

    sometime Odessa

    Публикаций:
    0
    Регистрация:
    22 апр 2009
    Сообщения:
    227
    Адрес:
    sunday
    пол дня пытаюсь установить созданое окошечко посреди екрана....и что думаете - не выходит) - неужели не реально без "хака" - функции - спасиб!

    читал гдето про - SS_CENTER, говорили что устанавливает по центру - у меня нет:)

    перепробовал /перечитал многое - главное что не зря,теперь многое "по дороге" узнал)
    Код (Text):
    1.             windowsclass.cbSize                     = sizeof(windowsclass);
    2.             windowsclass.style                      = CS_OWNDC;  
    3.             windowsclass.lpfnWndProc                = MainWinProc;
    4.             windowsclass.cbClsExtra                 = 0;
    5.             windowsclass.cbWndExtra                 = 0;
    6.             windowsclass.hInstance                  = hInstance;
    7.             windowsclass.hIcon                      = LoadIcon(NULL, IDI_APPLICATION);      
    8.             windowsclass.hCursor                    = LoadCursor(NULL, IDC_ARROW);
    9.             windowsclass.hbrBackground              = (HBRUSH)GetStockObject(NULL_PEN);
    10.             windowsclass.lpszMenuName               = NULL;
    11.             windowsclass.lpszClassName              = cName;
    12.             windowsclass.hIconSm                    = LoadIcon(NULL, IDI_APPLICATION);
    13.             RegisterClassEx(&windowsclass);
    14.  
    15.          hwnd = CreateWindowEx(WS_EX_LAYERED ,
    16.                 cName,
    17.                 wName,
    18.                 WS_VISIBLE | WS_POPUPWINDOW | SS_CENTER,
    19.                 CW_USEDEFAULT, CW_USEDEFAULT,
    20.                 450, 550,
    21.                 NULL,
    22.                 NULL,
    23.                 hInstance,
    24.                 NULL);
    25.  
    26.         clref = RGB(100, 50, 100);
    27.  
    28.        SetLayeredWindowAttributes( hwnd, clref, 150, LWA_ALPHA);
    29.        ShowWindow(hwnd, nShowCmd);
    30.        UpdateWindow(hwnd);
    подскажите плз - запарился искать(
     
  2. sometime

    sometime Odessa

    Публикаций:
    0
    Регистрация:
    22 апр 2009
    Сообщения:
    227
    Адрес:
    sunday
    sometime

    вставилось - лиха)
     
  3. litrovith

    litrovith Member

    Публикаций:
    0
    Регистрация:
    20 июн 2007
    Сообщения:
    509
    Код (Text):
    1. ;---------- [Center the window] ----------
    2.       INVOKE     GetSystemMetrics, SM_CXSCREEN
    3.          sub     eax, 450
    4.          shr     eax, 1
    5.         push     eax
    6.       INVOKE     GetSystemMetrics, SM_CYSCREEN
    7.          sub     eax, 550
    8.          shr     eax, 1
    9.          pop     ebx
    10.  
    11.       INVOKE     CreateWindowEx,  WS_EX_LAYERED,  addr cName, addr wName,\
    12.                  WS_VISIBLE or WS_POPUPWINDOW or CW_USEDEFAULT,\
    13.                  ebx, eax, 450, 550, 0, 0, hInstance, 0
    14.          mov     hwnd, eax
     
  4. sometime

    sometime Odessa

    Публикаций:
    0
    Регистрация:
    22 апр 2009
    Сообщения:
    227
    Адрес:
    sunday
    да етот случай я решил оставить на крайняк! - спасибо, АПИ не знал какие юзать. А повесить на плечи винды никак?
     
  5. AsmGuru62

    AsmGuru62 Member

    Публикаций:
    0
    Регистрация:
    12 сен 2002
    Сообщения:
    689
    Адрес:
    Toronto
  6. sometime

    sometime Odessa

    Публикаций:
    0
    Регистрация:
    22 апр 2009
    Сообщения:
    227
    Адрес:
    sunday
    спс но ето видел уже:) - ничего не меняется((((

    dwExStyle - WS_EX_DLGMODALFRAME
    ...
    dwStyle - DS_CENTER

    x,y - 0;

    не пойму что за ...

    смысл в том что мне даже сам по себе WS_EX_DLGMODALFRAME не подходит - нужно окошко без титла (WS_POPUP) и еще + к етому всему - WS_EX_LAYERED, прозрачность нужна, хотя на крайний случай,думаю смогу отказатся:) - но задача - УСТАНОВИТЬ ОКОШКО ПО ЦЕНТРУ и без титла - есть еще варианты?
     
  7. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    во народ пошел, Ицзелион им уже не авторитет, не читают, тутор про сплэш окно
     
  8. serj

    serj New Member

    Публикаций:
    0
    Регистрация:
    27 сен 2005
    Сообщения:
    13
    STYLE : DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_VISIBLE
     
  9. x0man

    x0man New Member

    Публикаций:
    0
    Регистрация:
    23 мар 2008
    Сообщения:
    358
    sometime
    DS_CENTER - для диалога, а не для окна что ты создаёшь "ручками"...
    центруй самостоятельно окно или юзай диалог чтобы приспособить DS_CENTER :)
     
  10. sometime

    sometime Odessa

    Публикаций:
    0
    Регистрация:
    22 апр 2009
    Сообщения:
    227
    Адрес:
    sunday
    Asterix
    пока найти не могу, но полюбэ спс - там смотрел,правда быстренько давно еще, тепер более тчательно просмотрю!

    serj
    у тебя так работает??? - у меня нет, такое ощущение что я гдет в другом)) месте запорол что оно центроватся не хочет))

    x0man
    так в том то и фокус что оно не для меня и SS_CENTER как я гдето вычитал тоже не для окна обычного(-биология))))

    2ALL - свалу нет придется центровать самому, не хотелось - но увы....будет лишний кодец. хорошо что только при старте проги))

    ну и теперь продолжаем)- никто не пробовал методами винды вырезать с бмп,например - белый цвет??? - вручную делаю,но там немного заплётов получается если цветов много на картинке,края то чуток поплывшие(не чистые цвета и не белый,но их не хочется видеть)......мммда - вообще не в тему сказано:) ,но мож кто по дороге подскажет.

    хотелось бы узнать как в дельфи и в билдер тоже - в классе TBitmap есть TransperentColor - там получше вырезало чем я ща режу двумя форами))))
     
  11. djmans

    djmans New Member

    Публикаций:
    0
    Регистрация:
    27 дек 2006
    Сообщения:
    312
    SS_CENTER это стил для Static Control. tatictyle.
     
  12. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    sometime
    http://www.wasm.ru/article.php?article=1001026
     
  13. sometime

    sometime Odessa

    Публикаций:
    0
    Регистрация:
    22 апр 2009
    Сообщения:
    227
    Адрес:
    sunday
    djmans
    спасиб, буду знать)) - хотя и так думал что тут чёт не так: SS_ а не WS_

    Asterix
    ну ты красава, искал я искал,правда вручную) - и залип совсем не на том)))
    СПАСИБО!!!!

    иду учится дальше при возникновении вопросов - обращусь;)
     
  14. kero

    kero Модератор SOURCES & 2LZ Команда форума

    Публикаций:
    0
    Регистрация:
    4 апр 2006
    Сообщения:
    1.074
    Адрес:
    Москва
    Видите, Asterix, стрелять лучше дуплетом, с контрольной ссылкой.
     
  15. sometime

    sometime Odessa

    Публикаций:
    0
    Регистрация:
    22 апр 2009
    Сообщения:
    227
    Адрес:
    sunday
    kero
    давай без *техсамых
    -хорошо что ориентируешся хароша на ваСме,а я пока нет!!
    //а ссылки никогда лишними не бывают, если задал вопрос - значит искал и не нашел!

    -сказал бы и тебе спасибо, но увы нету желания!!!
     
  16. serj

    serj New Member

    Публикаций:
    0
    Регистрация:
    27 сен 2005
    Сообщения:
    13
    Да, извините, глупость сказал.



    sometime, а зачем работать с цветами ... сделать прозрачный фон?

    Код (Text):
    1. SetBmpColor proc hBitmap:DWORD
    2.  
    3.     LOCAL mDC       :DWORD
    4.     LOCAL hBrush    :DWORD
    5.     LOCAL hOldBmp   :DWORD
    6.     LOCAL hReturn   :DWORD
    7.     LOCAL hOldBrush :DWORD
    8.  
    9.       invoke CreateCompatibleDC,NULL
    10.       mov mDC,eax
    11.  
    12.       invoke SelectObject,mDC,hBitmap
    13.       mov hOldBmp,eax
    14.  
    15.       invoke GetSysColor,COLOR_BTNFACE
    16.       invoke CreateSolidBrush,eax
    17.       mov hBrush,eax
    18.  
    19.       invoke SelectObject,mDC,hBrush
    20.       mov hOldBrush,eax
    21.  
    22.       invoke GetPixel,mDC,1,1
    23.       invoke ExtFloodFill,mDC,1,1,eax,FLOODFILLSURFACE
    24.  
    25.       invoke SelectObject,mDC,hOldBrush
    26.       invoke DeleteObject,hBrush
    27.  
    28.       invoke SelectObject,mDC,hBitmap
    29.       mov hReturn,eax
    30.       invoke DeleteDC,mDC
    31.  
    32.       mov eax,hReturn
    33.  
    34.     ret
    35.  
    36. SetBmpColor endp
     
  17. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.914
    Наверное у kero компас есть, или может он слова волшебные знает: "WASM->поиск" или "GOOGLE" :)
     
  18. sometime

    sometime Odessa

    Публикаций:
    0
    Регистрация:
    22 апр 2009
    Сообщения:
    227
    Адрес:
    sunday
    serj спасибо что не поленился дать пример кода.....
    а еще теперь буду знать что такое "залить" в паинте) - но оо паходу не подходит,мельком прочитал МСДН и не нашел браш - с регулировкой альфы - видимо ты не правильно понял или я не правильно объяснил) - но в любом случае я рад что теперь знаю еще++ апишек для работы с графикой)

    задача - создано прозрачное окно(WS_EX_LAYERED) на него вывожу изображение , и надо чтобы фон БПМ-шки удалился ровно и без "прыщиков" - побочных ефектов вокруг буквочек. Вот например буквочка чисто синяя(в паинте) но после сохранения получаются вокруг нее оттенки синего+цвет фона ,которые при удалении фона(белого) остаются,но зато при оставлении синих буквочек - удаляются)). Ет я расказал что у меня получается при помощи двух форов и if-a. Теперь я точно знаю - все у меня в руках, точнее на моих плечах - в руках только мышка))

    и в конечном итоге у меня получается окно произвольной формы - в даном варианте буквочки. Но блин если нарисую произвольную форму с 50 разны цветов(например) - то надо будет в if -е &&-ов 50 ставить)))) - вот и решил спросить мож винда с "умными) апишками подумала о таких как я)

    тут спасиб,работен дальше...


    ПС - ха,вспомнил - прогнал себе сегодня мыслю: читал на форуме гдето вопросик " как нарисовать на десктопе,НО так что бы иконки отображались поверху моих рисований")
    подумал над етим вопросом и понял что надо рисовать не по десктопу а по самому валпепере в памяти, только вот как его найти мона - незнаю - читать много надо а так как ето задача только для развлечения и + к знаниям, то подумал что мона ненароком спросить тут:) - мож подскажет кто как добратся к поинтеру на валлпепер?)
     
  19. sometime

    sometime Odessa

    Публикаций:
    0
    Регистрация:
    22 апр 2009
    Сообщения:
    227
    Адрес:
    sunday
    Mikl___
    -в поиске васма вбивал!! правда на руском и два слова сразу "сплэш окно" ....ничё не выдало. А по поводу гугла-знаю что такое и он первый в списках пользования. И как я говорил выше - начал искать ВРУЧНУЮ по васме,а точнее по урокам Iczelion'а!!! и попал на интересный урок, а пока читал то Asterix уже дал ссылку за что я ему благодарен. Ну а к тебе просьба - давай без умничества со мной общатся - не люблю я таких....хотя ":)" в конце твоего поста свидетельствует что ты с добрыми намеринеями, но сорри - не воспринемаю я твой пост в серьёз!
     
  20. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.914
    sometime
    Судя по тому что слова этот, экран и эффект ты пишешь как етот, екран и ефект -- русский язык для тебя не родной, но всё равно, писать нужно так, чтобы было понятно собеседникам -- что ты конкретно хочешь -- выввести полупрозрачное окно? Или цвет фона бмп -- сделать прозрачным? Или вывести рисунок/надпись поверх десктопа?