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

Đề tài: Bị lỗi CreateWindow ... Help!!!!!!!!!!!!

  1. #1
    Ngày gia nhập
    02 2008
    Bài viết
    9

    Mặc định Bị lỗi CreateWindow ... Help!!!!!!!!!!!!

    Em sử dụng Visual Studio 2005, dùng C++ để tạo 1 cửa sổ với tiêu đề "Hello World!". Em dùng nguyên cái code trong " Beginning game programming" của Jonathan S. Harbour. Trong hàm InitInstance sử dụng đoạn code:
    "
    HWND hWnd;
    hWnd=CreateWindow("Hello World!",...);
    "

    Khi biên dịch báo lỗi:
    " error C2664: 'CreateWindowExW' : cannot convert parameter 2 from 'const char [13]' to 'LPCWSTR' "
    Em sửa lại thành:
    "
    hWnd=CreateWindow((LPCWSTR)"Hello World!",...);
    "

    thì biên dịch thành công nhưng tiêu đề của cửa sổ không phải là "Hello World!" như mong muốn mà lại là tiếng tàu gì gì đó! Hầu như trong chương trình chỗ nào sử dụng chuỗi " ... " thì khi biên dịch đều bị lỗi như trên, sửa lại thì lại hiện chữ tàu.

    Bó tay. Em mới nhập môn lập trình mà bị như trên nên nản quá trời. Mong các Pro giúp đỡ tận tình!!

    Thanks!!!!

  2. #2
    Ngày gia nhập
    10 2007
    Nơi ở
    /root
    Bài viết
    318

    Bạn sửa thành :
    Visual C++ Code:
    1. hWnd=CreateWindow(TEXT("Hello World!"),...);

    Các Mod lưu ý sử dụng tag code nâng cao nhé. Để sau này dễ quản lý chương trình hơn.

  3. #3
    Ngày gia nhập
    07 2007
    Nơi ở
    Hồ Chí Minh
    Bài viết
    66

    void main() chẳng giải thích vì sao ?

    Cái lỗi của bạn nằm ở chỗ là macro UNICODE đã dc định nghĩa. Nên khi biên dịch, các hàm api sẽ theo phiên bản UNICODE, do đó nó nhận thông số chuỗi theo wchar.
    Việc đặt 1 chuỗi trong macro TEXT() sẽ giúp compiler biên dịch linh hoạt. Khi UNICODE dc định nghĩa, thì chuỗi sẽ dc hiểu là chuỗi UNICODE, và ngược lại.
    Thèm khát con gái !!
    ......................

  4. #4
    Ngày gia nhập
    02 2008
    Bài viết
    9

    [QUOTE=void main ();34382]Bạn sửa thành :
    Visual C++ Code:
    1. hWnd=CreateWindow(TEXT("Hello World!"),...);

    Em đã sửa lại và OK rồi!! Thanks!!

    Trích dẫn Nguyên bản được gửi bởi cuxu Xem bài viết
    void main() chẳng giải thích vì sao ?

    Cái lỗi của bạn nằm ở chỗ là macro UNICODE đã dc định nghĩa. Nên khi biên dịch, các hàm api sẽ theo phiên bản UNICODE, do đó nó nhận thông số chuỗi theo wchar.
    Việc đặt 1 chuỗi trong macro TEXT() sẽ giúp compiler biên dịch linh hoạt. Khi UNICODE dc định nghĩa, thì chuỗi sẽ dc hiểu là chuỗi UNICODE, và ngược lại.
    Thanks!!
    Mà em hỏi xíu: macro UNICODE được biên dịch sẵn là do version của VS hay sao vậy bro? mình không thể làm cách nào để dữ nguyên code cũ mà vẫn biên dịch được chương trình như ý muốn sao??

  5. #5
    Ngày gia nhập
    07 2007
    Nơi ở
    Hồ Chí Minh
    Bài viết
    66

    Bạn kiểm tra xem trong mã nguồn có nơi nào define UNICODE ko.
    Hoặc trong Project Setting.
    Nếu ko thích thì thêm dòng.
    #ifdefined UNICODE
    #undef UNICODE
    #ifdefined _UNICODE
    #undef _UNICODE

    Thử xem thế nào naz.
    Thèm khát con gái !!
    ......................

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

    Mặc định Bị lỗi CreateWindow ... Help!!!!!!!!!!!!

    Cậu vào stdafx.h xóa phần định nghĩa dùng UNICODE đi là được mà.

    (Lúc coi thì chưa thấy ai trả lời. Lúc post xong rồi thì thấy cuxu trả lời rồi. )

  7. #7
    Ngày gia nhập
    02 2008
    Bài viết
    9

    He he ... mình đã tắt được Character Set đó roài. Nếu bạn nào xài VS 2005 thì có thể tắt như sau:

    Project - Properties - Configuration Properties - General - Project Defaults - Charecter Set - No Set

    Thank các bro rất nhiều!

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

  1. Sử dụng hàm createwindow trong visual studio 2005
    Gửi bởi ngminhduong trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 0
    Bài viết cuối: 01-04-2009, 04:02 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