Модераторы: feodorv, GremlinProg, xvr, Fixin

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Начинающим, изучать WinAPI 
:(
    Опции темы
W4FhLF
Дата 3.6.2007, 06:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 12
Всего: 121



ressac, ну так создавай проект не консольный или что-нибудь вроде
#pragma comment(linker, "/SUBSYSTEM:WINDOWS")
напиши 


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
ressac
Дата 3.6.2007, 10:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 345
Регистрация: 25.11.2006

Репутация: нет
Всего: 1



W4FhLF, да там проект особо не создашь smile это коносольный компиль, а это

Цитата

#pragma comment(linker, "/SUBSYSTEM:WINDOWS")


не помогло
PM MAIL   Вверх
W4FhLF
Дата 3.6.2007, 10:57 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 12
Всего: 121



Цитата(ressac @  3.6.2007,  10:29 Найти цитируемый пост)
W4FhLF, да там проект особо не создашь  это коносольный компиль, а это


Что значит консольный компиль? Это зависит от поля Subsystem в заголовке PE файла.

g++ -Xlinker --subsystem -Xlinker windows main.cpp -o main.exe

Всё работает. 


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
nerezus
  Дата 5.6.2007, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: нет
Всего: 43



Цитата

Многие, начинающие изучать API (application programming interface – интерфейс программирования приложений), удивляются объему кода, сложности и тп, говорят, что проще сделать в Borlan® Builder®. Если Вы так думаете, то зачем читаете этот текст?
 А разве не легче? ))


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
101
Дата 7.6.2007, 11:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 6.6.2007

Репутация: нет
Всего: нет



 smile 
PM MAIL   Вверх
Dronchik
  Дата 18.6.2007, 10:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Звукач ёмаё
**


Профиль
Группа: Участник
Сообщений: 451
Регистрация: 1.5.2007

Репутация: нет
Всего: 37



Цитата

Возникает такое сообщение "c:\apiwindow\apiwindow.cpp(83) : fatal error C1010: unexpected end of file while looking for precompiled header. Did you forget to add '#include "stdafx.h"' to your source?
 И exe-файл не создается... Что делать? Нужен ли этот stdafx и как с ним обходиться? 

А ты выбирай emptu proect а потом создовай файл С++ и пиши там что хочеш



--------------------
Вместо слов делай дело, от которого ты фанатеешь. (с)

PM MAIL WWW ICQ   Вверх
DominiK
Дата 8.7.2007, 22:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 11.3.2007
Где: Россия, Омск

Репутация: нет
Всего: нет



Цитата(ShadowPhoenix @ 15.6.2006,  17:55)
По поводу первой програмки... попробовал откомпилировать в MVS2005  и получил такую козу:
Код

------ Build started: Project: simple, Configuration: Debug Win32 ------
Compiling...
code.cpp
z:\prog\vc\first mfc program\simple\simple\code.cpp(5) : error C2664: 'MessageBoxW' : cannot convert parameter 2 from 'const char [29]' to 'LPCWSTR'
        Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
Build log was saved at "file://\\fdoserv\общий доступ\Prog\VC\First MFC program\simple\simple\Debug\BuildLog.htm"
simple - 1 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

 что я тут не понял:
 1. С какого перепугу "MessageBoxW" вместо "MessageBox", в MSDN такой фишки вообще нет... ну это ладно.
 2. поповоду самого "MessageBox"
в MSDN :
Код

Syntax

int MessageBox
(         
           HWND hWnd,
           LPCTSTR lpText,
           LPCTSTR lpCaption,
           UINT uType
);


Parameters

-hWnd
  [in] Handle to the owner window of the message box to be created. If this parameter is NULL, the       message box has no owner window. 
-lpText
  [in] Pointer to a null-terminated string that contains the message to be displayed. 
-lpCaption
  [in] Pointer to a null-terminated string that contains the dialog box title. If this parameter is NULL, the -default title Error is used. 
-uType
  [in] Specifies the contents and behavior of the dialog box. This parameter can be a combination of flags from the following groups of flags.


т.е. по логике вещей должно приводиться??? или я чего не так понимаю.
далее начал химичить пытаясь его запустить хоть как-то... и пришел к такому вот обрезаному виду:
Код
#include <windows.h>

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdParam, int nCmdShow)
{
    LPCWSTR s1,s2;
    MessageBox(NULL, NULL, NULL, MB_OK|MB_ICONEXCLAMATION);
    return 0;
}


 :qstn так собственно сам вопрос как строку  к этому страшному LPСWSTR приводить... перепробовал все известные мне способы :stena , из знакомых никто не знает :(




MessageBox(NULL, L"Сказала собака баскервилей.",L "Ну, здравствуй, Герасим.", MB_OK|MB_ICONEXCLAMATION);

Это сообщение отредактировал(а) DominiK - 8.7.2007, 22:51
PM MAIL   Вверх
LinuxanT
Дата 15.2.2008, 07:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 21.10.2007

Репутация: нет
Всего: нет



такую тему закрепить наверху имхо надо... smile 

посоветуйте учебник по WinAPI пожалуйста...   smile 

-------------------------
все нашел... ссылки на них есть в важных... 
PS и почему функции удаления своего сообшения тут нед(((

Это сообщение отредактировал(а) LinuxanT - 15.2.2008, 07:21
PM MAIL   Вверх
pycha
Дата 31.7.2008, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


главный анастазиолог
*


Профиль
Группа: Участник
Сообщений: 239
Регистрация: 20.6.2008
Где: Украина

Репутация: нет
Всего: 13



драсте у меня была аналогичная трабла, не хотело компилировать я почитал эту тему раскинул мозгами изменил код и скомпилировало нормально(код из книги " win32 API Эфективная разработка приложений" . Вот что у меня получилось
Код

#include "stdafx.h"
#include <windows.h>
#include <tchar.h>
LRESULT CALLBACK WndProc(HWND, UINT,WPARAM, LPARAM);

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstancel,
                   LPSTR lpCmdLine, int nCmdShow)
{
    HWND hMainWnd;
    wchar_t szClassName[] = L"my Class";
    MSG msg;
        WNDCLASSEX wc;

        wc.cbSize        = sizeof (wc);
        wc.style        = CS_HREDRAW| CS_VREDRAW;
        wc.lpfnWndProc    = WndProc;
        wc.cbClsExtra    = 0;
        wc.cbWndExtra    = 0;
        wc.hInstance    = hInstance;
        wc.hIcon        = LoadIcon(    NULL, IDI_APPLICATION);
        wc.hCursor        = LoadCursor(NULL, IDC_ARROW);
        wc.hbrBackground= (HBRUSH)GetStockObject(WHITE_BRUSH);
        wc.lpszMenuName    = NULL;
        wc.lpszClassName=  szClassName;
        wc.hIconSm        = LoadIcon(NULL, IDI_APPLICATION);
        if(!RegisterClassEx(&wc)){
            MessageBox(NULL, L"не могу зарегестрировать клас", 
                L"ошибка", MB_OK);
            return 0;
        }

        hMainWnd = CreateWindow(szClassName, L"програма с приветом", WS_OVERLAPPEDWINDOW,
            CW_USEDEFAULT, 0, CW_USEDEFAULT, 0,
            (HWND)NULL, (HMENU)NULL,
            (HINSTANCE)hInstance, NULL);
        if(hMainWnd){
            MessageBox(NULL, L"не создается главное окно", L"ошибка", MB_OK);
            return 0;
        }

        ShowWindow(hMainWnd, nCmdShow);
        UpdateWindow(hMainWnd);

        while (GetMessage(&msg,NULL, 0,0)){
        TranslateMessage(&msg);
        DispatchMessage(&msg);
        }
        return msg.wParam;
}

LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam,LPARAM lParam)
{
    HDC hDC;
    PAINTSTRUCT ps;
    RECT rect;

    switch (uMsg)
    {
    case WM_PAINT:
        hDC = BeginPaint (hWnd, &ps);
        GetClientRect(hWnd, & rect);
        DrawText(hDC, L" Hello, world!", -1, & rect,
            DT_SINGLELINE | DT_CENTER |DT_VCENTER);
        
        EndPaint(hWnd,&ps);
        break;

    case WM_CLOSE:
        DestroyWindow(hWnd);
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hWnd, uMsg, wParam,lParam);
    }
    return 0;
}

 
но почемуто при запуске выкидывает месаж что несоздается главное окно. Подскажите что тут не так.
--------------------
ищу хакера со знанием компьютера длятехкт
PM MAIL ICQ   Вверх
mekhanikus
Дата 31.7.2008, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вольноопределяющийся
*


Профиль
Группа: Участник
Сообщений: 186
Регистрация: 16.6.2008
Где: Спасск-Дальний

Репутация: 1
Всего: 1



Цитата(pycha @ 31.7.2008,  14:05)
        if(hMainWnd){
            MessageBox(NULL, L"не создается главное окно", L"ошибка", MB_OK);
            return 0;}

Попробуй так:

Код

if(!hMainWnd){
            MessageBox(NULL, L"не создается главное окно", L"ошибка", MB_OK);
            return 0;}


Если окно создалось успешно, то hMianWnd != 0.
PM MAIL   Вверх
pycha
Дата 31.7.2008, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


главный анастазиолог
*


Профиль
Группа: Участник
Сообщений: 239
Регистрация: 20.6.2008
Где: Украина

Репутация: нет
Всего: 13



да оно! Самое стыдное  што несколько раз сверял с книгой и не заметил.
--------------------
ищу хакера со знанием компьютера длятехкт
PM MAIL ICQ   Вверх
pycha
Дата 5.8.2008, 00:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


главный анастазиолог
*


Профиль
Группа: Участник
Сообщений: 239
Регистрация: 20.6.2008
Где: Украина

Репутация: нет
Всего: 13



Еще одно. Теперь попал на такую заковырку.
Вобщем вот ошибки.

g:\documents and settings\pycha.pycha-1366613\мои документы\visual studio 2008\projects\project2\textviver\textviver\kdocument.cpp(14) : error C2664: 'std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::get(_Elem *,std::streamsize)' : cannot convert parameter 1 from 'wchar_t [200]' to 'char *'
        with
        [
            _Elem=char,
            _Traits=std::char_traits<char>
        ]
        Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
g:\documents and settings\pycha.pycha-1366613\мои документы\visual studio 2008\projects\project2\textviver\textviver\kdocument.cpp(16) : error C2440: '<function-style-cast>' : cannot convert from 'wchar_t [200]' to 'std::string'
        No constructor could take the source type, or constructor overload resolution was ambiguous

g:\documents and settings\pycha.pycha-1366613\мои документы\visual studio 2008\projects\project2\textviver\textviver\kdocument.cpp(110) : error C2664: 'TextOutW' : cannot convert parameter 4 from 'const char *' to 'LPCWSTR'
        Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
g:\documents and settings\pycha.pycha-1366613\мои документы\visual studio 2008\projects\project2\textviver\textviver\kdocument.cpp(112) : error C2664: 'TabbedTextOutW' : cannot convert parameter 4 from 'const char *' to 'LPCWSTR'
        Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast


как нужно правильно передавать unicode wchar_t символы апи функциям вместо обычного char


Это сообщение отредактировал(а) pycha - 5.8.2008, 00:09
--------------------
ищу хакера со знанием компьютера длятехкт
PM MAIL ICQ   Вверх
Dem_max
Дата 5.8.2008, 04:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1780
Регистрация: 12.4.2007

Репутация: 16
Всего: 39



Цитата

как нужно правильно передавать unicode wchar_t символы апи функциям вместо обычного char

Так и передавай в 
1. TextOutW(...., _T("Привет"),...);
2. TextOut(...., _T("Привет"),...);
3. TextOutW(...., L"Привет",...);
4. TextOut(...., L"Привет",...);

Цитата

cannot convert from 'wchar_t [200]' to 'std::string'

стринг строка должна быть как char, поэтому компилятор и ругается что не может преобразовать wchar_t в char, задавай явно в char



--------------------
Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte")
PM MAIL   Вверх
pycha
Дата 5.8.2008, 22:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


главный анастазиолог
*


Профиль
Группа: Участник
Сообщений: 239
Регистрация: 20.6.2008
Где: Украина

Репутация: нет
Всего: 13



cannot convert from 'wchar_t [200]' to 'std::string'

-нащет этого понятно,  но как быть с TextOut если 4 параметр у него lines[i].c_str() это (как я понял это в стандартной библиотеке) не изменять же ее.
TextOut(hdc,x,y,lines[i].c_str(), lines[i].size());

--------------------
ищу хакера со знанием компьютера длятехкт
PM MAIL ICQ   Вверх
pycha
Дата 7.8.2008, 11:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


главный анастазиолог
*


Профиль
Группа: Участник
Сообщений: 239
Регистрация: 20.6.2008
Где: Украина

Репутация: нет
Всего: 13



поднимаю тему. Что так никто и не подскажет?
--------------------
ищу хакера со знанием компьютера длятехкт
PM MAIL ICQ   Вверх
Страницы: (4) Все 1 [2] 3 4 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.1108 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.