На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела Visual C++ / MFC / WTL (далее Раздела)
1) На Раздел распространяются все Правила Форума.
2) Перед тем, как создать новый топик, убедитесь, что Вы читали Правила создания тем в Разделе.
3) Вопросы, не связанные с программированием (настройки MS Visual Studio, книги, библиотеки и т.д.),
обсуждаются в разделе C/C++: Прочее
4) Вопросы разработки .NET (Windows Form, C++/CLI и т.п.) приложений на Visual C++/C# обсуждаются в разделе .NET.
5) Нарушение Правил может повлечь наказание со стороны модераторов.

Полезные ссылки:
user posted image FAQ Раздела user posted image Обновления для FAQ Раздела user posted image Поиск по Разделу user posted image MSDN Library Online
Модераторы: ElcnU
Страницы: (2) [1] 2  все  ( Перейти к последнему сообщению )  
> 2 вопросa по winapi
    №1
    Создал win32 aplication в VC++ 2005 (winapi приложение)...в общем, все диалоги и т.д. можно редактировать через оч удобный редактор.. (все это чудо хранится в rc файле)..но я хочу чтоб главное окно тоже бралось с rc, так на много удобней его рисовать :)

    №2
    Пытаюсь исползовать MessageBox(); пишу вот так: "MessageBox(NULL,"TEST!",NULL,0);"
    И оно мне: cannot convert parameter 2 from 'const char [5]' to 'LPCWSTR'

    Если пишу вот так: "MessageBox(NULL,LPCWSTR("TEST!"),NULL,0);" ошибок нет, но вместо текста выводятся какие-то карлякули...

    Надеюсь вопросы не слишком тупые :) Спасибо заранее :)
      1.
      Цитата Jeno @
      но я хочу чтоб главное окно тоже бралось с rc, так на много удобней его рисовать

      Главное тока руками

      2. MessageBox(NULL,L"TEST!",L"",0);
        жалко :(
          Цитата cozzzy @
          2. MessageBox(NULL,L"TEST!",L"",0);

          Лучше MessageBox(NULL, _T("TEST!"),_T(""),0);
            есть щее пару вопросов...
            1.как узнать какой тип данных у переменной?
            2.как перевести с одного типа в другой? например LPWSTR в u_short... и откуда вообще вы узнаете как переводить с одного типа данных в другой?!их же не мерено...и в мсдн я даже не представляю что написать... :wacko:
            з.ы.может где-то дока есть...возможно список все типов данных... :unsure:
              Цитата Jeno @
              их же не мерено

              Да их вообще мало, просто такие типы, как LPWSTR всего лишь являются макросами и LPWSTR это всего лишь (wchar_t *)
              Цитата Jeno @
              в мсдн я даже не представляю что написать...

              data conversion routines
              Цитата Jeno @
              как узнать какой тип данных у переменной?

              Посмотри на typeid()
                1. чтобы главное было в .rc файле - создавай MFC Dialog
                2. MessageBox(NULL, TEXT("Hello !!!"), NULL, MB_OK) - без подключения MFC
                MessageBox(NULL, _T("Hello !!!"), NULL, MB_OK) - с подключением MFC

                если хочешьо задавать явно, то:
                ExpandedWrap disabled
                  MessageBoxA(NULL, "Hello !!!", NULL, MB_OK); // ANSI
                  MessageBoxW(NULL, L"Hello !!!", NULL, MB_OK); // Unicode


                непонятно токо, зачем переводить LPWSTR в u_short???
                LPWSTR - это указатель (4 байта), а u_short - число (2 байта)... потери будут !
                  Цитата alexander.stoyan, 28.12.2006, 10:14:30, 1394212
                  1. чтобы главное было в .rc файле - создавай MFC Dialog

                  разницы помоему нет какой тип проекта
                  если MFC то лезим в InitInstance и там решаем кто будет главным.
                  если АПИ, то помоему там тоже всё понятно :yes:
                    есть поле для ввода текста, оно возвращет данные в LPWSTR, нужно эти данные вставить в функцию...
                    вот смотрите:

                    вот так вот появляется ошибка...потому что inet_addr() и htons() ругается на то что port и host являются LPWSTR...
                    ExpandedWrap disabled
                      char port[10] = "";
                      char host[50] = "";
                      GetDlgItemText(hDlg,IDC_PORT,LPWSTR(port),10);
                      GetDlgItemText(hDlg,IDC_HOST,LPWSTR(host),50);
                       
                      clientService.sin_addr.s_addr = inet_addr(host);
                      clientService.sin_port = htons(port);


                    и я не знаю как переконвертировать....пробовал вот так:

                    ExpandedWrap disabled
                      clientService.sin_port = htons(u_short(port));
                    ошибок нет, но данные повреждаются...
                    Сообщение отредактировано: Jeno -
                      ExpandedWrap disabled
                        char port[10] = "";
                        char host[50] = "";
                        GetDlgItemTextA(hDlg,IDC_PORT,port,10);
                        GetDlgItemTextA(hDlg,IDC_PORT,host,50);
                         
                        clientService.sin_addr.s_addr = inet_addr(host);
                        clientService.sin_port = htons(port);
                        может так?
                        ExpandedWrap disabled
                          int WideCharToMultiByte(
                            UINT CodePage,            // code page
                            DWORD dwFlags,            // performance and mapping flags
                            LPCWSTR lpWideCharStr,    // wide-character string
                            int cchWideChar,          // number of chars in string
                            LPSTR lpMultiByteStr,     // buffer for new string
                            int cbMultiByte,          // size of buffer
                            LPCSTR lpDefaultChar,     // default for unmappable chars
                            LPBOOL lpUsedDefaultChar  // set when default char used
                          );
                        Сообщение отредактировано: ElcnU -
                          Цитата ElcnU @
                          может так?
                          ExpandedWrap disabled
                            int WideCharToMultiByte(
                              UINT CodePage,            // code page
                              DWORD dwFlags,            // performance and mapping flags
                              LPCWSTR lpWideCharStr,    // wide-character string
                              int cchWideChar,          // number of chars in string
                              LPSTR lpMultiByteStr,     // buffer for new string
                              int cbMultiByte,          // size of buffer
                              LPCSTR lpDefaultChar,     // default for unmappable chars
                              LPBOOL lpUsedDefaultChar  // set when default char used
                            );

                          это для винапи?

                          з.ы.мне нужно научится переводить типы данных....или не возможно перевести LPWSTR в u_short???

                          -Added
                          Цитата alexander.stoyan @
                          ExpandedWrap disabled
                            char port[10] = "";
                            char host[50] = "";
                            GetDlgItemTextA(hDlg,IDC_PORT,port,10);
                            GetDlgItemTextA(hDlg,IDC_PORT,host,50);
                             
                            clientService.sin_addr.s_addr = inet_addr(host);
                            clientService.sin_port = htons(port);

                          port и host приходится переводить в LPWSTR, так как GetDlgItemText() ругается....просит LPWSTR а не char....
                            а ты точно GetDlgItemTextA написал?
                              Цитата Jeno, 28.12.2006, 14:23:56, 1394613
                              з.ы.мне нужно научится переводить типы данных....или не возможно перевести LPWSTR в u_short???

                              ну и переведёшь в соответствии с требуемой кодировкой
                                вот смотрите:

                                ExpandedWrap disabled
                                  void mconnect(u_short port, char *host)
                                  {
                                      ...
                                      clientService.sin_addr.s_addr = inet_addr("127.0.0.1");
                                      clientService.sin_port = htons(port);
                                      ...
                                  }
                                   
                                  char port[10] = "";
                                  char host[50] = "";
                                  GetDlgItemTextA(hDlg,IDC_PORT,port,10);
                                  GetDlgItemTextA(hDlg,IDC_HOST,host,50);
                                  mconnect(u_short(port),host);


                                ошибок нет, но данные повреждаются (когда в поле (IDC_PORT) вписываю порт 8090 то клиент пытается подконнектится и потом выдает ошибку...но если я в htons(port); вместо переменной port вписываю просто 8090 то все ок)...где нужно исправить?! и помечу???
                                з.ы.сори за наглость...больше не у кого спросить.. :'(
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0428 ]   [ 16 queries used ]   [ Generated: 19.04.24, 20:10 GMT ]