FAQ:WinAPI VCPP — различия между версиями
Материал из Весельчак У
RXL (обсуждение | вклад) |
RXL (обсуждение | вклад) |
||
Строка 3: | Строка 3: | ||
Составлено по материалам [http://forum.shelek.ru форума программистов]. | Составлено по материалам [http://forum.shelek.ru форума программистов]. | ||
+ | ==Работа с COM и ActiveX.== | ||
#[[FAQ:WinAPI VCPP:файл и версия класса ActiveX|У меня есть наименование класса ActiveX. Мне необходимо узнать в каком файле он находится, и какой версии этот файл.]] | #[[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:разделяемые переменные в dll|Имеется DLL. В ней есть некоторые данные (скажем, массив int). Как сделать, чтобы переменные в DLL были одними и теми же для всех программ, использующих эту DLL? (Например, при загрузке DLL в массиве нет данных. Каждая программа добавит в массив новые данные.)]] | #[[FAQ:WinAPI VCPP:разделяемые переменные в dll|Имеется DLL. В ней есть некоторые данные (скажем, массив int). Как сделать, чтобы переменные в DLL были одними и теми же для всех программ, использующих эту DLL? (Например, при загрузке DLL в массиве нет данных. Каждая программа добавит в массив новые данные.)]] | ||
− | #[[FAQ:WinAPI VCPP: | + | #[[FAQ:WinAPI VCPP:общие для разных процессов переменные в DLL|Я написал DLL, которую используют несколько приложений. Всё работает, но когда происходит очередной вызов функции из DLL, почему то, данные в функции обнуляются. С чем это связано?]] |
− | #[[FAQ:WinAPI VCPP: | + | #[[FAQ:WinAPI VCPP:экспорт функций из DLL|Я создал простой проект DLL на VC++ 6.0. Все скомпилировалось нормально. Но в другой программе не могу вызвать функцию из DLL - программа не может найти функцию по имени.]] |
− | #[[FAQ:WinAPI VCPP: | + | #[[FAQ:WinAPI VCPP:значение переменной для вызывающего процесса/потока из своей собственной DLL|Каким образом можно установить значение переменной для вызывающего процесса или потока из своей собственной DLL?]] |
− | #[[FAQ: | + | |
− | #[[FAQ:WinAPI VCPP: | + | ==Работа с Visual Studio.== |
+ | #[[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:запустить две программы под отладчиком в 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:доступ к объекту класса CFrameWnd из функций-членов класса CMyView|Каким образом можно получить доступ к объекту в классе CFrameWnd из функций-членов класса CMyView?]] | ||
− | |||
#[[FAQ:WinAPI VCPP:программно выравнять CDialogBar|Как программно расположить один CDialogBar под другим при их вертикальном расположении?]] | #[[FAQ:WinAPI VCPP:программно выравнять CDialogBar|Как программно расположить один CDialogBar под другим при их вертикальном расположении?]] | ||
#[[FAQ:WinAPI VCPP:добавить возврат каретки к переменной типа CString|Как добавить возврат каретки к переменной типа CString?]] | #[[FAQ:WinAPI VCPP:добавить возврат каретки к переменной типа CString|Как добавить возврат каретки к переменной типа CString?]] | ||
#[[FAQ:WinAPI VCPP:акселераторы в MFC приложении|Как в диалоговом MFC приложении добавить accelerator'ы? В редакторе ресурсов создаю, а применить не могу.]] | #[[FAQ:WinAPI VCPP:акселераторы в MFC приложении|Как в диалоговом MFC приложении добавить accelerator'ы? В редакторе ресурсов создаю, а применить не могу.]] | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
#[[FAQ:WinAPI VCPP:диалог выбора папок|Как с помощью CFileDialog разрешить выбирать только папки?]] | #[[FAQ:WinAPI VCPP:диалог выбора папок|Как с помощью CFileDialog разрешить выбирать только папки?]] | ||
#[[FAQ:WinAPI VCPP:обработка нажания клавиш в CDialog|Как в CDialog-based классе получить коды клавиш, которые нажимает пользователь? Пробовал добавлять обработчики OnChar() и OnKeyDown(), но эти обработчики вообще не вызываются.]] | #[[FAQ:WinAPI VCPP:обработка нажания клавиш в CDialog|Как в CDialog-based классе получить коды клавиш, которые нажимает пользователь? Пробовал добавлять обработчики OnChar() и OnKeyDown(), но эти обработчики вообще не вызываются.]] | ||
− | |||
− | |||
− | |||
#[[FAQ:WinAPI VCPP:удалить контрол из собственного обработчика|Нужно удалить контрол (CComboBox) из диалога. Причём это надо сделать из обработчика сообщения этого контрола.]] | #[[FAQ:WinAPI VCPP:удалить контрол из собственного обработчика|Нужно удалить контрол (CComboBox) из диалога. Причём это надо сделать из обработчика сообщения этого контрола.]] | ||
− | |||
− | |||
#[[FAQ:WinAPI VCPP:динамическая загрузка ресурсов в ATL проекте|Как динамически подгрузить ресурсы к ATL проекту?]] | #[[FAQ:WinAPI VCPP:динамическая загрузка ресурсов в ATL проекте|Как динамически подгрузить ресурсы к ATL проекту?]] | ||
#[[FAQ:WinAPI VCPP:динамическая загрузка ресурсов в MFC проекте|Как динамически подгрузить ресурсы к MFC проекту?]] | #[[FAQ:WinAPI VCPP:динамическая загрузка ресурсов в MFC проекте|Как динамически подгрузить ресурсы к MFC проекту?]] | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
#[[FAQ:WinAPI VCPP:инициализация CComboBox|Где лучше устанавливать начальные значения элемента CComboBox?]] | #[[FAQ:WinAPI VCPP:инициализация CComboBox|Где лучше устанавливать начальные значения элемента CComboBox?]] | ||
− | |||
#[[FAQ:WinAPI VCPP:вызов метода CMainFrame из любого места программы|Как вызвать метод главного окна (если используется класс CMainFrame) из любого места программы?]] | #[[FAQ:WinAPI VCPP:вызов метода CMainFrame из любого места программы|Как вызвать метод главного окна (если используется класс CMainFrame) из любого места программы?]] | ||
#[[FAQ:WinAPI VCPP:запрет появления полос прокруток на CFormView|Как запретить появление полос прокруток на форме класса CFormView, когда пользователь делает размер главного окна меньше размера формы?]] | #[[FAQ:WinAPI VCPP:запрет появления полос прокруток на CFormView|Как запретить появление полос прокруток на форме класса CFormView, когда пользователь делает размер главного окна меньше размера формы?]] | ||
− | |||
− | |||
#[[FAQ:WinAPI VCPP:конвертировать char* в CString|Как конвертировать массив char[] в CString?]] | #[[FAQ:WinAPI VCPP:конвертировать char* в CString|Как конвертировать массив char[] в CString?]] | ||
#[[FAQ:WinAPI VCPP:зарезервировать буфер в CString|Как зарезервировать в CString буфер нужной длины?]] | #[[FAQ:WinAPI VCPP:зарезервировать буфер в CString|Как зарезервировать в CString буфер нужной длины?]] | ||
− | |||
#[[FAQ:WinAPI VCPP:убрать главное меню из окна CMainFrame|Как убрать главное меню из окна CMainFrame?]] | #[[FAQ:WinAPI VCPP:убрать главное меню из окна CMainFrame|Как убрать главное меню из окна CMainFrame?]] | ||
− | |||
#[[FAQ:WinAPI VCPP:всплывающая подсказка для CWnd|Как сделать всплывающую подсказку для класса CWnd и классов, от него производных?]] | #[[FAQ:WinAPI VCPP:всплывающая подсказка для CWnd|Как сделать всплывающую подсказку для класса CWnd и классов, от него производных?]] | ||
− | |||
− | |||
#[[FAQ:WinAPI VCPP:определить, что пользователь изменил текст в CRichEditView|Как узнать, что пользователь меняет текст в приложении на основе CRichEditView?]] | #[[FAQ:WinAPI VCPP:определить, что пользователь изменил текст в CRichEditView|Как узнать, что пользователь меняет текст в приложении на основе CRichEditView?]] | ||
#[[FAQ:WinAPI VCPP:отличие CArray::GetSize от CArray::GetCount|Чем отличается метод CArray::GetSize от метода CArray::GetCount?]] | #[[FAQ:WinAPI VCPP:отличие CArray::GetSize от CArray::GetCount|Чем отличается метод CArray::GetSize от метода CArray::GetCount?]] | ||
− | |||
#[[FAQ:WinAPI VCPP:поменять иконку элемента в CListCtrl|Как поменять иконку у элемента item в CListCtrl?]] | #[[FAQ:WinAPI VCPP:поменять иконку элемента в CListCtrl|Как поменять иконку у элемента item в CListCtrl?]] | ||
− | #[[FAQ:WinAPI VCPP: | + | #[[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:получить хендл элемента управления по идентификатору|Как получить хендл элемента управления, зная его идентификатор?]] | ||
#[[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:доступ к графическим ресурсам элементов текущей темы оформления Windows|Как получить доступ к графическим ресурсам элементов текущей темы оформления Windows?]] | ||
− | |||
− | |||
− | |||
− | |||
#[[FAQ:WinAPI VCPP:фон окна|Как сделать, чтобы у окна был черный фон?]] | #[[FAQ:WinAPI VCPP:фон окна|Как сделать, чтобы у окна был черный фон?]] | ||
− | #[[FAQ:WinAPI VCPP: | + | #[[FAQ:WinAPI VCPP:удалить пункт меню|Как удалить из меню пункт?]] |
+ | #[[FAQ:WinAPI VCPP:добавить пункт меню|Как добавить пункт в меню?]] | ||
#[[FAQ:WinAPI VCPP:добавление меню в диалог|Как в диалог добавить меню?]] | #[[FAQ:WinAPI VCPP:добавление меню в диалог|Как в диалог добавить меню?]] | ||
− | |||
#[[FAQ:WinAPI VCPP:отключить системное меню|Как в главном окне отключить системное меню (в левом верхнем углу) и кнопки (в правом верхнем углу)?]] | #[[FAQ:WinAPI VCPP:отключить системное меню|Как в главном окне отключить системное меню (в левом верхнем углу) и кнопки (в правом верхнем углу)?]] | ||
#[[FAQ:WinAPI VCPP:запретить кнопку|Как запретить пользователю нажать на кнопку?]] | #[[FAQ:WinAPI VCPP:запретить кнопку|Как запретить пользователю нажать на кнопку?]] | ||
− | + | ||
− | #[[FAQ:WinAPI VCPP: | + | ==Контекст устройства (DCD), рисование и печать.== |
− | #[[FAQ:WinAPI VCPP: | + | #[[FAQ:WinAPI VCPP:вывод на печать с помощью DCD|Как вывести на печать то, что я нарисовал в контексте устройства (класс CDC)?]] |
− | + | #[[FAQ:WinAPI VCPP:рисование на контексте устройства|Как нарисовать линию или прямоугольник на контексте устройства (CDC)? Как выбрать цвет и толщину линии?]] | |
− | #[[FAQ:WinAPI VCPP: | + | #[[FAQ:WinAPI VCPP:сменить шрифт контекста устройства|Как сменить шрифт при выводе текста на CDC?]] |
− | + | #[[FAQ:WinAPI VCPP:нарисовать прямоугольник с вертикальным цветовым градиентом|Как нарисовать прямоугольник с вертикальным цветовым градиентом?]] | |
− | + | #[[FAQ:WinAPI VCPP:определить ширину и высоту текста при выводе на контекст устройства|Как при выводе текста на контекст устройства определить ширину и высоту выведенных символов текста в пикселах?]] | |
− | #[[FAQ:WinAPI VCPP: | + | |
− | #[[FAQ:WinAPI VCPP: | + | ==Работа с памятью.== |
− | #[[FAQ:WinAPI VCPP: | + | #[[FAQ:WinAPI VCPP:заполнить блок памяти значением|Как заполнить блок памяти определённым значением?]] |
− | #[[FAQ:WinAPI VCPP: | + | #[[FAQ:WinAPI VCPP:сравнить два блока памяти|Как сравнить два блока памяти на равенство значений?]] |
− | + | #[[FAQ:WinAPI VCPP:скопировать блок памяти|Как скопировать блок памяти?]] | |
− | #[[FAQ:WinAPI VCPP: | + | |
− | #[[FAQ: | + | ==Общие вопросы программирования.== |
− | #[[FAQ:WinAPI VCPP: | + | #[[FAQ:ANSI CPP:обращение к переменной или методу базового класса|Как обратиться к переменной или методу базового класса?]] |
− | #[[FAQ:WinAPI VCPP: | + | #[[FAQ:WinAPI VCPP:записать данные в файл|Как записать данные в файл?]] |
− | #[[FAQ:WinAPI VCPP: | + | #[[FAQ:WinAPI VCPP:создать exe-шник меньше 24-х килобайт|Как создать в VC++ exe-шник меньше 24-х килобайт?]] |
− | #[[FAQ:WinAPI VCPP: | + | #[[FAQ:WinAPI VCPP:взаимные зависимости классов|Имеется класс Class1, содержащий член типа "Class2*". А в Class2 имеется член типа "Class1*". Компилятор выдаёт ошибку. Что надо делать?]] |
− | #[[FAQ:WinAPI VCPP: | + | #[[FAQ:WinAPI VCPP:ошибки в макросах|Я написал в VC++ простейший макрос, где невозможно ошибиться, а компилятор всё же выдаёт ошибку.]] |
− | + | #[[FAQ:WinAPI VCPP:прервать длительный процесс вычисления|У меня в программе имеется процедура, которая производит очень много вычислений. Как сделать так, чтобы пользователь мог прервать процесс вычислений?]] | |
− | + | ||
#[[FAQ:WinAPI VCPP:перекодировка между windows-1251 и UTF-8|Как производится конвертация из кодировки UTF8 в 1251 и наоборот?]] | #[[FAQ:WinAPI VCPP:перекодировка между windows-1251 и UTF-8|Как производится конвертация из кодировки UTF8 в 1251 и наоборот?]] | ||
#[[FAQ:WinAPI VCPP:доступ к базам Access из VC.NET|Как работать с базой данных Access из программы на VC.NET?]] | #[[FAQ:WinAPI VCPP:доступ к базам Access из VC.NET|Как работать с базой данных Access из программы на VC.NET?]] | ||
− | #[[FAQ:WinAPI VCPP: | + | #[[FAQ:WinAPI VCPP:получение имени класса и метода|Есть ли какой-нибудь макрос в VC7, возвращающий строку вида ClassName::FunctionName внутри соответствующей функции?]] |
− | + | #[[FAQ:WinAPI VCPP:локализация ресурсов приложения|Когда я запускаю программу, все надписи на русском языке теряются - показываются вопросики. Что делать?]] | |
− | + | #[[FAQ:WinAPI VCPP:проекция файла в память|Как открыть проекцию файла в память и как с ней работать?]] | |
− | + | ||
− | #[[FAQ:WinAPI VCPP: | + | |
− | #[[FAQ:WinAPI VCPP: | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
[[Category:FAQ]] [[Category:FAQ:WinAPI_VCPP]] | [[Category:FAQ]] [[Category:FAQ:WinAPI_VCPP]] |
Версия 22:06, 3 октября 2009
Содержание
- 1 Ответы на часто задаваемые вопросы по Windows API и VC++.
- 2 Работа с COM и ActiveX.
- 3 Работа с DLL.
- 4 Работа с Visual Studio.
- 5 Вопросы отладки и выполнения программ.
- 6 Вопрос по MFC.
- 7 Общие вопросы GUI с Win32 API.
- 8 Контекст устройства (DCD), рисование и печать.
- 9 Работа с памятью.
- 10 Общие вопросы программирования.
Ответы на часто задаваемые вопросы по 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 можно найти или вырезать часть строки?
- Как сделать, чтобы при выпадении списка у ComboBox была не одна строка, а больше? Вроде все свойства покрутил, не помогает: вместо выпадающего списка - одна строка и скролл.
- Имеется класс, производный от 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?
- Как сделать, чтобы у окна был черный фон?
- Как удалить из меню пункт?
- Как добавить пункт в меню?
- Как в диалог добавить меню?
- Как в главном окне отключить системное меню (в левом верхнем углу) и кнопки (в правом верхнем углу)?
- Как запретить пользователю нажать на кнопку?
Контекст устройства (DCD), рисование и печать.
- Как вывести на печать то, что я нарисовал в контексте устройства (класс CDC)?
- Как нарисовать линию или прямоугольник на контексте устройства (CDC)? Как выбрать цвет и толщину линии?
- Как сменить шрифт при выводе текста на CDC?
- Как нарисовать прямоугольник с вертикальным цветовым градиентом?
- Как при выводе текста на контекст устройства определить ширину и высоту выведенных символов текста в пикселах?
Работа с памятью.
- Как заполнить блок памяти определённым значением?
- Как сравнить два блока памяти на равенство значений?
- Как скопировать блок памяти?
Общие вопросы программирования.
- Как обратиться к переменной или методу базового класса?
- Как записать данные в файл?
- Как создать в VC++ exe-шник меньше 24-х килобайт?
- Имеется класс Class1, содержащий член типа "Class2*". А в Class2 имеется член типа "Class1*". Компилятор выдаёт ошибку. Что надо делать?
- Я написал в VC++ простейший макрос, где невозможно ошибиться, а компилятор всё же выдаёт ошибку.
- У меня в программе имеется процедура, которая производит очень много вычислений. Как сделать так, чтобы пользователь мог прервать процесс вычислений?
- Как производится конвертация из кодировки UTF8 в 1251 и наоборот?
- Как работать с базой данных Access из программы на VC.NET?
- Есть ли какой-нибудь макрос в VC7, возвращающий строку вида ClassName::FunctionName внутри соответствующей функции?
- Когда я запускаю программу, все надписи на русском языке теряются - показываются вопросики. Что делать?
- Как открыть проекцию файла в память и как с ней работать?