Функция не может быть перегружена. Win API

Тема в разделе "WASM.BEGINNERS", создана пользователем Mark, 8 янв 2012.

  1. Mark

    Mark Марк

    Публикаций:
    0
    Регистрация:
    15 сен 2011
    Сообщения:
    304
    Решил создать эту тему т.к. в предыдущей никто не ответил.

    Ругается Visual S – “Функция WinMain не может быть перегружена”

    Код (Text):
    1. #include <windows.h>
    2.  
    3. DWORD dwBytesWritten;
    4.  
    5. const int EditCtrlID = 12;
    6.  
    7. MSG msg;
    8.  
    9. HWND button;
    10.  
    11. LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
    12.  
    13.            
    14.  
    15. LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
    16. {
    17.     switch(message)
    18.     {
    19.     case WM_CREATE:
    20.         break;
    21.  
    22.     case WM_DESTROY:
    23.  
    24.         PostQuitMessage(0);
    25.         break;
    26.  
    27.     case WM_PAINT:
    28.         break;
    29.  
    30.     case WM_COMMAND:
    31.  
    32.         if(LOWORD(wParam)==10000)
    33.         {
    34.             MessageBeep(1);
    35.  
    36.             char st[1000] = {""};
    37.  
    38.             GetDlgItemTextA(
    39.                             hWnd,    
    40.                             EditCtrlID,        
    41.                             st,                  
    42.                             ARRAYSIZE(st)  
    43.                             );
    44.  
    45.             char f[] = {"Name.txt\0"};
    46.  
    47.             HANDLE hFile = CreateFileA(
    48.                                         f,
    49.                                         GENERIC_READ | GENERIC_WRITE,
    50.                                         FILE_SHARE_READ | FILE_SHARE_WRITE,
    51.                                         NULL,
    52.                                         CREATE_NEW,
    53.                                         FILE_ATTRIBUTE_NORMAL,
    54.                                         NULL
    55.                                         );
    56.  
    57.             WriteFile(hFile, st, ARRAYSIZE(st), &dwBytesWritten, NULL);
    58.         }
    59.  
    60.         default:
    61.             return DefWindowProc(hWnd, message, wParam, lParam);
    62.     }
    63.  
    64.  
    65. return 0;
    66. }
    67.  
    68.  
    69.  
    70. int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, INT nCmdShow)
    71. {                                                       < ----------------------Вот тут. Функция не может быть перегружена
    72.     wchar_t cname[] = L"Class";
    73.     wchar_t title[] = L"Заметки. Ver 1.0 Beta";
    74.  
    75.    
    76.  
    77.  
    78.     WNDCLASS wc;
    79.  
    80.     wc.style = 0;
    81.     wc.lpfnWndProc = (WNDPROC)WndProc;
    82.     wc.cbClsExtra = 0;
    83.     wc.cbWndExtra = 0;
    84.     wc.hInstance = hInstance;
    85.     wc.hIcon = LoadIcon(hInstance, (LPCTSTR)IDI_APPLICATION);
    86.     wc.hCursor = LoadCursor(NULL, IDC_ARROW);
    87.     wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
    88.     wc.lpszMenuName = 0;
    89.     wc.lpszClassName = cname;
    90.  
    91.     if(!RegisterClass(&wc)) return 0;
    92.  
    93.     HWND hWnd = CreateWindow(
    94.                             cname,
    95.                             title,
    96.                              WS_MINIMIZEBOX|WS_CLIPSIBLINGS|WS_CLIPCHILDREN|WS_MAXIMIZEBOX|WS_CAPTION|WS_BORDER|WS_SYSMENU|WS_THICKFRAME,  
    97.                             0,
    98.                             0,
    99.                             500,
    100.                             300,
    101.                             NULL,
    102.                             NULL,
    103.                             hInstance,
    104.                             NULL
    105.                             );
    106.  
    107.     if(!hWnd)return 0;
    108.  
    109.     HWND hWnd_button = CreateWindow(
    110.                                     L"button",
    111.                                     L"Press me",
    112.                                     WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
    113.                                     0,
    114.                                     0,
    115.                                     80,
    116.                                     30,
    117.                                     hWnd,
    118.                                     (HMENU)10000,
    119.                                     hInstance,
    120.                                     NULL
    121.                                     );
    122.  
    123.     ShowWindow(hWnd, nCmdShow);
    124.  
    125.     UpdateWindow(hWnd);
    126.  
    127.     hWnd = CreateWindow(L"edit", L"\n\n\nВаши заметки: ",
    128.                            WS_VISIBLE | WS_CHILD | WS_HSCROLL |WS_VSCROLL|ES_NOHIDESEL|ES_MULTILINE|WS_VISIBLE|WS_BORDER|ES_AUTOVSCROLL|ES_MULTILINE|ES_LEFT,
    129.                            0,
    130.                            0,
    131.                            300,
    132.                            500,
    133.                            hWnd,
    134.                            NULL,
    135.                            hInstance,
    136.                            NULL);
    137.                        
    138.     ShowWindow(hWnd, nCmdShow);
    139.  
    140.     UpdateWindow(hWnd);
    141.  
    142.  
    143.  
    144.  
    145.     while(GetMessage(&msg, NULL,0 ,0))
    146.     {
    147.         TranslateMessage(&msg);
    148.         DispatchMessage(&msg);
    149.     }
    150.  
    151. return 0;
    152. }
     
  2. Sholar

    Sholar New Member

    Публикаций:
    0
    Регистрация:
    16 окт 2011
    Сообщения:
    189
    Убери T и попробуй скомпилить.
     
  3. Blackbeam

    Blackbeam New Member

    Публикаций:
    0
    Регистрация:
    28 дек 2008
    Сообщения:
    960
  4. Mark

    Mark Марк

    Публикаций:
    0
    Регистрация:
    15 сен 2011
    Сообщения:
    304
  5. Mark

    Mark Марк

    Публикаций:
    0
    Регистрация:
    15 сен 2011
    Сообщения:
    304
    Sholar

    Спасибо. Тема закрыта.
     
  6. K10

    K10 New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2008
    Сообщения:
    1.590
    Предлагаю забанить ТС.
     
  7. Ezrah

    Ezrah Member

    Публикаций:
    0
    Регистрация:
    22 мар 2011
    Сообщения:
    411
    K10
    За что?
    Mark
    Несколько замечаний.
    0) Раз используете UNICODE, WinMain должна обзываться wWinMain, и тогда компилироваться будет без исправлений (но, лучше будет исправить тогда LPTSTR на LPWSTR).
    1) Структуру MSG нет смысла объявлять глобальной, т.к. она не используется нигде кроме WinMain. То же касается dwBytesWritten и button.
    2) Макрос ARRAYSIZE возвращает число элементов, а не количество байтов, в то время как в WriteFile нужно передавать именно число байтов. Используйте sizeof().
    3) char f[] = {"Name.txt\0"}; Тут \0 добавлять не нужно, и вообще строки объявляют так: char f[] = "Name.txt", т.е. без скобок.
    4) Стили WS_OVERLAPPED, WS_CAPTION, WS_SYSMENU, WS_THICKFRAME, WS_MINIMIZEBOX, WS_MAXIMIZEBOX вместе эквивалентны применению стиля WS_OVERLAPPEDWINDOW, т.о. можно сократить объем текста и сделать текст более наглядным.
    5) Рекомендуется, чтобы все дочерние элементы окна имели стиль WS_CLIPSIBLINGS, это позволяет частично избежать мерцания при изменении размеров главного окна.
    6) Оставлять пустой обработчик WM_PAINT плохая идея, должны быть как минимум BeginPaint/EndPaint, иначе происходит что-то не хорошее (по своему опыту), не помню что.
    7) После завершения работы с файлом его полагается закрыть. CloseHandle в помощь.
     
  8. K10

    K10 New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2008
    Сообщения:
    1.590
    Ezrah
    Принципиально не желает изучить основы и дублирует темы, нервируя достопочтенную публику.
    Я понимаю, что все с чего то начинали, но никто такие rtfm вопросы на форуме не задавал.
     
  9. Mark

    Mark Марк

    Публикаций:
    0
    Регистрация:
    15 сен 2011
    Сообщения:
    304
    Ezrah

    Спасибо.
     
  10. Ezrah

    Ezrah Member

    Публикаций:
    0
    Регистрация:
    22 мар 2011
    Сообщения:
    411
    K10
    Ну что ж, сложно не согласиться. Будь в дурном расположении духа, я, возможно, поддержал бы вас :)