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

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

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

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

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

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

Доброе время суток!
функция 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, 19:45   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

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

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


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
копирование ячеек на лист 2 и по условию копирование строки в буфер FiataliS Microsoft Office Excel 7 11.05.2020 18:19
Поиск строки на Листе1 и копирование строки на Лист2 Андрей_оз Microsoft Office Excel 7 10.09.2014 11:12
Вывод 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