[ C / C++ ] — начинающим: задаем вопросы (архивная - 2015)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by _Great_, 26 May 2007.

Thread Status:
Not open for further replies.
  1. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    Создать новый массив на 5 элементов, скопировать содержимое старого в новый, удалить старый.
    Не издеваться над собой и использовать vector.
     
    _________________________
  2. wanttoask

    wanttoask New Member

    Joined:
    30 Sep 2012
    Messages:
    81
    Likes Received:
    1
    Reputations:
    0
    Есть консольное приложение с вводом данных. Можно ли сделать, чтобы при вводе определенного символа(например &) появлялось окно(WinApi)?
     
  3. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    Можно, делайте. CreateWindow
     
    _________________________
  4. wanttoask

    wanttoask New Member

    Joined:
    30 Sep 2012
    Messages:
    81
    Likes Received:
    1
    Reputations:
    0
    Можно поподробнее?
     
  5. neviens

    neviens Member

    Joined:
    9 Oct 2013
    Messages:
    82
    Likes Received:
    28
    Reputations:
    3
    Code:
    // cl testwind.c rsrc.res 
    #include <windows.h>
    #include <stdlib.h>
    #include <stdio.h>
    
    ////////////////////////////////////////////////////////////////////////////////////////
    int __stdcall DialogFunc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
    {
        switch(msg)
        {
        case WM_DESTROY:
        case WM_CLOSE:
            EndDialog(hDlg, 0);
            return 1;
        case WM_COMMAND:
            //...
            return 1;
        case WM_INITDIALOG:
            //...
            return 1;
        }
        return 0;
    }
    
    ////////////////////////////////////////////////////////////////////////////////////////
    int main()
    {
    	char c;
    
    	for(;;)
    	{
    		scanf("%c", &c);
    		if('x' == c)
    			break;
    		if('&' == c)
    			DialogBox(GetModuleHandle(0), MAKEINTRESOURCE(101), NULL, (DLGPROC)DialogFunc);
    	}
    	return 0;
    }
    
     
  6. wanttoask

    wanttoask New Member

    Joined:
    30 Sep 2012
    Messages:
    81
    Likes Received:
    1
    Reputations:
    0
    Можно подробней про само создание окна?
     
  7. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    А можно гугл?
    http://www.winprog.org/tutorial/simple_window.html
     
    _________________________
  8. wanttoask

    wanttoask New Member

    Joined:
    30 Sep 2012
    Messages:
    81
    Likes Received:
    1
    Reputations:
    0
    спасибо
     
  9. wanttoask

    wanttoask New Member

    Joined:
    30 Sep 2012
    Messages:
    81
    Likes Received:
    1
    Reputations:
    0
    А разве нельзя сразу использовать CreatWindow() вместо dialogBox()?
     
  10. neviens

    neviens Member

    Joined:
    9 Oct 2013
    Messages:
    82
    Likes Received:
    28
    Reputations:
    3
    Можно.
    Я привык в простых случаях пользоватся DialogBox().
    В редакторе ресурсов создаю скрипт rsrc.rc, собираю с rc rsrc.rc, потом собираю прогу с cl proga.c rsrc.res
     
  11. wanttoask

    wanttoask New Member

    Joined:
    30 Sep 2012
    Messages:
    81
    Likes Received:
    1
    Reputations:
    0
    Можете привести пример с CreateWindow? Я не совсем понимаю, что значит WIndowProcess и как правильно вызывать создание окна.
     
  12. Ins3t

    Ins3t Харьковчанин

    Joined:
    18 Jul 2009
    Messages:
    939
    Likes Received:
    429
    Reputations:
    139
    что выводить хочешь? может тебе обычного MessageBox хватит. если нет то создавай класс окна, регистрируй его в системе, создавай окно, обрабатывай, обрабатывай события.

    RegisterClassEx
    CreateWindow
    ShowWindow

    пример - первая ссылка с гугла: http://www.winprog.org/tutorial/simple_window.html

    ну русском документации подробной навалом тоже.
     
  13. wanttoask

    wanttoask New Member

    Joined:
    30 Sep 2012
    Messages:
    81
    Likes Received:
    1
    Reputations:
    0
    Спасибо, все получилось. Хотел порисовать в чистом окошке
     
  14. marzipanno

    marzipanno New Member

    Joined:
    27 Sep 2013
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    Кто может просветить, какой будет результат нижеследующей
    однострочной фунции в C для this = 0

    double __thiscall sub_1(int this) {

    return * (double *) (this + 12);

    }

    и почему, загвоздка в этом дурацком
    наборе операндов

    * (double * )

    что это такое - вроде не дереференс,
    ведь поинтер то не объявлен

    я пробовал у себя под Win 7 - компилируется,
    но виснет на этапе выполнения
     
  15. neviens

    neviens Member

    Joined:
    9 Oct 2013
    Messages:
    82
    Likes Received:
    28
    Reputations:
    3
    Пользователским программам недоступно адресное пространство ниже 0x10000, значит никакой.
    Да и __thiscall вещь довольно специфическая в win программах.
     
  16. n0n@me

    n0n@me New Member

    Joined:
    19 Feb 2010
    Messages:
    4
    Likes Received:
    2
    Reputations:
    5
    у кого есть Visual Studio NET 2008 поделитесь в пм! за ранее спасибо :)
     
  17. Sifon110

    Sifon110 New Member

    Joined:
    13 Mar 2011
    Messages:
    34
    Likes Received:
    1
    Reputations:
    0
    Здравствуйте. Подскажите пожалуйста, какой функцией можно перемещать объект уже в запущенном окне. Например чтобы кнопочка бегала за курсором мыши при сообщении WM_MOUSEMOVE. Спасибо. WinAPI C++.
     
  18. neviens

    neviens Member

    Joined:
    9 Oct 2013
    Messages:
    82
    Likes Received:
    28
    Reputations:
    3
    Code:
    //...
    	case WM_MOUSEMOVE:		
    			SetWindowPos(hWnd, NULL, LOWORD(lParam), HIWORD(lParam), 0, 0, SWP_NOSIZE);
    			return 1;
    //...
    
     
  19. DeepBlue7

    DeepBlue7 Elder - Старейшина

    Joined:
    2 Jan 2009
    Messages:
    359
    Likes Received:
    50
    Reputations:
    12
    Подскажите, как сделать это по нормальному ? [c++]

    Code:
    unsigned short CPacketMgr::GetOpcode()
    {
    	BYTE b1 = m_bpData[m_PacketLen - 4];
    	BYTE b2 = m_bpData[m_PacketLen - 3];
    
    	unsigned short res = 0;
    
    	__asm
    	{
    		push ax;
    		mov ah, b1;
    		mov al, b2;
    		mov res, ax;
    		pop ax;
    	}
    
    	return res;
    }
    
    Т.е. из определённого диапазона байт в массиве байт вытянуть 2 байта и вывернуть его в ushort.
     
  20. neviens

    neviens Member

    Joined:
    9 Oct 2013
    Messages:
    82
    Likes Received:
    28
    Reputations:
    3
    unsigned short CPacketMgr::GetOpcode()
    {
    return (m_bpData[m_PacketLen - 4] << 8) | m_bpData[m_PacketLen - 3];
    }
     
Thread Status:
Not open for further replies.