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

Đề tài: wndclass.hbrBackground Lại thêm 1 lỗi !

  1. #1
    Ngày gia nhập
    10 2006
    Nơi ở
    In Your Bugs
    Bài viết
    823

    Mặc định wndclass.hbrBackground Lại thêm 1 lỗi !

    PHP Code:
    BOOL InitApplication(HINSTANCE hInstance)
    {
        
    WNDCLASS wndclass;
        
    wndclass.style =    CS_HREDRAW CS_VREDRAW ;
        
    wndclass.lpfnWndProc =    winproc;
        
    wndclass.cbClsExtra  =    0;
        
    wndclass.cbWndExtra     =    0;
        
    wndclass.hInstance   =    hInstance;
        
    wndclass.hIcon        =    LoadIcon (NULL,IDI_APPLICATION);
        
    wndclass.hCursor    =    LoadCursor(NULLIDC_ARROW);
        
    //wndclass.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
        
    wndclass.hbrBackground GetStockObject(WHITE_BRUSH);
        
        
        
    wndclass.lpszClassName AppName;
        
    wndclass.lpszMenuName  NULL;
        return 
    RegisterClass(&wndclass);

    //wndclass.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
    wndclass.hbrBackground = GetStockObject(WHITE_BRUSH);

    Đó lỗi chỗ đấy ? Nó bảo don't convert from ? to struct HBRUSH chán quá nè ?

  2. #2
    Ngày gia nhập
    10 2006
    Nơi ở
    In Your Bugs
    Bài viết
    823

    Online chờ các bro mà chẳng thấy ai ? Nghèo mà gặp eo thế này ? đau đầu thật ? :|

    wndclass.hbrBackground = CreateSolidBrush (RGB(0,0,0));
    sửa lỗi trên thành cái dòng này thì nó không báo lỗi ấy nữa Ctrl F7 thì không thấy chuyện gì xảy ra . Nhưng Ctrl F5 thì nó báo 2 lỗi như thế này :

    unresolved external symbol "int _cdecl InitInstance(struct HINSTANCE_ *,int)" (?InitInstance@@YAHPAUHINSTANCE_@@H@Z)
    unresolved external symbol "long _stdcall winproc(struct HWND_ *,ungsigned int,ingsigned int,long)" (?winproc@@YGJPAUHWND__@@IIJ@Z)
    Hix chẳng biết hỏi sao nữa ? Anh em coi giúp thử coi ?

    Nếu được thì test luôn đoạn code trên giúp . (Không biết 2 cái lỗi này fix xong thì gặp bi nhiêu lỗi nữa đây ? Vạn sự khởi đầu nan mà sao thấy nản thế này ? Chép nguyên trong sách chứ có sai gì đâu ?)

  3. #3
    Ngày gia nhập
    01 2007
    Nơi ở
    Hải Phòng
    Bài viết
    210

    Bạn thử lại với code này xem còn bị lỗi ko ?

    Code:
    BOOL InitApplication(HINSTANCE hInstance)
    {
        WNDCLASS wndclass;
        wndclass.style =    CS_HREDRAW | CS_VREDRAW ;
        wndclass.lpfnWndProc =    winproc;
        wndclass.cbClsExtra  =    0;
        wndclass.cbWndExtra     =    0;
        wndclass.hInstance   =    hInstance;
        wndclass.hIcon        =    LoadIcon (NULL,IDI_APPLICATION);
        wndclass.hCursor    =    LoadCursor(NULL, IDC_ARROW);
        wndclass.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH);
        
        
        wndclass.lpszClassName = AppName;
        wndclass.lpszMenuName  = NULL;
        return RegisterClass(&wndclass);
    }
    pEnGwINUS.

  4. #4
    Ngày gia nhập
    10 2006
    Nơi ở
    In Your Bugs
    Bài viết
    823

    wndclass.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH);
    Rồi thử ép kiểu vậy rồi nhưng mà không được mới chuyển qua dùng hàm :
    HBRUSH CreateSolidBrush (int );
    và có 2 lỗi như trên đấy !

  5. #5
    Ngày gia nhập
    01 2007
    Nơi ở
    Hải Phòng
    Bài viết
    210

    kidkid đã đưa cho tớ mã nguồn. Test ra tổng cộng 3 lỗi. Tớ sẽ bôi đậm những chỗ cậu bị lỗi nghen

    Code:
    // 3.cpp : Defines the entry point for the application.
    //
    
    #include "stdafx.h"
    
    LRESULT CALLBACK winproc(HWND, UINT, WPARAM, LPARAM);
    BOOL InitApplication (HINSTANCE);
    BOOL InitInstance(HINSTANCE, int);
    char AppName[]="HelloPgm";
    
    
    int APIENTRY WinMain(HINSTANCE hInstance,
                         HINSTANCE hPrevInstance,
                         LPSTR     lpCmdLine,
                         int       cmdShow)
    {
     	MSG msg;
    	if(!InitApplication(hInstance)) return FALSE;
    	if(!InitInstance(hInstance, cmdShow)) return FALSE;
    	while(GetMessage(&msg,NULL,0,0))
    	{
    		TranslateMessage(&msg);
    		DispatchMessage(&msg);
    	}
    
    
    	return msg.wParam;
    }
    
    
    BOOL InitApplication(HINSTANCE hInstance)
    {
    	WNDCLASS wndclass;
    	wndclass.style =	CS_HREDRAW | CS_VREDRAW ;
    	wndclass.lpfnWndProc =	winproc;
    	wndclass.cbClsExtra  =	0;
    	wndclass.cbWndExtra	 =	0;
    	wndclass.hInstance   =	hInstance;
    	wndclass.hIcon		=	LoadIcon (NULL,IDI_APPLICATION);
    	wndclass.hCursor	=	LoadCursor(NULL, IDC_ARROW);
    	wndclass.hbrBackground = GetStockObject(WHITE_BRUSH); // Cái này cậu thiếu (HBRUSH)
    	
    	
    	wndclass.lpszClassName = AppName;
    	wndclass.lpszMenuName  = NULL;
    	return RegisterClass(&wndclass);
    }
    
    BOOL InitInstane(HINSTANCE hInstance, int cmdShow) // Cái này gõ nhầm Instance thành Instane
    {
    	HWND hWnd;
    	hWnd = CreateWindow(AppName,
    						"Hello World",
    						WS_OVERLAPPEDWINDOW,
    						CW_USEDEFAULT,
    						0,
    						CW_USEDEFAULT,
    						0,
    						NULL,
    						NULL,
    						hInstance,
    						NULL);
    
    
    	if(!hWnd) return FALSE;
    	ShowWindow(hWnd,cmdShow);
    	UpdateWindow (hWnd);
    	return TRUE;
    }
    
    LRESULT CALLBACK Winproc(HWND hWnd,	 // Còn chỗ này thì Winproc không được viết hoa chữ W.
    						 UINT msg,
    						 WPARAM wparam,
    						 LPARAM lparam)
    {
    	HDC			hdc;
    	PAINTSTRUCT ps;
    	RECT		rect;
    	switch(msg)
    	{
    		case WM_PAINT:
    			hdc= BeginPaint ( hWnd,&ps);
    			GetClientRect(hWnd,&rect);
    			DrawText ( hdc, " Hello World ",-1,&rect,DT_SINGLELINE| DT_CENTER | DT_VCENTER);
    			EndPaint(hWnd,&ps);
    			return 0;
    		case WM_DESTROY:
    			PostQuitMessage(0);
    			return 0;
    	}
    	
    	return DefWindowProc(hWnd,msg,wparam,lparam);
    }
    Mã nguồn hoàn chỉnh sẽ là :

    Code:
    // 3.cpp : Defines the entry point for the application.
    //
    
    #include "stdafx.h"
    
    LRESULT CALLBACK winproc(HWND, UINT, WPARAM, LPARAM);
    BOOL InitApplication (HINSTANCE);
    BOOL InitInstance(HINSTANCE, int);
    char AppName[]="HelloPgm";
    
    
    int APIENTRY WinMain(HINSTANCE hInstance,
                         HINSTANCE hPrevInstance,
                         LPSTR     lpCmdLine,
                         int       cmdShow)
    {
     	MSG msg;
    	if(!InitApplication(hInstance)) return FALSE;
    	if(!InitInstance(hInstance, cmdShow)) return FALSE;
    	while(GetMessage(&msg,NULL,0,0))
    	{
    		TranslateMessage(&msg);
    		DispatchMessage(&msg);
    	}
    
    
    	return msg.wParam;
    }
    
    
    BOOL InitApplication(HINSTANCE hInstance)
    {
    	WNDCLASS wndclass;
    	wndclass.style =	CS_HREDRAW | CS_VREDRAW ;
    	wndclass.lpfnWndProc =	winproc;
    	wndclass.cbClsExtra  =	0;
    	wndclass.cbWndExtra	 =	0;
    	wndclass.hInstance   =	hInstance;
    	wndclass.hIcon		=	LoadIcon (NULL,IDI_APPLICATION);
    	wndclass.hCursor	=	LoadCursor(NULL, IDC_ARROW);
    	wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
    	
    	
    	wndclass.lpszClassName = AppName;
    	wndclass.lpszMenuName  = NULL;
    	return RegisterClass(&wndclass);
    }
    
    BOOL InitInstance(HINSTANCE hInstance, int cmdShow)
    {
    	HWND hWnd;
    	hWnd = CreateWindow(AppName,
    						"Hello World",
    						WS_OVERLAPPEDWINDOW,
    						CW_USEDEFAULT,
    						0,
    						CW_USEDEFAULT,
    						0,
    						NULL,
    						NULL,
    						hInstance,
    						NULL);
    
    
    	if(!hWnd) return FALSE;
    	ShowWindow(hWnd,cmdShow);
    	UpdateWindow (hWnd);
    	return TRUE;
    }
    
    LRESULT CALLBACK winproc(HWND hWnd,
    						 UINT msg,
    						 WPARAM wparam,
    						 LPARAM lparam)
    {
    	HDC			hdc;
    	PAINTSTRUCT ps;
    	RECT		rect;
    	switch(msg)
    	{
    		case WM_PAINT:
    			hdc= BeginPaint ( hWnd,&ps);
    			GetClientRect(hWnd,&rect);
    			DrawText ( hdc, " Hello World ",-1,&rect,DT_SINGLELINE| DT_CENTER | DT_VCENTER);
    			EndPaint(hWnd,&ps);
    			return 0;
    		case WM_DESTROY:
    			PostQuitMessage(0);
    			return 0;
    	}
    	
    	return DefWindowProc(hWnd,msg,wparam,lparam);
    }
    --May mà cậu send mã nguồn cho. Không thì xem mỗi đoạn đầu ở trên kia thì đến tết Tây cũng ko tìm ra lỗi.
    pEnGwINUS.

  6. #6
    Ngày gia nhập
    10 2006
    Nơi ở
    In Your Bugs
    Bài viết
    823

    Mặc định wndclass.hbrBackground Lại thêm 1 lỗi !

    Rồi tớ chạy được rồi hieubm ơi ! Thanks tiếp nhé

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

  1. thêm dử liệu vào datagirview nhưng khôn thêm vào database
    Gửi bởi saodemd trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 9
    Bài viết cuối: 11-06-2012, 10:03 PM
  2. Trả lời: 2
    Bài viết cuối: 02-12-2011, 06:10 PM
  3. WNDCLASS và WNDCLASSEX khác nhau như thế nào?
    Gửi bởi princehai trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 2
    Bài viết cuối: 13-08-2011, 04:46 PM
  4. thêm và không thêm button vào row DataGridView in C#
    Gửi bởi aazz trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 0
    Bài viết cuối: 06-05-2011, 05:45 PM
  5. Thêm một hàng mới vào DataGridView đồng thời thêm vào CSDLSQL
    Gửi bởi leminhquan1990 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 5
    Bài viết cuối: 08-04-2011, 11:14 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