Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

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

Ответ
 
Опции темы
Старый 16.04.2018, 19:56   #1
StillPhelix
Пользователь
 
Регистрация: 18.05.2014
Сообщений: 26
Репутация: 10
По умолчанию Копирование строки из ресурса и вывод её в окно

Доброе время суток!
функция LoadString загружает строку из ресурса в буфер szTextWin, а функция DrawTextA выводит содержимое буфера в окно. Проблема в том,
что выводится в окно кракозябла. Отладчик показывает, что LoadString строку из ресурса в буфер копирует нормально.
Код:

LRESULT CALLBACK WndProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam){
	HICON hIcon, hIconSm;
	HDC hDC;
	PAINTSTRUCT ps;
	RECT rect;
	int userReply;
	TCHAR szTextWin[20];
	static HINSTANCE hInst;
	static HMENU hMenu;  // дескриптор главного меню
	switch(uMsg)
	{
	case WM_CREATE:
		hInst = GetModuleHandle(NULL);
		LoadString(hInst,IDS_REGTEXT,szTextWin,20);
		hIcon = LoadIcon(hInst, MAKEINTRESOURCE(IDI_ICO_KEYS));
		hIconSm = (HICON)LoadImage(hInst, MAKEINTRESOURCE(IDI_ICO_KEYS), IMAGE_ICON, 16, 16, LR_DEFAULTCOLOR);
		SetClassLong(hWnd, GCL_HICON, (LONG)hIcon);
		SetClassLong(hWnd, GCL_HICONSM, (LONG)hIconSm);
	case WM_PAINT:
		hDC=BeginPaint(hWnd,&ps);
		//SetBkMode(hDC,TRANSPARENT);//для прозрачности фона текста
		GetClientRect(hWnd,&rect);
		DrawTextA(hDC,szTextWin,20,&rect,DT_SINGLELINE|DT_CENTER|DT_VCENTER);
		EndPaint(hWnd,&ps);
		break;
	case WM_CLOSE:
			DestroyWindow(hWnd);
		break;
	case WM_DESTROY:
		PostQuitMessage(0);
		break;
		case WM_COMMAND:
			switch (LOWORD(wParam))
		case ID_REGISTERME:

			// Вызов диалога
			DialogBox(hInst, MAKEINTRESOURCE(IDD_DIALOG_MAIN), hWnd, CrDlgProc);

			break;
	default:
		return DefWindowProc(hWnd,uMsg,wParam,lParam);
	}
	return 0;
}

StillPhelix вне форума   Ответить с цитированием
Старый 16.04.2018, 20:45   #2
waleri
Профессионал
 
Регистрация: 13.07.2012
Адрес: Нижний Новгород
Сообщений: 5,296
Репутация: 1617
По умолчанию

Сделайте szTextWin глобальной переменной.
Не забывайте писать break в конце каждого case.
waleri вне форума   Ответить с цитированием
Старый 16.04.2018, 20:56   #3
StillPhelix
Пользователь
 
Регистрация: 18.05.2014
Сообщений: 26
Репутация: 10
По умолчанию

waleri, спасибо за то, что натолкнул на правильное решение. Думаю лучше сделать TCHAR static szTextWin .
StillPhelix вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск строки на Листе1 и копирование строки на Лист2 Андрей_оз Microsoft Office Excel 7 10.09.2014 11:12
копирование ячеек на лист 2 и по условию копирование строки в буфер FiataliS Microsoft Office Excel 4 20.12.2013 11:10
Вывод 3д через консольное окно. Neketek Visual C++ 0 18.04.2012 08:40
Диалоговое окно из ресурса Bludodey Visual C++ 0 12.10.2011 06:39
Создание пустой строки и копирование в неё содержимое предыдущей строки Gvaridos Microsoft Office Excel 2 29.10.2010 13:33


02:50.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru