Не могу поменять иконку у окна

Тема в разделе "WASM.BEGINNERS", создана пользователем Sturgeon, 27 июн 2007.

  1. Sturgeon

    Sturgeon New Member

    Публикаций:
    0
    Регистрация:
    17 окт 2006
    Сообщения:
    111
    Здравствуйте все!
    После долгого перерыва сел опять за изучение ассемблера. Поскольку я его и раньше хорошо не знал, то теперь можно сказать начинаю все с нуля.
    Стыдно задавать такой вопрос, но у меня не получается такой примитив как отображение окна с собственной иконкой. То есть я скопипастил окно из третьего урока Изцелиона, и решил поменять у него иконку. И, блин, не получается.

    В файле .rc прописал
    #define IDI_ICON1 1
    IDI_ICON ICON "Res\icon.ico"

    В асм-файле:
    Код (Text):
    1.    
    2. invoke LoadIcon,hInst,1  
    3.     push eax
    4.     pop wc.hIcon
    И, вроде бы, в других примерах к МАСМу так и делают, но у меня ничего не получилось:dntknw: Окно создается, но со стандартной иконкой.
    Наверняка, пропустил какую-то мелочь, а сам с непривычки не найду. Если у кого-то есть время, посмотрите, пожалуйста.

    И еще вдогонку вопрос. Копипастю я в РадАсме. И этот РадАсм почемуто не хочет компилировать мое приложение. Получаются только .res и .obj файлы, а экзешник не создается. В чем причина я не пойму. Выдает только: Make error(s) occured. Хотя батником компилируется нормально. Аттачу весь проект (4 кб) к посту.
     
  2. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    IDI_ICON1 != IDI_ICON != 1
     
  3. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Sturgeon

    SetIcon кто вызывать будет?

    А лучше её указать при регистрации класса окна.
    Код (Text):
    1. RegisterClassEx(CONST WNDCLASSEX *lpwcx);
    В WNDCLASSEX есть поле HICON hIcon;
     
  4. Sturgeon

    Sturgeon New Member

    Публикаций:
    0
    Регистрация:
    17 окт 2006
    Сообщения:
    111
    Так... ковыряю исходник кейгена от dr_golova

    У него файл .rc состоит из одной строчки "500 ICON "KG.ICO""

    Да, к IDI_ICON1 забыл дописать единичку. А вообще, это я как понимаю, к тому, что для ресурсов нельзя назначать ID=1? Зарезервированное значение? А какие тогда можно?
    Видел в примерах к МАСМУ такое определение, правда не для картинок и иконок, а для сообщений
    #define IDM_OPEN 1
    То есть для сообщений можно ID=1, а для картинок нельзя?

    Booster
    Так я и пытаюсь.. при регистрации...
     
  5. Sturgeon

    Sturgeon New Member

    Публикаций:
    0
    Регистрация:
    17 окт 2006
    Сообщения:
    111
    Все. Со всем разобрался!
    Прошу прощения за беспокойство.
     
  6. DarkWanderer

    DarkWanderer New Member

    Публикаций:
    0
    Регистрация:
    11 июл 2006
    Сообщения:
    333
    Адрес:
    Барнаул.
    Sturgeon

    Quantum сказал (#2), что идентификатор, описываемый в ресурсе, должен совпадать с id, по которому приложение грузит чего из ресурса. Он же сам не догадается, компьютер то. Имена идентификаторов в исходниках проги и ресурса могут различаться, как у тебя, но лучше за этим следить и учиться делать аккуратно сразу.

    Числа, которые ты можешь использовать, их много. Лучше тоже сразу разбивать в ресурсе. Т.е. на меню отбил там с 1000 по 2000, на иконки и пр. 800-900. Просто удобно и исключает возможность ошибки в большом приложении.
    Как настроишь, так и будет. rsrc.rc это имя, которое используют создатели пакета masm в своих bat и example'ах.

    P.S. имя учетной записи "хозяин", интересно;).

    >разобрался
    А я тогда чего писал? Не успел, однако.
     
  7. Sturgeon

    Sturgeon New Member

    Публикаций:
    0
    Регистрация:
    17 окт 2006
    Сообщения:
    111
    DarkWanderer
    Спасибо за совет.
    Я сам тормозил. Сначала добавлял файлы в проект, потом удалял, переименовывал...
    В "проект/настройки проекта/Main files" выставил все как должно быть и заработало!

    :) никакой конфеденциальности, блин...