Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ и WinAPI
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.77
Сеня 2007
2 / 2 / 1
Регистрация: 03.10.2010
Сообщений: 182
#1

Преобразование TCHAR в int - C++ WinAPI

13.05.2013, 20:18. Просмотров 2065. Ответов 5
Метки нет (Все метки)

Есть код:

http://www.cyberforum.ru/win-api/thread676684.html


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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
#include <windows.h>
 
HBITMAP bmp;
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
HWND button1, button2, button3, button4, button5, orig;
HDC Hdc;
int rezcolors[3][3];
int newcolors;
 
 
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                    PSTR szCmdLine, int iCmdShow)
     {
     static char szAppName[] = "Win" ;
     HWND        hwnd ;
     MSG         msg ;
     WNDCLASSEX  wndclass ;
 
     wndclass.cbSize        = sizeof (wndclass) ;
     wndclass.style         = CS_HREDRAW | CS_VREDRAW ;
     wndclass.lpfnWndProc   = WndProc ;
     wndclass.cbClsExtra    = 0 ;
     wndclass.cbWndExtra    = 0 ;
     wndclass.hInstance     = hInstance ;
     wndclass.hIcon         = LoadIcon (NULL, IDI_APPLICATION) ;
     wndclass.hCursor       = LoadCursor (NULL, IDC_ARROW) ;
     wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
     wndclass.lpszMenuName  = NULL ;
     wndclass.lpszClassName = szAppName ;
     wndclass.hIconSm       = LoadIcon (NULL, IDI_APPLICATION) ;
 
     RegisterClassEx (&wndclass) ;
 
     hwnd = CreateWindow (szAppName,         // window class name
                    "Smoothing",                 // window caption
                    WS_OVERLAPPEDWINDOW,     // window style
                    CW_USEDEFAULT,           // initial x position
                    CW_USEDEFAULT,           // initial y position
                    600,                    // initial x size
                    600,                    // initial y size
                    NULL,                    // parent window handle
                    NULL,                    // window menu handle
                    hInstance,               // program instance handle
                    NULL) ;                  // creation parameters
 
     ShowWindow (hwnd, iCmdShow) ;
     UpdateWindow (hwnd) ;
 
     while (GetMessage (&msg, NULL, 0, 0))
          {
          TranslateMessage (&msg) ;
          DispatchMessage (&msg) ;
          }
     return msg.wParam ;
     }
 
void gist(int xx)
{
    Rectangle(Hdc,xx-1,350,xx+186,350);
    int r,g,b,spectr,sumspectr,k2;
    for (int x=xx;x<xx+250;x++)
    {
        sumspectr=0;
        for (int y=100;y<350;y++)
        {
            r=GetRValue(GetPixel(Hdc, x, y));
        //  g=GetGValue(GetPixel(Hdc, x, y));
            //b=GetBValue(GetPixel(Hdc, x, y));
            spectr=r;
            sumspectr+=spectr;
        }
        k2=1;
        sumspectr=sumspectr/500;
        for (int q=0;q<sumspectr;q++)
        {
            SetPixel(Hdc, x, 350-k2, RGB(0,0,0));
            k2++;
        }
    }
}
 
LRESULT CALLBACK WndProc (HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
     {
     HDC         hdc=GetDC(hwnd);
     PAINTSTRUCT ps ;
     RECT        rect ;
     Hdc=hdc;
     TCHAR buf1[256];
     TCHAR buf2[256];
     char buf111[256];
     int buf11;
     int buf22;
    CharToOem(buf1,buf111);
     buf11=int(buf111);
     buf22=int(buf2);
 
     switch (iMsg)
          {
          case WM_CREATE :
              bmp=(HBITMAP) LoadImage(NULL, "f.bmp", IMAGE_BITMAP,0,0, LR_LOADFROMFILE);
              button1 = CreateWindow ("EDIT","255",SS_CENTER | WS_CHILD | WS_VISIBLE,150,50,150,50,hwnd,NULL,0,NULL);
              button2 = CreateWindow ("BUTTON","перерисовка",WS_CHILD | WS_VISIBLE,300,50,150,50,hwnd,NULL,0,NULL);
              button3 = CreateWindow ("BUTTON","Ввести нижнюю границу",WS_CHILD | WS_VISIBLE,0,0,150,50,hwnd,NULL,0,NULL);
              button4 = CreateWindow ("BUTTON","Ввести верхнюю границу",WS_CHILD | WS_VISIBLE,150,0,150,50,hwnd,NULL,0,NULL);
              button5 = CreateWindow ("BUTTON","гистограмма",WS_CHILD | WS_VISIBLE,300,0,150,50,hwnd,NULL,0,NULL);
              orig = CreateWindow("EDIT","0", SS_CENTER | WS_CHILD | WS_VISIBLE, 0, 50, 150, 50, hwnd, NULL, 0, NULL);
             
              return 0 ;
          
          case WM_COMMAND:
        /*    if (lParam==LPARAM(button1))
              {
                 TCHAR buf1[256];
             GetWindowText(orig,buf1,lstrlen(buf1));
             TCHAR b1[256];
                   GetWindowText(button5,b1,lstrlen(b1));
              }*/
 
              if (lParam==LPARAM(button2))
              {
                  for (int x=1;x<250;x++)
                      for (int y=101;y<287;y++)
                  {
                      newcolors=GetRValue(GetPixel(hdc, x-1, y-1));
                      if(buf11>=newcolors)
                      {
                          SetPixel(hdc, x, y, RGB(0,0,0));
                      };
                      if(buf22<=newcolors)
                      {
                      SetPixel(hdc, x, y, RGB(255,255,255));
                      };
                      if(buf11<=newcolors && buf22>=newcolors)
                      {
                      newcolors=newcolors-buf11;
                      SetPixel(hdc,x,y,RGB(newcolors,newcolors,newcolors));
                      }
                      }       
                                      
              }
              
              if (lParam==LPARAM(button3))
              {
                  GetWindowText(orig,buf1,lstrlen(buf1));
              }
 
              if (lParam==LPARAM(button4))
              {
                   GetWindowText(button1,buf2,lstrlen(buf2));
              }
 
              if (lParam==LPARAM(button5))
              {
                  gist(0);
              }
              return 0;
 
          case WM_PAINT :
               hdc = BeginPaint (hwnd, &ps) ;
               HDC memdc;
               memdc=CreateCompatibleDC(hdc);
               SelectObject(memdc,bmp);
               BitBlt(hdc, 0, 100, 250, 186, memdc, 0, 0, SRCCOPY);
               DeleteDC(memdc);
               EndPaint (hwnd, &ps) ;
               return 0 ;
 
          case WM_DESTROY :
               PostQuitMessage (0) ;
               return 0 ;
          }
 
     return DefWindowProc (hwnd, iMsg, wParam, lParam) ;
     }
Нужно преобразовать значения из EDITов в int. Как только не пытался сделать ничего не выходит. Пробовал int(buf1) выдавал большое значение. Пробовал из TCHAR в char, а потом в int получался мусор. Хотя при вводе данных в EDIT в buf1 все правильно записывается. Помогите преобразовать пожалуйста!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.05.2013, 20:18
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Преобразование TCHAR в int (C++ WinAPI):

Преобразование из TCHAR в string
HWND hwnd_wind; hwnd_wind = GetForegroundWindow(); int length; length =...

Преобразование char в TCHAR
Здравствуйте, ломаю голову как преобразовать char в TCHAR, для того чтобы...

Преобразование LPSTR в int
Есть 3 edit'аedit = CreateWindow(&quot;edit&quot;, NULL, WS_EX_CLIENTEDGE | WS_VISIBLE |...

Преобразование HMODULE в int или DWORD
Здравствуйте, как можно преобразовать HMODULE в int или DWORD? И во что его...

Как привести строку типа TCHAR в int
Есть строка TCHAR tmp; в ней записано число, нужно вытащить это число и...

5
Croessmah
++Ͻ
14147 / 8072 / 1512
Регистрация: 27.09.2012
Сообщений: 19,907
Записей в блоге: 3
Завершенные тесты: 1
13.05.2013, 20:26 #2

Не по теме:

Цитата Сообщение от Сеня 2007 Посмотреть сообщение
Пробовал int(buf1) выдавал большое значение.
Изучаем WinAPI, не знаем основ...



Цитата Сообщение от Сеня 2007 Посмотреть сообщение
Нужно преобразовать значения из EDITов в int.
Можно заюзать функцию atoi
0
FreeMan108
121 / 121 / 32
Регистрация: 04.03.2013
Сообщений: 370
13.05.2013, 22:18 #3
C++
1
2
int iResult;
sscanf (EditString,"%i",&iResult);
0
zelim
77 / 77 / 9
Регистрация: 26.12.2011
Сообщений: 217
14.05.2013, 00:07 #4
Цитата Сообщение от Croessmah Посмотреть сообщение

Не по теме:


Изучаем WinAPI, не знаем основ...




Можно заюзать функцию atoi
Раз работаем с TCHAR, то логичнее соответствующую ей функцию _tstoi взять.

Не по теме:

Не в придирку будет сказано. Просто автор на соответствующие грабли может наступить при работе с atoi.

0
Croessmah
14.05.2013, 00:20
  #5

Не по теме:

Цитата Сообщение от zelim Посмотреть сообщение

Не по теме:

Не в придирку будет сказано. Просто автор на соответствующие грабли может наступить при работе с atoi.

Я лишь привел функцию, а как её будут использовать и какими макросами "скрывать" переделки - это уже не мое дело

0
Сеня 2007
2 / 2 / 1
Регистрация: 03.10.2010
Сообщений: 182
15.05.2013, 21:15  [ТС] #6
Спасибо всем использовал atoi. Теперь есть вопрос по поводу интерполяции. Как ее реализовать?
0
15.05.2013, 21:15
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.05.2013, 21:15
Привет! Вот еще темы с решениями:

Сравнить TCHAR
Следующий код все время возвращает true, даже если переменные не равны. pob1,...

string to TCHAR
Подскажите пожалуйста как преобразовать правильно?? есть вариант типа ...

Вывод TCHAR в консоль
Доброй ночи. Написал программу, которая выводит системную информацию, но...

Запись в файл TCHAR
Здравствуйте, у меня проблема. Мне надо чтобы по нажатию кнопки текст...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru