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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.07.2011, 11:46   #1
zzz678
 
Регистрация: 12.11.2009
Сообщений: 4
По умолчанию проблемы с WM_CTLCOLOREDIT

есть окошко с полями ввода и кнопками. при нажатии трёх из 5 кнопок текст из первого edit`a должен копироваться во второй edit, но с изменениями. через WM_CTLCOLOREDIT мне удаётся изменить только один обработчик, дальше ничего не получатся. хотел вызов сообщения каждый раз устроить, но компилятор послал меня. если кто-то будет так добр - объясните где-как разобраться с цветами. мне просто бы добавить ещё один цвет. в смысле для одной кнопки один, для другой второй.

Код:
#include "stdafx.h"
#include <windows.h>
#include <string.h>
#include <conio.h>
#define ID_EDIT 1
#define ID_BUTTON 2
#define TXT_COLOR1 RGB(255,255,0)
#define TXT_COLOR2 RGB(0,255,0)
#define TXT_COLOR3 RGB(255,0,0)
 
 
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
 
  static HWND hwndEdit1;            // инициализация 
  static HWND hwndEdit2;
  static HWND hwndButton1;
  static HWND hwndButton2;
  static HWND hwndButton3;
  static HWND hwndButton4;
  static HWND hwndButton5;
  static len;
  static TCHAR text[60];
  static TCHAR str[60];

 
 
    switch(msg)
        {
            case WM_CREATE:
                hwndEdit1 = CreateWindow(TEXT("Edit"), NULL, WS_CHILD | WS_VISIBLE | WS_BORDER,         // создание двух полей edit
                30, 50, 440, 30, hwnd, (HMENU) 1,
                NULL, NULL);
 
 
                hwndEdit2 = CreateWindow(TEXT("Edit"), NULL, WS_CHILD | WS_VISIBLE | WS_BORDER,
                30, 100, 440, 50, hwnd, (HMENU) 2,
                NULL, NULL);
 
 
 
                hwndButton1 = CreateWindow(                 // создание кнопок
                TEXT("button"), TEXT("Title"),       
                WS_VISIBLE | WS_CHILD,  
                30, 170, 80, 25,        
                hwnd, (HMENU) 3, NULL, NULL);      
 
                hwndButton2 = CreateWindow(
                TEXT("button"), TEXT("Yelow"),       
                WS_VISIBLE | WS_CHILD,  
                120, 170, 80, 25,        
                hwnd, (HMENU) 4, NULL, NULL); 
 
                hwndButton3 = CreateWindow(
                TEXT("button"), TEXT("Red"),       
                WS_VISIBLE | WS_CHILD,  
                210, 170, 80, 25,        
                hwnd, (HMENU) 5, NULL, NULL); 
 
                hwndButton4 = CreateWindow(
                TEXT("button"), TEXT("Font"),       
                WS_VISIBLE | WS_CHILD,  
                300, 170, 80, 25,        
                hwnd, (HMENU) 6, NULL, NULL); 
 
                hwndButton5 = CreateWindow(
                TEXT("button"), TEXT("Quit"),       
                WS_VISIBLE | WS_CHILD,  
                390, 170, 80, 25,        
                hwnd, (HMENU) 7, NULL, NULL); 
 
            break;
 

						


    case WM_COMMAND:
		
                if (LOWORD(wParam) == 3) {
                len = GetWindowTextLength(hwndEdit1) + 1;
                GetWindowText(hwndEdit1, text, len);
                SetWindowText(hwnd, text);                  // изменение заголовка
                }

	            if (LOWORD(wParam) == 4) {
                len = GetWindowTextLength(hwndEdit1) + 1;
                GetWindowText(hwndEdit1, str, len);
			    SetWindowText(hwndEdit2, str);
                }
 
                else if (LOWORD(wParam) == 5) {
                len = GetWindowTextLength(hwndEdit1) + 1;
                GetWindowText(hwndEdit1, text, len);
                SetWindowText(hwndEdit2, text);
                }
 
                else if (LOWORD(wParam) == 6) {
                len = GetWindowTextLength(hwndEdit1) + 1;
                GetWindowText(hwndEdit1, text, len);
				SetWindowText(hwndEdit2, text);
				}
 
                
	 else if (LOWORD(wParam) == 7) {
                PostQuitMessage(0);
                }

	 
  case WM_CTLCOLOREDIT:
				if(hwndEdit2 == (HWND)lParam) // меняем цвета для конкретного эдита
				{
				HDC hdcEdit2 = (HDC) wParam;
				::SetTextColor(hdcEdit2, TXT_COLOR1);    //0 255 0 - зелёный..  255 0 0 
				return 0;
				}
 
    break;
 
        case WM_DESTROY:
            PostQuitMessage(0);
        break;
        }
return DefWindowProc(hwnd, msg, wParam, lParam);
}
 
            int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
            LPSTR lpCmdLine, int nCmdShow )
{
  MSG  msg ;    
  WNDCLASS wc = {0};
  wc.lpszClassName = TEXT( "Task" );
  wc.hInstance     = hInstance ;
  wc.hbrBackground = GetSysColorBrush(COLOR_3DFACE);
  wc.lpfnWndProc   = WndProc ;
  wc.hCursor       = LoadCursor(0,IDC_ARROW);
 
 
  RegisterClass(&wc);
  CreateWindow( wc.lpszClassName, TEXT("Task"),
                WS_OVERLAPPEDWINDOW | WS_VISIBLE,
                220, 220, 510, 310, 0, 0, hInstance, 0);  
 
  while( GetMessage(&msg, NULL, 0, 0)) {
    TranslateMessage(&msg);
    DispatchMessage(&msg);
  }
  return (int) msg.wParam;
}
zzz678 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблемы с БД Verwolf C/C++ Базы данных 2 22.05.2011 09:52
Проблемы с С# PDV199003 Помощь студентам 0 04.06.2010 14:38
проблемы с if Vergil Общие вопросы C/C++ 8 21.04.2010 21:43
проблемы с гиперссылками Обыватель Microsoft Office Excel 3 06.04.2009 14:56
проблемы с IE xakzona Помощь студентам 1 16.12.2008 21:53