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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.12.2011, 19:07   #1
Pozitif
 
Регистрация: 30.11.2011
Сообщений: 6
По умолчанию SendMessage иероглифы !?

Здравствуйте уважаемые форумчане, начал писать программку вроде со всем разобрался, что где инициализируется, где создаётся, как обработчики вешать и всё такое, но при выводе текста помощью SendMessage вместо русского, или латиницы печатаются иероглифы ?
в гугле искал по запросу SendMessage иероглифы, ничего не нашол, программирую в VisualStudio 2010? c++ Win32
текст программки.
Код:
#include <windows.h>
#include <stdlib.h>
#include <string.h>
#include <tchar.h>

//+--- Глобальные переменные.

static TCHAR szWindowClass[] = _T("MyClass");
static TCHAR szTitle[] = _T("Mini Win32");

HINSTANCE hInst;

//+--- Объявляем заголовки функций.
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);


int __stdcall WinMain(HINSTANCE hInstance, HINSTANCE h2, LPSTR cmd, int cmShow)
{
	MSG msg;
	HWND hWnd;
	WNDCLASSEX wc;
	static HWND hButton, hListBox, hComboBox;

	wc.cbSize = sizeof(WNDCLASSEX);
	wc.style          = CS_HREDRAW | CS_VREDRAW;
	wc.lpfnWndProc    = WndProc;
	wc.cbClsExtra     = 0;
	wc.cbWndExtra     = 0;
	wc.hInstance      = hInstance;
	wc.hIcon          = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_APPLICATION));
	wc.hCursor        = LoadCursor(NULL, IDC_ARROW);
	wc.hbrBackground  = (HBRUSH)(COLOR_WINDOW+1);
	wc.lpszMenuName   = NULL;
	wc.lpszClassName  = szWindowClass;
	wc.hIconSm        = LoadIcon(wc.hInstance, MAKEINTRESOURCE(IDI_APPLICATION));
	
	if(!RegisterClassEx (&wc)) return FALSE;

	//static HWND hButton;
	hWnd=CreateWindow(wc.lpszClassName, szTitle, WS_OVERLAPPEDWINDOW|WS_VISIBLE, 100, 100, 500, 500, 0, 0, hInst, 0);
	
	hButton = CreateWindow (TEXT("BUTTON"), TEXT("Нажми"), WS_CHILD | WS_VISIBLE, 10, 5, 119, 20, hWnd, (HMENU)100, hInst, 0);    // На кнопке текст нормально отображается.
	hListBox = CreateWindow (TEXT("LISTBOX"), 0, WS_CHILD | WS_VISIBLE | LBS_STANDARD, 10, 80, 237, 144, hWnd, 0, hInst, NULL);
	hComboBox = CreateWindow (TEXT("COMBOBOX"), 0, WS_CHILD | WS_VISIBLE | CBS_DROPDOWN, 10, 40, 119, 60, hWnd, 0, hInst, 0);
	
	SendMessage (hListBox, LB_ADDSTRING, 0, (LPARAM)"6");                       // Пишеш одну букву или цифру она отображается нормально, если больше 1 символа то иероглифы.
	SendMessage (hComboBox, CB_ADDSTRING, 0, (LPARAM)"ComboBox");      //  Тоже иероглифы.
	//SendMessage (hComboBox, CB_SETCURSEL, 0, 0);

	ShowWindow(hWnd, cmShow);
	UpdateWindow(hWnd);

	while(GetMessage(&msg, NULL, 0, 0))
	{
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}
	return (msg.wParam);
}

LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
	PAINTSTRUCT ps;
	HDC hdc;

	switch(msg)
	{
	case WM_PAINT:
		hdc = BeginPaint(hWnd, &ps);
		EndPaint(hWnd, &ps);
		break;
	case WM_COMMAND:
		if (wParam == 100)
		{
			MessageBox(hWnd, TEXT("Нажатие кнопки !"), TEXT("Диалог"), 0);           // Здесь тоже нормально.
		}
		break;
	case WM_DESTROY:
		PostQuitMessage(0);
		break;
	}
	return DefWindowProc(hWnd, msg, wParam, lParam);
}

Последний раз редактировалось Pozitif; 08.12.2011 в 19:10.
Pozitif вне форума Ответить с цитированием
Старый 08.12.2011, 20:54   #2
Pozitif
 
Регистрация: 30.11.2011
Сообщений: 6
По умолчанию

Решение найдено самостоятельно, надеюсь кому пригодится, лично у меня чуть мозг не вытек ) хотя возможно стоило просто выспатся.

Было:
Код:
SendMessage (hComboBox, CB_ADDSTRING, 0, (LPARAM)"ComboBox");
Надо:
Код:
SendMessage (hComboBox, CB_ADDSTRING, 0, (LPARAM)_T("ComboBox"));
Pozitif вне форума Ответить с цитированием
Старый 08.12.2011, 20:55   #3
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

> гугле искал по запросу SendMessage иероглифы

поздравляю, ваш пост теперь первый по этому запросу, ггг
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 08.12.2011, 21:03   #4
Pozitif
 
Регистрация: 30.11.2011
Сообщений: 6
По умолчанию

Цитата:
Сообщение от veniside Посмотреть сообщение
> гугле искал по запросу SendMessage иероглифы

поздравляю, ваш пост теперь первый по этому запросу, ггг
Да я видел потому и написал ответ, надеюсь кому пригодится.
Pozitif вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
MessageBox и иероглифы ImmortalAlexSan Общие вопросы C/C++ 5 10.03.2011 12:22
Иероглифы в командной строке ac1d_buRn Операционные системы общие вопросы 8 26.02.2011 20:27
русский язык - иероглифы Артэс Общие вопросы C/C++ 20 16.03.2008 10:36
Иероглифы в Equation mitrandir Microsoft Office Word 9 25.09.2007 09:06