FAQ:WinAPI VCPP — различия между версиями

Материал из Весельчак У
Перейти к: навигация, поиск
(Ответы на часто задаваемые вопросы по Windows API и VC++.)
 
(не показано 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]]
+

Текущая версия на 14:12, 9 января 2010

Ответы на часто задаваемые вопросы по Windows API и VC++.

Составлено по материалам форума программистов.

Вы можете принять участие в подготовке материала на нашем форуме.

  1. Работа с COM и ActiveX.
  2. Работа_с_DLL.
  3. Работа с Visual Studio.
  4. Вопросы отладки и выполнения программ.
  5. Вопросы по MFC.
  6. Общие вопросы GUI с Win32 API.
  7. Контекст устройства (DC), рисование и печать.
  8. Работа с памятью.
  9. Общие вопросы программирования.