Từ 1 tới 3 trên tổng số 3 kết quả

Đề tài: Hộp thoại Check Box

  1. #1
    Ngày gia nhập
    11 2007
    Nơi ở
    Hà Nội
    Bài viết
    31

    Red face Hộp thoại Check Box

    Bạn nào đã từng làm project dạng này giúp mình với. Nội dung như sau:
    Viết một hộp thoại gồm 4 Check box (mầu xanh, mau đỏ, mau tím, mau vàng) và một dòng ký tự dạng Text, khi người dùng kích chuột vào Check box thì hiện thị màu tương ứng của dòng Text đã cho theo màu qui định ở Check box.
    Hiện mình đã xây dựng được dialog gồm 4 check box dạng push button nhưng không biết xử lý code thế nào để khi kích chuột vào các button đó sẽ hiển thị được màu tương ứng ở dòng Text. Rất mong nhận được sự góp ý và ý tưởng của các bạn.
    Thanks!
    Live and feel....

  2. #2
    Ngày gia nhập
    06 2007
    Bài viết
    14

    - Trong file .h bạn khai báo:
    + Biến màu COLORREF cColor;
    + Hàm xử lí sự kiện click vào checkbox: afx_msg void OnChangeColor();
    - Trong file .cpp: Khai báo trong MESSAGEMAP sự kiện click checkbox trong 4 trường hợp:
    ON_BN_CLICKED (IDC_BLUE, OnChangeColor)
    ON_BN_CLICKED (IDC_RED, OnChangeColor)
    ON_BN_CLICKED (IDC_VIOLET, OnChangeColor)
    ON_BN_CLICKED (IDC_YELLOW, OnChangeColor)
    Tiếp tục xuống dưới để xây dựng Message Handler
    Code:
    void OnChangeColor ()
    {
    	// màu xanh
    	if (IsDlgButtonChecked(IDC_BLUE))	// nếu hộp blue được check
    		iColor = RGB (0, 0, 255);
    	// tương tự với 3 màu còn lại
    
    	Invalidate (TRUE);	// gọi OnPaint để vẽ lại màn hình
    }
    - Vào OnPaint() dùng CPaintDC để vẽ chữ đúng màu (đã có cColor rồi). Sử dụng các hàm SetTextColor, TextOut hoặc DrawText.
    Chúc bạn thành công
    Đã được chỉnh sửa lần cuối bởi sole : 19-05-2008 lúc 12:12 AM.
    Ta là ai không quan trọng, điều ta làm sẽ khẳng định con người ta!

  3. #3
    Ngày gia nhập
    11 2007
    Nơi ở
    Hà Nội
    Bài viết
    31

    Cảm ơn bạn đã giúp đỡ!
    Cho mình hỏi thêm: mình tạo 1 ứng dụng Win 32 Application và dạng A typical "Hello World!" Application. Sau đó dùng thông điệp WM_CREATE:trong hàm WndProc để tạo 4 button ngoài cửa sổ chính. Vậy làm sao để xử lý
    thông điệp cho 4 button này.
    Code:
    LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
    	int wmId, wmEvent;
    	HWND hWndButton,hWndButton1,hWndButton2,hWndButton3;
    	PAINTSTRUCT ps;
    	HDC hdc;
    	//BN_CLICKED idButton = (int)LOWORD(wParam);
    	//hwndButton = (HWND) lParam;
    	TCHAR szHello[MAX_LOADSTRING];
    	LoadString(hInst, IDS_HELLO, szHello, MAX_LOADSTRING);
    	//COLORREF crOldColor;
    	//static COLORREF crColor=RGB(0,0,0);
    	
    
    	switch (message) 
    	{
    		case WM_CREATE:
    			
    			hWndButton = CreateWindow( "BUTTON","Mau Xanh",WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON,10,         
                              10,100,100,hWnd,NULL,(HINSTANCE) GetWindowLong(hWnd, GWL_HINSTANCE),NULL);      
    			hWndButton1 = CreateWindow( "BUTTON","Mau Do",WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON,120,         
                              10,100,100,hWnd,NULL,(HINSTANCE) GetWindowLong(hWnd, GWL_HINSTANCE),NULL);      
    			hWndButton2 = CreateWindow( "BUTTON","Mau Do",WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON,240,         
                              10,100,100,hWnd,NULL,(HINSTANCE) GetWindowLong(hWnd, GWL_HINSTANCE),NULL);      
    			hWndButton3 = CreateWindow( "BUTTON","Mau Do",WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON,360,         
                              10,100,100,hWnd,NULL,(HINSTANCE) GetWindowLong(hWnd, GWL_HINSTANCE),NULL);      
    			//hWnd=CreateWindow( "BUTTON","Mau Do",WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON,360,         
                    //          100,100,100,hWnd,NULL,(HINSTANCE) GetWindowLong(hWnd, GWL_HINSTANCE),NULL);      
    			
    
    			return TRUE;
    		case WM_COMMAND:
    			wmId    = LOWORD(wParam); 
    			wmEvent = HIWORD(wParam); 
    			// Parse the menu selections:
    			switch (wmId)
    			{
    									
    								case IDM_ABOUT:
    				   DialogBox(hInst, (LPCTSTR)IDD_ABOUTBOX, hWnd, (DLGPROC)About);
    				   break;
    				case IDM_EXIT:
    				   DestroyWindow(hWnd);
    				   break;
    				default:
    				   return DefWindowProc(hWnd, message, wParam, lParam);
    			}
    						break;
    		case WM_PAINT:
    			hdc = BeginPaint(hWnd, &ps);
    			// TODO: Add any drawing code here...
    						RECT rt;
    			GetClientRect(hWnd, &rt);
    			DrawText(hdc, szHello, strlen(szHello), &rt, DT_CENTER);
    						EndPaint(hWnd, &ps);
    			break;
    		case WM_DESTROY:
    			PostQuitMessage(0);
    			break;
    		default:
    			return DefWindowProc(hWnd, message, wParam, lParam);
       }
       return 0;
    }
    Live and feel....

Các đề tài tương tự

  1. ADO.NET Chỉ cho phép check một dòng trong cột check trên Datagridview
    Gửi bởi bkmt trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 7
    Bài viết cuối: 02-12-2011, 08:21 AM
  2. Trả lời: 10
    Bài viết cuối: 18-10-2011, 12:10 PM
  3. kiểm tra checklistbox có được check hay ko và khi check nó trả về cáo gì?
    Gửi bởi tan408 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 0
    Bài viết cuối: 19-05-2011, 04:35 PM
  4. cách dùng check box chấm công()
    Gửi bởi nhatnghe_thuong trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 3
    Bài viết cuối: 10-05-2011, 10:18 PM
  5. Check Thread is Suspending ?, Check Process Is Suspending ?
    Gửi bởi honey trong diễn đàn Windows API, Hooking, xử lý Windows Message
    Trả lời: 1
    Bài viết cuối: 22-08-2010, 03:51 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn