Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.01.2014, 14:33   #1
Andrey_Ov
Пользователь
 
Регистрация: 20.11.2013
Сообщений: 28
По умолчанию Господа поделитесь знаниями по winapi! Заранее спасибо

В таком варианте строка выводится:


#include <windows.h>

void DrawBitmap(HDC hdc, HBITMAP hBitmap, int xStart, int yStart);
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{

static char szAppName[] = "New";
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,
"New lesson",
WS_OVERLAPPEDWINDOW /*| WS_VSCROLL | WS_HSCROLL*/,
CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT,
NULL, NULL, hInstance, NULL
);
ShowWindow(hwnd, iCmdShow);
UpdateWindow(hwnd);
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}




LRESULT CALLBACK WndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
{
static char Buffer[]="Makaka";

switch (iMsg)
{
case WM_CREATE:
return 0;

case WM_MOUSEMOVE:
return 0;

case WM_PAINT:
return 0;

case WM_SIZE:
hdc = GetDC(hwnd);

TextOut(hdc, 100, 100, Buffer, sizeof(Buffer));

ReleaseDC(hwnd, hdc);
return 0;

case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hwnd, iMsg, wParam, lParam);
}


А если переместить вывод строки в обработчик мыши или wm_create то нифига не работает. Вот пример нерабочего кода:




#include <windows.h>

void DrawBitmap(HDC hdc, HBITMAP hBitmap, int xStart, int yStart);
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{

static char szAppName[] = "New";
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,
"New lesson",
WS_OVERLAPPEDWINDOW /*| WS_VSCROLL | WS_HSCROLL*/,
CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT,
NULL, NULL, hInstance, NULL
);
ShowWindow(hwnd, iCmdShow);
UpdateWindow(hwnd);
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}




LRESULT CALLBACK WndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
{
static char Buffer[]="Makaka";

switch (iMsg)
{
case WM_CREATE:
hdc = GetDC(hwnd);

TextOut(hdc, 100, 100, Buffer, sizeof(Buffer));

ReleaseDC(hwnd, hdc);
return 0;

case WM_MOUSEMOVE:
return 0;

case WM_PAINT:
return 0;

case WM_SIZE:
return 0;

case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hwnd, iMsg, wParam, lParam);
}
Andrey_Ov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не получается преобразовать! p.s. Заранее спасибо! eXp1osive Общие вопросы C/C++ 2 20.10.2012 17:05
Поправьте. Заранее спасибо! eXp1osive Общие вопросы C/C++ 7 18.10.2012 14:24
В Паскале !! Заранее спасибо ))) Alexxxxxx Помощь студентам 4 23.10.2011 00:29
Господа специалисты, поделитесь пожалуйста опытом! Куча вопросов, нужна Ваша помощь!!! samo123 Microsoft Office Excel 0 14.12.2008 21:03
ЛЮДИ, поделитесь знаниями!! Elm0 Паскаль, Turbo Pascal, PascalABC.NET 6 24.05.2007 13:36