Сучасна диджитал-освіта для дітей — безоплатне заняття в GoITeens ×
Mazda CX 5
×

Вопрос чайника по Win32 API

Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті

Вот код. У меня что-то не получается когда нажимаешъ на кнопку 1 в текстовом поле должна появиться единица, когда второй раз (+1) то 2 и т.д. Как организовать всю эту процедуру? С помощью каких функций?

//—

#include < windows.h>

#include < tchar.h>

LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM);

TCHAR ClassName [] =TEXT ( “HELLO” );

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)

{

HWND hWnd;

HWND hBut [16];

MSG Message;

WNDCLASSEX wnd;

wnd.cbSize = sizeof (wnd);//1

wnd.style = CS_HREDRAW| CS_VREDRAW;//2

wnd.lpfnWndProc = WndProc;//3

wnd.hInstance = hInstance;//4

wnd.lpszClassName = ClassName;//5

wnd.hIcon = LoadIcon (NULL, IDI_APPLICATION);//6

wnd.hCursor = LoadCursor (NULL, IDC_ARROW);//7

wnd.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH);//8

wnd.cbWndExtra = 0;//9

wnd.cbClsExtra = 0;//10

wnd.lpszMenuName = NULL;//11

wnd.hIconSm = NULL;//12

if (! RegisterClassEx (& wnd))

{

return 0;
}

hWnd = CreateWindowEx (0, ClassName, TEXT ( “Windows” ), WS_OVERLAPPEDWINDOW, 10, 10, 500, 500, NULL, NULL, hInstance, NULL);

HWND hEdit= CreateWindowEx (0, TEXT ( “EDIT” ), TEXT (“"), WS_CHILD|WS_VISIBLE|WS_BORDER, 100, 75, 135, 20, hWnd, NULL, hInstance, 0);

hBut [0] = CreateWindowEx (0, TEXT ( “BUTTON” ), TEXT ( “1” ), WS_CHILD|WS_VISIBLE, 100, 100, 30, 30, hWnd, NULL, hInstance, 0);

ShowWindow (hWnd, nShowCmd);

UpdateWindow (hWnd);

while (GetMessage (& Message, NULL, 0, 0))

{

TranslateMessage (& Message);

DispatchMessage (& Message);
}

return Message.wParam;
}

LRESULT CALLBACK WndProc (HWND hWnd, UINT Message, WPARAM wParam, LPARAM lParam)

{

switch (Message)

{

case WM_DESTROY:

PostQuitMessage (0);

break;

default:

return DefWindowProc (hWnd, Message, wParam, lParam);
}

return 0;
}

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
не можеш найти?

попоробуй почитать «Программирование в Windows 95» Петзольд (в электроном виде доступен русский перевод) или любую другую книжку по винапи

через SetWindowText для hBut [0]

Кнопку сделал — работает. как пересвоить значение кнопки 1? Передать в EDIT? Не могу найти нигде

Спасибо вам, буду пробовать.

Прочитал не внимательно, пошел пить чай... прошу прощения...

мне показалось что главное окно было сделано как EDIT — нужно просыпаться

2junior_dev: пост на который отвечаеш прочитал прежде чем тайпать?;)
там создается в окне два контрола: едит бокс и кнопка, по нажатию на кнопку в едитбоксе инкрементиться число. и какой будет WM_KEYDOWN / WM_CHAR если кнопку нажмут мышкой?
это если допустить что недочитал и понял неправильно., но даже в этом случае ответ не очень правильный, допустим едитбокс получил фокус ввода, и в какой из оконных процедур побрабатывать кейдаун? парент окно его не получит, сабкласить чайлд можно, но не в этом случае.
2Evgen: смотреть в доке
WM_COMMAND + BN_CLICKED для кнопки

в обработчике просто помещать нужный текст в едит бокс

попробуйте: WM_KEYDOWN, WM_CHAR
Разница только в этом:
This message is posted to the window with the keyboard focus when a WM_KEYDOWN message is translated by the TranslateMessage function. WM_CHAR contains the character code of the key that was pressed.
значение счетчика можно хранить во внутренем состоянии класса, или просто реализовать паттерн состояние и завести отдельный обьект.

писать считывать с окна можно Get/SetWindowText

Підписатись на коментарі