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

Материал из Весельчак У
Перейти к: навигация, поиск
(Добавлена статья "WinAPI VCPP:получить значение пиксела на экране".)
Строка 1: Строка 1:
==Ответы на часто задаваемые вопросы по Windows API и VC++.==
+
== Ответы на часто задаваемые вопросы по Windows API и VC++. ==
Составлено по материалам [http://forum.shelek.ru форума программистов].
+
  
# [[FAQ:WinAPI VCPP:файл и версия класса ActiveX|У меня есть наименование класса ActiveX. Мне необходимо узнать в каком файле он находится, и какой версии этот файл.]]
+
Составлено по материалам [http://forum.shelek.ru форума программистов].  
# [[FAQ:WinAPI VCPP:разделяемые переменные в dll|Имеется DLL. В ней есть некоторые данные (скажем, массив int). Как сделать, чтобы переменные в DLL были одними и теми же для всех программ, использующих эту DLL? (Например, при загрузке DLL в массиве нет данных. Каждая программа добавит в массив новые данные.)]]
+
# [[FAQ:WinAPI VCPP:CScrollView и определение координат курсора мыши|Если окно объекта, производного от CScrollView, имеет полосы прокрутки, то как определить координаты курсора мыши?]]
+
# [[FAQ:WinAPI VCPP:преобразование абсолютных координат экрана в относительные координаты окна|Если известны абсолютные координаты точки на экране, как перевести эти координаты в относительные координаты некоторого известного окна?]]
+
# [[FAQ:WinAPI VCPP:моноширинный шрифт|Когда я вывожу две строки (одна под другой), то положение символа в строках зависит от ширины символа, а хотелось бы, чтобы символы располагались один под другим.]]
+
# [[FAQ:ANSI CPP:обращение к переменной или методу базового класса|Как обратиться к переменной или методу базового класса?]]
+
# [[FAQ:WinAPI VCPP:записать данные в файл|Как записать данные в файл?]]
+
# [[FAQ:WinAPI VCPP:запустить две программы под отладчиком в VC6|Имеются две программы, взаимодействующие между собой. Можно ли в MS VC6 запустить под отладчиком одновременно две программы?]]
+
# [[FAQ:WinAPI VCPP:доступ к объекту класса CFrameWnd из функций-членов класса CMyView|Каким образом можно получить доступ к объекту в классе CFrameWnd из функций-членов класса CMyView?]]
+
# [[FAQ:WinAPI VCPP:сохранить иконку в ресурсах VC6|Я рисую новую иконку в ресурсах проекта VC6, но после запуска программы показывается старая иконка. Что делать?]]
+
# [[FAQ:WinAPI VCPP:программно выравнять CDialogBar|Как программно расположить один CDialogBar под другим при их вертикальном расположении?]]
+
# [[FAQ:WinAPI VCPP:добавить возврат каретки к переменной типа CString|Как добавить возврат каретки к переменной типа CString?]]
+
# [[FAQ:WinAPI VCPP:акселераторы в MFC приложении|Как в диалоговом MFC приложении добавить accelerator'ы? В редакторе ресурсов создаю, а применить не могу.]]
+
# [[FAQ:WinAPI VCPP:создать exe-шник меньше 24-х килобайт|Как создать в VC++ exe-шник меньше 24-х килобайт?]]
+
# [[FAQ:WinAPI VCPP:удалить пункт меню|Как удалить из меню пункт?]]
+
# [[FAQ:WinAPI VCPP:добавить пункт меню|Как добавить пункт в меню?]]
+
# [[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:обратиться к COM из дополнительного потока|Не могу обратиться к COM из дополнительного потока. Мне пишут - "CoInitialize() не вызвано".]]
+
# [[FAQ:WinAPI VCPP:диалог выбора папок|Как с помощью CFileDialog разрешить выбирать только папки?]]
+
# [[FAQ:WinAPI VCPP:обработка нажания клавиш в CDialog|Как в CDialog-based классе получить коды клавиш, которые нажимает пользователь? Пробовал добавлять обработчики OnChar() и OnKeyDown(), но эти обработчики вообще не вызываются.]]
+
# [[FAQ:WinAPI VCPP:заполнить блок памяти значением|Как заполнить блок памяти определённым значением?]]
+
# [[FAQ:WinAPI VCPP:сравнить два блока памяти|Как сравнить два блока памяти на равенство значений?]]
+
# [[FAQ:WinAPI VCPP:скопировать блок памяти|Как скопировать блок памяти?]]
+
# [[FAQ:WinAPI VCPP:удалить контрол из собственного обработчика|Нужно удалить контрол (CComboBox) из диалога. Причём это надо сделать из обработчика сообщения этого контрола.]]
+
# [[FAQ:WinAPI VCPP:экспорт функций из DLL|Я создал простой проект DLL на VC++ 6.0. Все скомпилировалось нормально. Но в другой программе не могу вызвать функцию из DLL - программа не может найти функцию по имени.]]
+
# [[FAQ:WinAPI VCPP:получение имени класса и метода|Есть ли какой-нибудь макрос в VC7, возвращающий строку вида ClassName::FunctionName внутри соответствующей функции?]]
+
# [[FAQ:WinAPI VCPP:динамическая загрузка ресурсов в ATL проекте|Как динамически подгрузить ресурсы к ATL проекту?]]
+
# [[FAQ:WinAPI VCPP:динамическая загрузка ресурсов в MFC проекте|Как динамически подгрузить ресурсы к MFC проекту?]]
+
  
 +
#[[FAQ:WinAPI VCPP:файл и версия класса ActiveX|У меня есть наименование класса ActiveX. Мне необходимо узнать в каком файле он находится, и какой версии этот файл.]]
 +
#[[FAQ:WinAPI VCPP:разделяемые переменные в dll|Имеется DLL. В ней есть некоторые данные (скажем, массив int). Как сделать, чтобы переменные в DLL были одними и теми же для всех программ, использующих эту DLL? (Например, при загрузке DLL в массиве нет данных. Каждая программа добавит в массив новые данные.)]]
 +
#[[FAQ:WinAPI VCPP:CScrollView и определение координат курсора мыши|Если окно объекта, производного от CScrollView, имеет полосы прокрутки, то как определить координаты курсора мыши?]]
 +
#[[FAQ:WinAPI VCPP:преобразование абсолютных координат экрана в относительные координаты окна|Если известны абсолютные координаты точки на экране, как перевести эти координаты в относительные координаты некоторого известного окна?]]
 +
#[[FAQ:WinAPI VCPP:моноширинный шрифт|Когда я вывожу две строки (одна под другой), то положение символа в строках зависит от ширины символа, а хотелось бы, чтобы символы располагались один под другим.]]
 +
#[[FAQ:ANSI CPP:обращение к переменной или методу базового класса|Как обратиться к переменной или методу базового класса?]]
 +
#[[FAQ:WinAPI VCPP:записать данные в файл|Как записать данные в файл?]]
 +
#[[FAQ:WinAPI VCPP:запустить две программы под отладчиком в VC6|Имеются две программы, взаимодействующие между собой. Можно ли в MS VC6 запустить под отладчиком одновременно две программы?]]
 +
#[[FAQ:WinAPI VCPP:доступ к объекту класса CFrameWnd из функций-членов класса CMyView|Каким образом можно получить доступ к объекту в классе CFrameWnd из функций-членов класса CMyView?]]
 +
#[[FAQ:WinAPI VCPP:сохранить иконку в ресурсах VC6|Я рисую новую иконку в ресурсах проекта VC6, но после запуска программы показывается старая иконка. Что делать?]]
 +
#[[FAQ:WinAPI VCPP:программно выравнять CDialogBar|Как программно расположить один CDialogBar под другим при их вертикальном расположении?]]
 +
#[[FAQ:WinAPI VCPP:добавить возврат каретки к переменной типа CString|Как добавить возврат каретки к переменной типа CString?]]
 +
#[[FAQ:WinAPI VCPP:акселераторы в MFC приложении|Как в диалоговом MFC приложении добавить accelerator'ы? В редакторе ресурсов создаю, а применить не могу.]]
 +
#[[FAQ:WinAPI VCPP:создать exe-шник меньше 24-х килобайт|Как создать в VC++ exe-шник меньше 24-х килобайт?]]
 +
#[[FAQ:WinAPI VCPP:удалить пункт меню|Как удалить из меню пункт?]]
 +
#[[FAQ:WinAPI VCPP:добавить пункт меню|Как добавить пункт в меню?]]
 +
#[[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:обратиться к COM из дополнительного потока|Не могу обратиться к COM из дополнительного потока. Мне пишут - "CoInitialize() не вызвано".]]
 +
#[[FAQ:WinAPI VCPP:диалог выбора папок|Как с помощью CFileDialog разрешить выбирать только папки?]]
 +
#[[FAQ:WinAPI VCPP:обработка нажания клавиш в CDialog|Как в CDialog-based классе получить коды клавиш, которые нажимает пользователь? Пробовал добавлять обработчики OnChar() и OnKeyDown(), но эти обработчики вообще не вызываются.]]
 +
#[[FAQ:WinAPI VCPP:заполнить блок памяти значением|Как заполнить блок памяти определённым значением?]]
 +
#[[FAQ:WinAPI VCPP:сравнить два блока памяти|Как сравнить два блока памяти на равенство значений?]]
 +
#[[FAQ:WinAPI VCPP:скопировать блок памяти|Как скопировать блок памяти?]]
 +
#[[FAQ:WinAPI VCPP:удалить контрол из собственного обработчика|Нужно удалить контрол (CComboBox) из диалога. Причём это надо сделать из обработчика сообщения этого контрола.]]
 +
#[[FAQ:WinAPI VCPP:экспорт функций из DLL|Я создал простой проект DLL на VC++ 6.0. Все скомпилировалось нормально. Но в другой программе не могу вызвать функцию из DLL - программа не может найти функцию по имени.]]
 +
#[[FAQ:WinAPI VCPP:получение имени класса и метода|Есть ли какой-нибудь макрос в VC7, возвращающий строку вида ClassName::FunctionName внутри соответствующей функции?]]
 +
#[[FAQ:WinAPI VCPP:динамическая загрузка ресурсов в ATL проекте|Как динамически подгрузить ресурсы к ATL проекту?]]
 +
#[[FAQ:WinAPI VCPP:динамическая загрузка ресурсов в MFC проекте|Как динамически подгрузить ресурсы к MFC проекту?]]
 +
#[[WinAPI VCPP:получить значение пиксела на экране| Как узнать значение цвета пиксела в определенной точке экрана (не окна формы)?]]
  
(Идет работа в разделе.)
+
<br> (Идет работа в разделе.)  
  
* [[FAQ:WinAPI, VCPP Part_2|Часть 2]]
+
*[[FAQ:WinAPI, VCPP Part 2|Часть 2]]  
* [[FAQ:WinAPI, VCPP Part_3|Часть 3]]
+
*[[FAQ:WinAPI, VCPP Part 3|Часть 3]]  
* [[FAQ:WinAPI, VCPP Part_4|Часть 4]]
+
*[[FAQ:WinAPI, VCPP Part 4|Часть 4]]
  
[[Category:FAQ]]
+
[[Category:FAQ]] [[Category:FAQ:WinAPI_VCPP]]
[[Category:FAQ:WinAPI VCPP]]
+

Версия 18:41, 20 сентября 2008

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

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

  1. У меня есть наименование класса ActiveX. Мне необходимо узнать в каком файле он находится, и какой версии этот файл.
  2. Имеется DLL. В ней есть некоторые данные (скажем, массив int). Как сделать, чтобы переменные в DLL были одними и теми же для всех программ, использующих эту DLL? (Например, при загрузке DLL в массиве нет данных. Каждая программа добавит в массив новые данные.)
  3. Если окно объекта, производного от CScrollView, имеет полосы прокрутки, то как определить координаты курсора мыши?
  4. Если известны абсолютные координаты точки на экране, как перевести эти координаты в относительные координаты некоторого известного окна?
  5. Когда я вывожу две строки (одна под другой), то положение символа в строках зависит от ширины символа, а хотелось бы, чтобы символы располагались один под другим.
  6. Как обратиться к переменной или методу базового класса?
  7. Как записать данные в файл?
  8. Имеются две программы, взаимодействующие между собой. Можно ли в MS VC6 запустить под отладчиком одновременно две программы?
  9. Каким образом можно получить доступ к объекту в классе CFrameWnd из функций-членов класса CMyView?
  10. Я рисую новую иконку в ресурсах проекта VC6, но после запуска программы показывается старая иконка. Что делать?
  11. Как программно расположить один CDialogBar под другим при их вертикальном расположении?
  12. Как добавить возврат каретки к переменной типа CString?
  13. Как в диалоговом MFC приложении добавить accelerator'ы? В редакторе ресурсов создаю, а применить не могу.
  14. Как создать в VC++ exe-шник меньше 24-х килобайт?
  15. Как удалить из меню пункт?
  16. Как добавить пункт в меню?
  17. Как вывести на печать то, что я нарисовал в контексте устройства (класс CDC)?
  18. Как нарисовать линию или прямоугольник на контексте устройства (CDC)? Как выбрать цвет и толщину линии?
  19. Как сменить шрифт при выводе текста на CDC?
  20. Как мне скопировать класс из одного проекта в другой? Код класса находится в файлах проекта в виде исходников.
  21. Как создать иконку в области уведомлений (системном трее)? Как определить, какие действия производит с иконкой пользователь? Как сделать анимацию иконки в трее? Как удалить иконку?
  22. У меня в программе имеется процедура, которая производит очень много вычислений. Как сделать так, чтобы пользователь мог прервать процесс вычислений?
  23. Не могу обратиться к COM из дополнительного потока. Мне пишут - "CoInitialize() не вызвано".
  24. Как с помощью CFileDialog разрешить выбирать только папки?
  25. Как в CDialog-based классе получить коды клавиш, которые нажимает пользователь? Пробовал добавлять обработчики OnChar() и OnKeyDown(), но эти обработчики вообще не вызываются.
  26. Как заполнить блок памяти определённым значением?
  27. Как сравнить два блока памяти на равенство значений?
  28. Как скопировать блок памяти?
  29. Нужно удалить контрол (CComboBox) из диалога. Причём это надо сделать из обработчика сообщения этого контрола.
  30. Я создал простой проект DLL на VC++ 6.0. Все скомпилировалось нормально. Но в другой программе не могу вызвать функцию из DLL - программа не может найти функцию по имени.
  31. Есть ли какой-нибудь макрос в VC7, возвращающий строку вида ClassName::FunctionName внутри соответствующей функции?
  32. Как динамически подгрузить ресурсы к ATL проекту?
  33. Как динамически подгрузить ресурсы к MFC проекту?
  34. Как узнать значение цвета пиксела в определенной точке экрана (не окна формы)?


(Идет работа в разделе.)