|
2 / 2 / 1
Регистрация: 23.10.2011
Сообщений: 21
|
|
Очередные сюрпризы Visual C++01.11.2011, 16:16. Показов 887. Ответов 3
Метки нет (Все метки)
Осваиваю программирование Win32 API и постоянно сталкиваюсь с разными проблемами и непонятными вещами. Работаю в MS VS 2005.
Писал программку использующую Common Controls. То что сначала были конфликты типов данных связанные с уникодом и не линковался comctl32 это еще полбеды. Когда написал программку использующую статусную строку Statusbar к удивлению обнаружил, что она работает и без инициализации InitCommonControls(); хотя в литературе постоянно напоминается о необходимости инициализации. Но это продолжалось до тех пор, пока я не разместил статическое окно в виде серого прямоугольника. Вот тут компилятор начал ругаться на параметр SS_GRAYRECT, но до тех пор пока я не подключил инициализацию Common Controls. Так что же получается, в одних случаях можно инициализацию не делать, а в других нужно? Как-то непоследовательно. Еще возникли сложности с размещением на панели меню кнопки в виде картинки. Код из книги: HBITMAP hBitmap; int nDimension; ........ case WM_CREATE: nDimension=GetSystemMetrics(SM_CYMENU); hBitmap=LoadImage(hInst, pImage, IMAGE_BITMAP, nDimension*2,nDimension, LR_LOADFROMFILE); AppendMenu(GetMenu(hWnd),MF_BITMAP,ID_PI CT,hBitmap); hwndStatusBar = CreateStatusWindow(WS_CHILD | WS_VISIBLE, L"Menu Sample", hWnd, ID_STATUSBAR); Но реально пришлось сделать: HBITMAP hBitmap; int nDimension; ......... case WM_CREATE: nDimension=GetSystemMetrics(SM_CYMENU); hBitmap=(HBITMAP)LoadImage(hInst, pImage, IMAGE_BITMAP, nDimension*2,nDimension, LR_LOADFROMFILE); AppendMenu(GetMenu(hWnd),MF_BITMAP,ID_PI CT,(LPCWSTR)hBitmap); hwndStatusBar = CreateStatusWindow(WS_CHILD | WS_VISIBLE, L"Menu Sample", hWnd, ID_STATUSBAR); Сначала компилятор ругался что в строке hBitmap=LoadImage(hInst, pImage, IMAGE_BITMAP, не может преобразовать HANDLE в HBITMAP. Что тут за прикол? Все точно как в книге, но выдает ошибку. Потом в строке AppendMenu(GetMenu(hWnd),MF_BITMAP,ID_PI CT,hBitmap); компилятор ругался на 4-й параметр, пришлось добавить приведение типа к LPCWSTR. После всех этих "нововведений" программка таки заработала. А как же это раньше работало???? Или это особенности раннего стиля? Надо сказать что примеры в книгах зачастую написаны для 6-й студии, ну в лучшем случае для 2003-й, а то и вообще для Билдера. Они настолько все отличаются?
0
|
|
| 01.11.2011, 16:16 | |
|
Ответы с готовыми решениями:
3
Очередные пракозни "мвд" или очередные вкладки браузеров Какие "сюрпризы" ожидают HTML/CS/JS-разработчика при переходе на ASP.NET MVC Очередные массивы |
|
60 / 60 / 10
Регистрация: 27.10.2011
Сообщений: 185
|
|
| 01.11.2011, 20:58 | |
|
Посмотрите как HBITMAP определён.
А на AppendMenu ругается потому, что по дефолту она явлется AppendMenuW (для юникод). Если не хотите делать приведение типов, то можно писать AppendMenuA или попробовать написат #undef UNICODE (в этом не уверен, от студии зависит).
1
|
|
|
2 / 2 / 1
Регистрация: 23.10.2011
Сообщений: 21
|
|
| 01.11.2011, 23:41 [ТС] | |
|
0
|
|
|
Делаю внезапно и красиво
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
|
|
| 02.11.2011, 17:33 | |
|
Не нужно писать #undef UNICODE!
Нужно зайти в настройки проекта и там уже его тип поменять. Не по теме: Понавыдумывают костылей, а потом опять студия у них виновата...
0
|
|
| 02.11.2011, 17:33 | |
|
Помогаю со студенческими работами здесь
4
Очередные Проблемы Очередные проблемы с setInterval Очередные работы с массивом
очередные Фокусы Яши =( Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2.
Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники".
В. . .
|
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии.
. . .
|
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
|
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут.
https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc
Первый документ красиво выглядит, но без схемы.
Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
|
|
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере".
Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
|
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти".
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
В качестве источника данных. . .
|
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер
Написал заготовку:
dotnet new console --aot -o UrlHandler
var items = args. Split(":");
var tag = items;
var id = items;
var executable = args;. . .
|
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3.
Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
|