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