Форум программистов, компьютерный форум CyberForum.ru

Поиск координат пикселя в окне. - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Ссылочный тип http://www.cyberforum.ru/cpp-beginners/thread369790.html
Есть ли разница и как лучше писать void sum(int &a, int &b); или void sum(int a ,int b); Что лучше, и почему? Обьясните
C++ Нужен пример шейкерной сортировки Написать программу шейкерной сортировки по возрастанию.Алгоритм представляет собой улучшеную пузырьковую сортировку , использующий "всплытие легкого" и "погружение тяжелого" элементов. Меняются одновременно и правая и левая границы массива.Никак не могу понять что делать.. http://www.cyberforum.ru/cpp-beginners/thread369785.html
C++ Использование функции.
помогите переделать программу нужно использовать функцию #include <math.h> #include <iostream.h> #include<fstream.h> main() { ifstream fin("1.in");
C++ Обратный метод пузырька
Написать программу сортировки массива по возрастанию методом "погружения " наибольшего ("тяжелого") элемента(метод пузырька в обратную сторону ). Непонятно как это сделать..
C++ Фибоначиев поиск http://www.cyberforum.ru/cpp-beginners/thread369779.html
Дано множество из N=18 элементов.Найти элемент(ключ) к=33. Элементы массива вводить с клавиатуры по возрастанию. как это сделать с помощью Фибоначиева поиска?? Ребят кто знает?Просто вообще не ясно, что делать..
C++ Определить минимальное значение n>0, для которого очередное слагаемое по модулю не превышает eps Формулировка задания: "Определить минимальное значение n>0, для которого очередное слагаемое по модулю не превышает eps>0 при нахождении результата согласно формуле" P.S.: формула на картинке во вложениях Еще бы хотелось, если это возможно, поподробнее узнать про математическую постановку задачи. Заранее спасибо! подробнее

Показать сообщение отдельно
xAtom
 Аватар для xAtom
910 / 735 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
21.10.2011, 07:45     Поиск координат пикселя в окне.
Цитата Сообщение от Bloodrinker Посмотреть сообщение
суть то понял, но так и не оживил код)
Bloodrinker, держи.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#include<windows.h>
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
BOOL  SearchPixelPos(HWND hwnd, COLORREF color, LPPOINT pos);
BOOL  SearchPixelPosEx(HWND wnd, COLORREF color, LPPOINT pos);
 
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
    MSG  msg;
    HWND wnd = CreateWindowW(L"STATIC", L"Поиск пикселя", WS_OVERLAPPEDWINDOW,
                      CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
    if(! wnd)
         return 1;
    SetWindowLongW(wnd, GWL_WNDPROC, (LONG)WndProc);
    SetClassLongW(wnd,  GCL_HCURSOR, (LONG)LoadCursor(NULL, IDC_ARROW));
    SetClassLongW(wnd,  GCL_HBRBACKGROUND, (LONG) GetStockObject(BLACK_BRUSH));
    ShowWindow(wnd, SW_SHOWDEFAULT);
    UpdateWindow(wnd);
 
    ZeroMemory(&msg, sizeof(MSG));
    while(GetMessageW(&msg, NULL, 0u, 0u)) {
           TranslateMessage(&msg);
           DispatchMessageW(&msg);
    }
    DestroyWindow(wnd);
    return 0;
}
 
 
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    PAINTSTRUCT ps;
    WCHAR buf[64];
    POINT pos;
    HDC dc;
 
    switch (message) 
    {
     case WM_PAINT: {
           dc = BeginPaint(hWnd, &ps);
           SetBkMode(dc, TRANSPARENT);
           SetTextColor(dc, 0x0000FFFF);
           SetTextAlign(dc, DT_VCENTER);
           TextOutW(dc, ps.rcPaint.right / 2, 10, L"нажми левую кнопку мыши", 23);
           SetPixel(dc, 100, 100, RGB(255, 0, 0));
           EndPaint(hWnd, &ps);
         } break;
     case WM_LBUTTONDOWN: 
 
         if( SearchPixelPos(hWnd, RGB(255, 0, 0), &pos) ) {
               wsprintfW(buf, L"Пиксель найден: X: %d, Y: %d", pos.x, pos.y);
               MessageBoxW(hWnd, buf, L":)", MB_OK | MB_ICONINFORMATION);
         } else
               MessageBoxW(hWnd, L"Указанный цвет-пикселя не был найден.", L"...", MB_OK | MB_ICONEXCLAMATION);
        break;
      case WM_DESTROY:
           PostQuitMessage(0);
           break;
      default: return DefWindowProcW(hWnd, message, wParam, lParam);
   }
   return 0;
}
 
// медленный вариант
BOOL  SearchPixelPos(HWND hwnd, COLORREF color, LPPOINT pos) {
  RECT rect;
  HDC dc = GetDC(hwnd);
  GetClientRect(hwnd, &rect);
  for(long y = 0L; y < rect.bottom; y++) {
       for(long x = 0L; x < rect.right; x++) {
           if( GetPixel(dc, x, y) == color) {
                 ReleaseDC(hwnd, dc);
                 pos->x = x;
                 pos->y = y;
                 return TRUE;
           }
       }
   }
  ReleaseDC(hwnd, dc);
  return FALSE;
}
 
Текущее время: 05:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru