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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.12.2011, 11:31   #1
Lexeres
Новичок
Джуниор
 
Регистрация: 15.11.2009
Сообщений: 54
По умолчанию Выводит крокозябры

Задача такова - сделать 2 кнопки - "да" и "выход" , и строку редактирования текста. При вводе в строке любого текста и при нажатии кнопки Да - выводится сообщение с текстом ,который мы написали. Так вот - у меня всё как бы работает, НО когда выводится сообщение ,то там сначало какие-то непонятные буквы просто идут и где-то в конце только мой текст. Что нужно исправить, чтоб такого не было?
Вот скрин -
Вот мой код :

Код:
#include <window.h>
#include "stdafx.h"
#include "laba3.h"

#define MAX_LOADSTRING 100
#define ID_BUTTON1 3000
#define ID_BUTTON2 2000
#define ID_EDIT 2222
// Глобальные переменные:
HINSTANCE hInst;								// текущий экземпляр
TCHAR szTitle[MAX_LOADSTRING];					// Текст строки заголовка
TCHAR szWindowClass[MAX_LOADSTRING];			// имя класса главного окна
char szClassName[] = "AppClass";
HWND hEdit, hButton1, hListBox, hStatic,hButton2;

// Отправить объявления функций, включенных в этот модуль кода:
ATOM				MyRegisterClass(HINSTANCE hInstance);
BOOL				InitInstance(HINSTANCE, int);
LRESULT CALLBACK	WndProc(HWND, UINT, WPARAM, LPARAM);
INT_PTR CALLBACK	About(HWND, UINT, WPARAM, LPARAM);

int APIENTRY _tWinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPTSTR    lpCmdLine,
                     int       nCmdShow)
{
	UNREFERENCED_PARAMETER(hPrevInstance);
	UNREFERENCED_PARAMETER(lpCmdLine);

 	// TODO: разместите код здесь.
	MSG msg;
//	HWND hwnd;
	hInstance=hInst;
	HACCEL hAccelTable;

	// Инициализация глобальных строк
	LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
	LoadString(hInstance, IDC_LABA3, szWindowClass, MAX_LOADSTRING);
	MyRegisterClass(hInstance);

	// Выполнить инициализацию приложения:
	if (!InitInstance (hInstance, nCmdShow))
	{
		return FALSE;
	}

	hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_LABA3));

	// Цикл основного сообщения:
	while (GetMessage(&msg, NULL, 0, 0))
	{
		if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
		{
			TranslateMessage(&msg);
			DispatchMessage(&msg);
		}
	}

	return (int) msg.wParam;
}



//
//  ФУНКЦИЯ: MyRegisterClass()
//
//  НАЗНАЧЕНИЕ: регистрирует класс окна.
//
//  КОММЕНТАРИИ:
//
//    Эта функция и ее использование необходимы только в случае, если нужно, чтобы данный код
//    был совместим с системами Win32, не имеющими функции RegisterClassEx'
//    которая была добавлена в Windows 95. Вызов этой функции важен для того,
//    чтобы приложение получило "качественные" мелкие значки и установило связь
//    с ними.
//
ATOM MyRegisterClass(HINSTANCE hInstance)
{
	WNDCLASSEX wcex;

	wcex.cbSize = sizeof(WNDCLASSEX);

	wcex.style			= wcex.cbClsExtra=wcex.cbWndExtra=0;
	wcex.lpfnWndProc	= WndProc;
	wcex.cbClsExtra		= 0;
	wcex.cbWndExtra		= 0;
	wcex.hInstance		= hInstance;
	wcex.hIcon			= LoadIcon(NULL, MAKEINTRESOURCE(IDI_LABA3));
	wcex.hCursor		= LoadCursor(NULL, IDC_ARROW);
	wcex.hbrBackground	= (HBRUSH)(COLOR_WINDOW+1);
	wcex.lpszMenuName	= MAKEINTRESOURCE(IDC_LABA3);
	wcex.lpszClassName	= szWindowClass;
	wcex.hIconSm		= LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));

	return (RegisterClassEx(&wcex)!=0);
}

//
//   ФУНКЦИЯ: InitInstance(HINSTANCE, int)
//
//   НАЗНАЧЕНИЕ: сохраняет обработку экземпляра и создает главное окно.
//
//   КОММЕНТАРИИ:
//
//        В данной функции дескриптор экземпляра сохраняется в глобальной переменной, а также
//        создается и выводится на экран главное окно программы.
//
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
   HWND hWnd;

   hInst = hInstance; // Сохранить дескриптор экземпляра в глобальной переменной

   hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
      CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);

     hButton1=CreateWindow("BUTTON","Да",WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,
		130,300,100,30,hWnd,(HMENU)ID_BUTTON1,hInstance,NULL);
   if (!hWnd)
   {
      return FALSE;
   }

   ShowWindow(hWnd, nCmdShow);
   UpdateWindow(hWnd);


   return TRUE;
}

//
//  ФУНКЦИЯ: WndProc(HWND, UINT, WPARAM, LPARAM)
//
//  НАЗНАЧЕНИЕ:  обрабатывает сообщения в главном окне.
//
//  WM_COMMAND	- обработка меню приложения
//  WM_PAINT	-Закрасить главное окно
//  WM_DESTROY	 - ввести сообщение о выходе и вернуться.
//
//

Последний раз редактировалось Lexeres; 05.12.2011 в 11:40.
Lexeres вне форума Ответить с цитированием
Старый 05.12.2011, 11:31   #2
Lexeres
Новичок
Джуниор
 
Регистрация: 15.11.2009
Сообщений: 54
По умолчанию

Код:
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	int wmId, wmEvent, ultem;
	PAINTSTRUCT ps;
	HDC hdc;
	static HWND hButton1;
	static HWND hButton2;
	static HWND hEdit, hStatic;
	char chBuff[80];

	switch (message)
	{
	case WM_CREATE:
		{	hStatic=CreateWindow("static","Введите строку",WS_CHILD|WS_VISIBLE|SS_CENTER,400,100,300,20,hWnd,(HMENU)0,hInst,NULL);
			hEdit = CreateWindow("edit",NULL,WS_CHILD|WS_VISIBLE|WS_BORDER|ES_LEFT,400,140,300,30, hWnd,(HMENU)ID_EDIT,hInst,NULL);

//			hButton1 = CreateWindow("button","Да",WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,500,185,100,30,hWnd,(HMENU)ID_BUTTON1,hInst,NULL);
		SetFocus(hEdit);
			return 0;
		}

	case WM_LBUTTONDOWN:
		{

		}
	case WM_COMMAND:
		{	
			switch (LOWORD(wParam))
			{
			case ID_EDIT:
				{
					if((HIWORD(wParam))==EN_ERRSPACE)MessageBox(hWnd,"мало памяти",szTitle,MB_OK);
					return 0;
				}
			
				case ID_BUTTON2:
				{
					DestroyWindow(hWnd);

				}
			case ID_BUTTON1: //Вот он вывод сообщения
				{
					SendMessage(hEdit,EM_GETLINE,0,(LPARAM)chBuff);
					MessageBox(hWnd,chBuff,szTitle,MB_OK);
					
					SetWindowText(hEdit,"\0");
					SetFocus(hEdit);
					return 0;

				}
			}
		
			hButton2 = CreateWindow("button","Выход",WS_CHILD|WS_VISIBLE|BS_DEFPUSHBUTTON,150,150,150,30,hWnd,(HMENU)ID_BUTTON2,hInst,NULL);
			return 0;
		}
		wmId    = LOWORD(wParam);
		wmEvent = HIWORD(wParam);
		// Разобрать выбор в меню:
		switch (wmId)
		{
		case IDM_ABOUT:
			DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
			break;
		case IDM_EXIT:
			DestroyWindow(hWnd);
			break;
		default:
			return DefWindowProc(hWnd, message, wParam, lParam);
		}
		break;
	case WM_PAINT:
		hdc = BeginPaint(hWnd, &ps);
		// TODO: добавьте любой код отрисовки...
		EndPaint(hWnd, &ps);
		break;
	case WM_DESTROY:
		PostQuitMessage(0);
		break;
	default:
		return DefWindowProc(hWnd, message, wParam, lParam);
	}
	return 0;
}

// Обработчик сообщений для окна "О программе".
INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{	

	UNREFERENCED_PARAMETER(lParam);
	switch (message)
	{
	case WM_INITDIALOG:
		return (INT_PTR)TRUE;

	case WM_COMMAND:
		{
			switch (LOWORD(wParam))
			{


			}
		}
		if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
		{
			EndDialog(hDlg, LOWORD(wParam));
			return (INT_PTR)TRUE;
		}
		break;
	}
	return (INT_PTR)FALSE;
}

Последний раз редактировалось Lexeres; 05.12.2011 в 11:40.
Lexeres вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выводит крокозябры , Win32, C++ Lexeres Общие вопросы C/C++ 4 05.12.2011 21:21
Не выводит в ДатаГридВью Mystery_Planet C# (си шарп) 7 07.05.2011 23:45
Не выводит javascript misher JavaScript, Ajax 2 12.01.2011 17:47
Не выводит символы MattShepard Общие вопросы C/C++ 2 12.01.2011 11:07
Не выводит на монитор and77k Общие вопросы C/C++ 2 27.11.2009 10:28