FAQ:WinAPI VCPP — различия между версиями
Материал из Весельчак У
RXL (обсуждение | вклад) (→Ответы на часто задаваемые вопросы по Windows API и VC++.) |
RXL (обсуждение | вклад) |
||
Строка 141: | Строка 141: | ||
#[[FAQ:WinAPI VCPP:локализация ресурсов приложения|Когда я запускаю программу, все надписи на русском языке теряются - показываются вопросики. Что делать?]] | #[[FAQ:WinAPI VCPP:локализация ресурсов приложения|Когда я запускаю программу, все надписи на русском языке теряются - показываются вопросики. Что делать?]] | ||
#[[FAQ:WinAPI VCPP:проекция файла в память|Как открыть проекцию файла в память и как с ней работать?]] | #[[FAQ:WinAPI VCPP:проекция файла в память|Как открыть проекцию файла в память и как с ней работать?]] | ||
− | #[[C++ сериализация данных|Сериализация данных в C++.]] | + | #[[FAQ:STL:C++ сериализация данных|Сериализация данных в C++.]] |
[[Category:FAQ]] [[Category:FAQ:WinAPI_VCPP]] [[Category:FAQ:MFC]] | [[Category:FAQ]] [[Category:FAQ:WinAPI_VCPP]] [[Category:FAQ:MFC]] |
Версия 12:10, 4 октября 2009
Ответы на часто задаваемые вопросы по Windows API и VC++.
Составлено по материалам форума программистов.
Вы можете принять участие в подготовке материала на нашем форуме.
Работа с COM и ActiveX.
- У меня есть наименование класса ActiveX. Мне необходимо узнать в каком файле он находится, и какой версии этот файл.
- VC++.NET. На форму установил ActiveX ListView. Как объявить класс и переменную для этого элемента?
- Как корректно перевести тип BSTR в CString и наоборот?
- Не могу обратиться к COM из дополнительного потока. Мне пишут - "CoInitialize() не вызвано".
Работа с DLL.
- Имеется DLL. В ней есть некоторые данные (скажем, массив int). Как сделать, чтобы переменные в DLL были одними и теми же для всех программ, использующих эту DLL? (Например, при загрузке DLL в массиве нет данных. Каждая программа добавит в массив новые данные.)
- Я написал DLL, которую используют несколько приложений. Всё работает, но когда происходит очередной вызов функции из DLL, почему то, данные в функции обнуляются. С чем это связано?
- Я создал простой проект DLL на VC++ 6.0. Все скомпилировалось нормально. Но в другой программе не могу вызвать функцию из DLL - программа не может найти функцию по имени.
- Каким образом можно установить значение переменной для вызывающего процесса или потока из своей собственной DLL?
Работа с Visual Studio.
- Как мне скопировать класс из одного проекта в другой? Код класса находится в файлах проекта в виде исходников.
- Что означают сообщения, которые студия выводит при компиляции, вроде таких: Loaded 'C:\WINDOWS\SYSTEM\WSOCK32.DLL', no matching symbolic information found?
- Как настроить количество пробелов в табуляции?
- Как автоматически расставить отступы?
- Поиск границ блока.
- Вертикальное выделение текста.
- Возможно ли использование файлов чистого С и С++ в одном проекте? Если да, то каковы должны быть настройки компилятора? А то ругается на Unexpected end of file while looking for precompiled header directive.
Вопросы отладки и выполнения программ.
- Имеются две программы, взаимодействующие между собой. Можно ли в MS VC6 запустить под отладчиком одновременно две программы?
- Почему на моем компьютере экзешник, созданный в MFC запускается, а на других компьютерах - нет? Требует какую-то dll.
- Каким способом exe файл может заменить самого себя?
- Как в проекте VC6 MFC программно получить путь, откуда был запущен экзешник (исполняемый модуль) самой программы?
- Как получить полный путь к экзешнику из самой программы?
- Как в отладчике Visual С++ просмотреть содержимое std::vector<string>?
- Как из программы определить каталог, в котором находится эта программа?
- Как получить короткое и длинное имя файла?
- Как программно установить переменные окружения?
- Как получить полное имя пользователя и организации, то есть то, что на диалоге system properties (горячая кнопка Win+Break) на закладке General перечислено под пунктом Registred To?
- Как получить список всех процессов, включая idle?
- Я запускаю экзешник при помощи ::ShellExecute(). Процедура тут же возвращает управление, а как дождаться, когда запущенный процесс завершится, только потом продолжить выполнение программы?
Вопрос по MFC.
- Если окно объекта, производного от CScrollView, имеет полосы прокрутки, то как определить координаты курсора мыши?
- Каким образом можно получить доступ к объекту в классе CFrameWnd из функций-членов класса CMyView?
- Как программно расположить один CDialogBar под другим при их вертикальном расположении?
- Как добавить возврат каретки к переменной типа CString?
- Как в диалоговом MFC приложении добавить accelerator'ы? В редакторе ресурсов создаю, а применить не могу.
- Как с помощью CFileDialog разрешить выбирать только папки?
- Как в CDialog-based классе получить коды клавиш, которые нажимает пользователь? Пробовал добавлять обработчики OnChar() и OnKeyDown(), но эти обработчики вообще не вызываются.
- Нужно удалить контрол (CComboBox) из диалога. Причём это надо сделать из обработчика сообщения этого контрола.
- Как динамически подгрузить ресурсы к ATL проекту?
- Как динамически подгрузить ресурсы к MFC проекту?
- Где лучше устанавливать начальные значения элемента CComboBox?
- Как вызвать метод главного окна (если используется класс CMainFrame) из любого места программы?
- Как запретить появление полос прокруток на форме класса CFormView, когда пользователь делает размер главного окна меньше размера формы?
- Как конвертировать массив char[] в CString?
- Как зарезервировать в CString буфер нужной длины?
- Как убрать главное меню из окна CMainFrame?
- Как сделать всплывающую подсказку для класса CWnd и классов, от него производных?
- Как узнать, что пользователь меняет текст в приложении на основе CRichEditView?
- Чем отличается метод CArray::GetSize от метода CArray::GetCount?
- Как поменять иконку у элемента item в CListCtrl?
- Как в CString можно найти или вырезать часть строки?
- Имеется класс, производный от CDialog. Когда диалог в фокусе, нажатие на Enter или Esc приводит к закрытию диалога. Как это запретить?
- Почему список CComboBox не выпадает, хотя клавишами "вверх" и "вниз" значения перебираются?
- Как закрасить фон окна CWnd?
- Как узнать, когда после запуска приложение уже готово к работе?
- Как в MFC Grid control отобразить картинку в ячейке?
- Как при помощи IPicture отобразить картинку из файла?
- Как получить доступ к элементам управления панели CReBar, принадлежащей классу MainFrame?
- Как обработать сообщения, которые приходят к элементу управления?
- Как узнать количество установленных в CListCtrl столбцов?
- Почему не вызывается OnUpdate для пунктов меню (не получается ни затенить, ни отметку поставить)?
Общие вопросы GUI с Win32 API.
- Если известны абсолютные координаты точки на экране, как перевести эти координаты в относительные координаты некоторого известного окна?
- Когда я вывожу две строки (одна под другой), то положение символа в строках зависит от ширины символа, а хотелось бы, чтобы символы располагались один под другим.
- Я рисую новую иконку в ресурсах проекта VC6, но после запуска программы показывается старая иконка. Что делать?
- Как создать иконку в области уведомлений (системном трее)? Как определить, какие действия производит с иконкой пользователь? Как сделать анимацию иконки в трее? Как удалить иконку?
- Как сменить иконку у диалога или мейнфрейма? (поставить свою иконку из ресурсов)
- Как получить иконку приложения?
- Как создавать всплывающие подсказки (ToolTip)?
- Что делает функция ScrollWindow()?
- Как узнать значение цвета пиксела в определенной точке экрана (не окна формы)?
- Как загрузить и показать один из стандартных курсоров?
- Как запретить пользователю закрыть программу нажатием на кнопку с крестиком?
- Как создать на диалоге группу элементов "RadioButton" и как задать порядок их обхода клавишей Tab?
- Как перевести RichEdit в режим замены символов?
- Как под Windows отслеживать изменение файла?
- Как передать больше одного параметр в процедуру потока?
- Как работающая программа может определить, что пользователь завершает работу Windows?
- Как загрузить текстовую строку из ресурса?
- Как переключить раскладку клавиатуры в другом (активном) процессе?
- Как получить хендл элемента управления, зная его идентификатор?
- Как из дочернего окна закрыть приложение?
- Как выводят картинку-логотип (splash screen) при запуске программы?
- Как работать с буфером обмена?
- Как изменить цвет рамки приложения?
- Как программно поменять настройки Internet Explorer?
- В чём разница между сообщениями WM_MOVE и WM_MOVING?
- Как определить первый свободный ID, который можно использовать при динамическом создании элементов управления?
- Как определить, что курсор мыши вышел за границу окна?
- Как отобразить на элементах управления промежуточные результаты длительных вычислений?
- Когда размещаю компонент RichEdit на форму, программа запускается и тут же закрывается. Что здесь не так?
- Как сделать обработчик сообщения для нескольких элементов управления сразу?
- Как получить доступ к графическим ресурсам элементов текущей темы оформления Windows?
- Как сделать, чтобы у окна был черный фон?
- Как удалить из меню пункт?
- Как добавить пункт в меню?
- Как в диалог добавить меню?
- Как в главном окне отключить системное меню (в левом верхнем углу) и кнопки (в правом верхнем углу)?
- Как запретить пользователю нажать на кнопку?
- Как позволить пользователю начать ввод новой строки в многострочном поле редактирования?
- Как сделать, чтобы при выпадении списка у ComboBox была не одна строка, а больше? Вроде все свойства покрутил, не помогает: вместо выпадающего списка - одна строка и скролл.
Контекст устройства (DCD), рисование и печать.
- Как вывести на печать то, что я нарисовал в контексте устройства (класс CDC)?
- Как нарисовать линию или прямоугольник на контексте устройства (CDC)? Как выбрать цвет и толщину линии?
- Как сменить шрифт при выводе текста на CDC?
- Как нарисовать прямоугольник с вертикальным цветовым градиентом?
- Как при выводе текста на контекст устройства определить ширину и высоту выведенных символов текста в пикселах?
Работа с памятью.
- Как заполнить блок памяти определённым значением?
- Как сравнить два блока памяти на равенство значений?
- Как скопировать блок памяти?
Общие вопросы программирования.
- Как обратиться к переменной или методу базового класса?
- Как записать данные в файл?
- Как создать в VC++ exe-шник меньше 24-х килобайт?
- Имеется класс Class1, содержащий член типа "Class2*". А в Class2 имеется член типа "Class1*". Компилятор выдаёт ошибку. Что надо делать?
- Я написал в VC++ простейший макрос, где невозможно ошибиться, а компилятор всё же выдаёт ошибку.
- У меня в программе имеется процедура, которая производит очень много вычислений. Как сделать так, чтобы пользователь мог прервать процесс вычислений?
- Как производится конвертация из кодировки UTF8 в 1251 и наоборот?
- Как работать с базой данных Access из программы на VC.NET?
- Есть ли какой-нибудь макрос в VC7, возвращающий строку вида ClassName::FunctionName внутри соответствующей функции?
- Когда я запускаю программу, все надписи на русском языке теряются - показываются вопросики. Что делать?
- Как открыть проекцию файла в память и как с ней работать?
- Сериализация данных в C++.