[ 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. cupper

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

    Joined:
    6 Jun 2007
    Messages:
    369
    Likes Received:
    92
    Reputations:
    5
    да этото я помню, она указательно возвращает, путем нехитрых манипуляция получить номер можно, а чтобы без этих нехитрых манипуляций... я так понял что нету таких
     
  2. _nic

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

    Joined:
    5 May 2006
    Messages:
    651
    Likes Received:
    54
    Reputations:
    3
    RegisterHotKey неподходит :( Если в фокусе другое окно сообщение WM_HOTKEY неприходит Неужели нету способов кроме тех которыеиспользуются кейлоггерами?
     
    #3882 _nic, 7 Oct 2009
    Last edited: 7 Oct 2009
  3. Ra$cal

    Ra$cal Elder - Старейшина

    Joined:
    16 Aug 2006
    Messages:
    670
    Likes Received:
    185
    Reputations:
    78
    почему не приходит. у меня все работало как надо, со скрытым окном. Ты или чтото путаешь или неправильно зарегистрировал хоткей.
     
  4. _nic

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

    Joined:
    5 May 2006
    Messages:
    651
    Likes Received:
    54
    Reputations:
    3
    Ну если просто SW_HIDE то приходит,а если взять в фокус другое окной блокнот к примеру.То неприходит.
    Code:
    RegisterHotKey(hWnd,1,MOD_ALT,112);
    
     
  5. no_xxx

    no_xxx New Member

    Joined:
    27 Nov 2008
    Messages:
    4
    Likes Received:
    1
    Reputations:
    0
    MVisual C#2008
    вношу изменения в программу. а при отладке они не вступают в силу... то есть что бы я не менял в коде, она всегда запускается одинаково.

    создаю новое приложение все работает.

    в чем может быть проблема??
     
    1 person likes this.
  6. Hiro Protagonist

    Joined:
    26 Aug 2009
    Messages:
    132
    Likes Received:
    24
    Reputations:
    -2
    rebild делай. Под отладку запускается старый бинарник.
     
  7. cupper

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

    Joined:
    6 Jun 2007
    Messages:
    369
    Likes Received:
    92
    Reputations:
    5
    как реализовать такую штуку:
    есть файл, сначало читаем его построчно, считываем первую строку находим в ней нужный параметр, запоминаем его позоцию, находм второй параметр запоминаем позицию.
    Теперь нужно из этого же файла считать кусок начиная с первой позиции и заканчиваю второй.
     
  8. Ra$cal

    Ra$cal Elder - Старейшина

    Joined:
    16 Aug 2006
    Messages:
    670
    Likes Received:
    185
    Reputations:
    78
    fseek(...)
     
    1 person likes this.
  9. CaraL

    CaraL New Member

    Joined:
    3 Dec 2008
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    Приведие простой пример оконного приложения windows на c++
     
  10. POS_troi

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

    Joined:
    1 Dec 2006
    Messages:
    1,569
    Likes Received:
    466
    Reputations:
    108
    Code:
     
    
    
    
    #include <windows.h>
    #include <string.h>
    #include <iostream>
    
    /*
     * This is the window function for the main window. Whenever a message is
     * dispatched using DispatchMessage (or sent with SendMessage) this function
     * gets called with the contents of the message.
     */
    LRESULT CALLBACK
    MainWndProc (HWND hwnd, UINT nMsg, WPARAM wParam, LPARAM lParam)
    {
    /* The window handle for the "Click Me" button. */
    static HWND hwndButton = 0;
    static int cx, cy;/* Height and width of our button. */
    
    HDC hdc;/* A device context used for drawing */
    PAINTSTRUCT ps;/* Also used during window drawing */
    RECT rc;/* A rectangle used during drawing */
    /*
     * Perform processing based on what kind of message we got.
     */
    switch (nMsg)
    {
    case WM_CREATE:
    {
    /* The window is being created. Create our button
     * window now. */
    TEXTMETRIC tm;
    
    /* First we use the system fixed font size to choose
     * a nice button size. */
    hdc = GetDC (hwnd);
    SelectObject (hdc, GetStockObject (SYSTEM_FIXED_FONT));
    GetTextMetrics (hdc, &tm);
    cx = tm.tmAveCharWidth * 30;
    cy = (tm.tmHeight + tm.tmExternalLeading) * 2;
    ReleaseDC (hwnd, hdc);
    
    /* Now create the button */
    hwndButton = CreateWindow (
    "button",/* Builtin button class */
    "Click Here",
    WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
    0, 0, cx, cy,
    hwnd,/* Parent is this window. */
    (HMENU) 1,/* Control ID: 1 */
    ((LPCREATESTRUCT) lParam)->hInstance,
    NULL
    );
    
    return 0;
    break;
    }
    
    case WM_DESTROY:
    /* The window is being destroyed, close the application
     * (the child button gets destroyed automatically). */
    PostQuitMessage (0);
    return 0;
    break;
    
    case WM_PAINT:
    /* The window needs to be painted (redrawn). */
    hdc = BeginPaint (hwnd, &ps);
    GetClientRect (hwnd, &rc);
    
    /* Draw "Hello, World" in the middle of the upper
     * half of the window. */
    rc.bottom = rc.bottom / 2;
    DrawText (hdc, "Hello, World!", -1, &rc,
    DT_SINGLELINE | DT_CENTER | DT_VCENTER);
    
    EndPaint (hwnd, &ps);
    return 0;
    break;
    
    case WM_SIZE:
    /* The window size is changing. If the button exists
     * then place it in the center of the bottom half of
     * the window. */
    if (hwndButton &&
    (wParam == SIZEFULLSCREEN ||
     wParam == SIZENORMAL)
       )
    {
    rc.left = (LOWORD(lParam) - cx) / 2;
    rc.top = HIWORD(lParam) * 3 / 4 - cy / 2;
    MoveWindow (
    hwndButton,
    rc.left, rc.top, cx, cy, TRUE);
    }
    break;
    
    case WM_COMMAND:
    /* Check the control ID, notification code and
     * control handle to see if this is a button click
     * message from our child button. */
    if (LOWORD(wParam) == 1 &&
        HIWORD(wParam) == BN_CLICKED &&
        (HWND) lParam == hwndButton)
    {
    /* Our button was clicked. Close the window. */
    DestroyWindow (hwnd);
    }
    return 0;
    break;
    }
    
    /* If we don't handle a message completely we hand it to the system
     * provided default window function. */
    return DefWindowProc (hwnd, nMsg, wParam, lParam);
    }
    
    
    int STDCALL
    WinMain (HINSTANCE hInst, HINSTANCE hPrev, LPSTR lpCmd, int nShow)
    {
    HWND hwndMain;/* Handle for the main window. */
    MSG msg;/* A Win32 message structure. */
    WNDCLASSEX wndclass;/* A window class structure. */
    char*szMainWndClass = "WinTestWin";
    /* The name of the main window class */
    
    /*
     * First we create a window class for our main window.
     */
    
    /* Initialize the entire structure to zero. */
    memset (&wndclass, 0, sizeof(WNDCLASSEX));
    
    /* This class is called WinTestWin */
    wndclass.lpszClassName = szMainWndClass;
    
    /* cbSize gives the size of the structure for extensibility. */
    wndclass.cbSize = sizeof(WNDCLASSEX);
    
    /* All windows of this class redraw when resized. */
    wndclass.style = CS_HREDRAW | CS_VREDRAW;
    
    /* All windows of this class use the MainWndProc window function. */
    wndclass.lpfnWndProc = MainWndProc;
    
    /* This class is used with the current program instance. */
    wndclass.hInstance = hInst;
    
    /* Use standard application icon and arrow cursor provided by the OS */
    wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION);
    wndclass.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
    wndclass.hCursor = LoadCursor (NULL, IDC_ARROW);
    
    /* Color the background white */
    wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH);
    
    /*
     * Now register the window class for use.
     */
    RegisterClassEx (&wndclass);
    
    /*
     * Create our main window using that window class.
     */
    hwndMain = CreateWindow (
    szMainWndClass,/* Class name */
    "Hello",/* Caption */
    WS_OVERLAPPEDWINDOW,/* Style */
    CW_USEDEFAULT,/* Initial x (use default) */
    CW_USEDEFAULT,/* Initial y (use default) */
    CW_USEDEFAULT,/* Initial x size (use default) */
    CW_USEDEFAULT,/* Initial y size (use default) */
    NULL,/* No parent window */
    NULL,/* No menu */
    hInst,/* This program instance */
    NULL/* Creation parameters */
    );
    
    /*
     * Display the window which we just created (using the nShow
     * passed by the OS, which allows for start minimized and that
     * sort of thing).
     */
    ShowWindow (hwndMain, nShow);
    UpdateWindow (hwndMain);
    
    /*
     * The main message loop. All messages being sent to the windows
     * of the application (or at least the primary thread) are retrieved
     * by the GetMessage call, then translated (mainly for keyboard
     * messages) and dispatched to the appropriate window procedure.
     * This is the simplest kind of message loop. More complex loops
     * are required for idle processing or handling modeless dialog
     * boxes. When one of the windows calls PostQuitMessage GetMessage
     * will return zero and the wParam of the message will be filled
     * with the argument to PostQuitMessage. The loop will end and
     * the application will close.
             */
    while (GetMessage (&msg, NULL, 0, 0))
    {
    TranslateMessage (&msg);
    DispatchMessage (&msg);
    }
    return msg.wParam;
    }
    
    
    
    
    а вообще

    http://msdn.microsoft.com/ru-ru/library/bb384843.aspx
     
    1 person likes this.
  11. cupper

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

    Joined:
    6 Jun 2007
    Messages:
    369
    Likes Received:
    92
    Reputations:
    5
    некодь так, это чистый WinAPI, несмотря что я сам обеими руками за него, но это уже пережитки прошлого.
     
  12. POS_troi

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

    Joined:
    1 Dec 2006
    Messages:
    1,569
    Likes Received:
    466
    Reputations:
    108
    зато как красиво ;)
     
  13. -m0rgan-

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

    Joined:
    29 Sep 2008
    Messages:
    514
    Likes Received:
    170
    Reputations:
    17
    Привет.
    Разбирался с апи..написал вот такую фигню:

    #include <windows.h>
    int main(int argc, char* argv[])
    {
    char * b = "a";
    for(int a = 0; a < 10; b++)
    {
    MessageBox(NULL,b, "ss", MB_OK);
    }
    }

    Запустил, но бля не могу понять что оно делает о.О
    Выводит какие то куски кода о___О
     
  14. scrat

    scrat кодер

    Joined:
    8 Apr 2007
    Messages:
    625
    Likes Received:
    541
    Reputations:
    3
    у тебя бред в цикле написан, b++ - ты, наверное, хотел a++
     
    3 people like this.
  15. -m0rgan-

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

    Joined:
    29 Sep 2008
    Messages:
    514
    Likes Received:
    170
    Reputations:
    17
    Да я понял что бред, меня интересует, что за куски кода выводятся в мессагебоксе?
     
  16. POS_troi

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

    Joined:
    1 Dec 2006
    Messages:
    1,569
    Likes Received:
    466
    Reputations:
    108
    А если к тебе начать прибавлять не девушку а ежика? тоже начнешь черти что пороть ;)
     
  17. rudvil

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

    Joined:
    25 Aug 2008
    Messages:
    200
    Likes Received:
    29
    Reputations:
    0
    А чего ты там ждал увидеть?
    Длина "b" составляет 2 символа, а ты в бесконечном цикле переходишь на след. символ и выводишь все что за пределами этого чара, т.е. хз что...
     
    1 person likes this.
  18. -m0rgan-

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

    Joined:
    29 Sep 2008
    Messages:
    514
    Likes Received:
    170
    Reputations:
    17
    угу, понял спс.
    А можно пример использования ф-и sprintf() ?

    Нужно перегнать инт в чар, то есть число в строку.

    ...
    int a = &text;

    Переменную а необходимо загнать в буффер (тип чар), чтобы потом вывести в мессагебоксе.
    Зарание спс.
     
  19. razb

    razb Active Member

    Joined:
    24 Mar 2009
    Messages:
    658
    Likes Received:
    133
    Reputations:
    18
    http://www.cplusplus.com/reference/clibrary/cstdio/sprintf/
     
    1 person likes this.
  20. POS_troi

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

    Joined:
    1 Dec 2006
    Messages:
    1,569
    Likes Received:
    466
    Reputations:
    108
    Buffer Overload =)
     
    1 person likes this.
Thread Status:
Not open for further replies.