Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 11 kết quả

Đề tài: Cách sử dụng một số Control trong Visual C++?

  1. #1
    Ngày gia nhập
    01 2007
    Nơi ở
    Hải Phòng
    Bài viết
    210

    Mặc định Cách sử dụng một số Control trong Visual C++?

    Tui mới học, mà sách nó chẳng nói kĩ, thành ra một số Control vẫn chưa biết sử dụng. Mong các bạn giúp đỡ.
    Lần này xin hỏi về Slider. Tui có tạo một slider ( bằng resource ). Nhưng ko biết cách thiết lập các giá trị cho nó.
    Tớ định áp dụng cách của scroll bar cho nó :
    SetScrollRange() & SetScrollPos(). Nhưng ko được. Kiểm tra lại thì thấy cái SetScrollRange() nó trả lại TRUE, nhưng SetScrollPos() nó trả lại FALSE. Có thể là 2 cái hàm đó ko dùng cho slider. Hoặc có thể là dùng cho slider nhưng đã ko dùng đúng cách.
    Mong các bạn chỉ dạy cách xài Slider với.

  2. #2
    Ngày gia nhập
    10 2006
    Nơi ở
    Rừng Amazon
    Bài viết
    101

    Cậu tìm xem tại sao hàm SetScrollPos lại trả lại FALSE?

  3. #3
    Ngày gia nhập
    07 2006
    Bài viết
    166

    SetScrollRange(), SetScrollPos() là dùng cho ScrollBar chứ có phải SliderBar đâu nhỉ :-??

  4. #4
    Ngày gia nhập
    01 2007
    Nơi ở
    Hải Phòng
    Bài viết
    210

    Trích dẫn Nguyên bản được gửi bởi vinhie47
    SetScrollRange(), SetScrollPos() là dùng cho ScrollBar chứ có phải SliderBar đâu nhỉ :-??
    Ờ ! Nhưng tớ tìm kiếm sách, chẳng thấy sách nào nói về slider. Tìm MSDN nó cũng chẳng nói là có control nào là slider. Nhưng mà trong phần thiết kế Dialog lại có. Thấy cái này giống scrollbar nên thử áp dụng biết đâu lại thành công. Nhưng bị thất bại.
    Các bạn đã ai làm việc với cái slider chết dấm này chưa ? Hic hic ! Giúp mình với !

  5. #5
    Ngày gia nhập
    07 2006
    Bài viết
    166

    Làm gì có chuyện không có trong MSDN :-??
    Đây là link trong MSDN2005, vào web chậm quá nên dùng MSDN trên máy thôi :P ms-help://MS.MSDNQTR.v80.en/MS.MSDN.v80/MS.VisualStudio.v80.en/dv_vclib/html/dd12b084-4eda-4550-a810-8f3cfb06b871.htm

    À, mà nếu tìm thì bạn tìm với từ khoá CSliderCtrl hoặc với các hàm SetRange
    SetLineSize SetPageSize,... cũng được.

  6. #6
    Ngày gia nhập
    01 2007
    Nơi ở
    Hải Phòng
    Bài viết
    210

    Mặc định Cách sử dụng một số Control trong Visual C++?

    ms-help://MS.MSDNQTR.v80.en/MS.MSDN.v80/MS.VisualStudio.v80.en/dv_vclib/html/dd12b084-4eda-4550-a810-8f3cfb06b871.htm
    ???
    Sao cái link này dị quá dậy ? Xài như nào dzậy ?
    À, mà nếu tìm thì bạn tìm với từ khoá CSliderCtrl hoặc với các hàm SetRange
    SetLineSize SetPageSize,... cũng được.
    Cái SetRange này là của MFC. Nhưng tớ ko làm bằng MFC. Mong bạn nghĩ dùm cách khác với ! Hic hic !

  7. #7
    Ngày gia nhập
    11 2006
    Bài viết
    75

    Code:
    //#define WIN32_API_CODE :-)
    #ifdef WIN32_API_CODE
    #define SLIDERBAR "TRACKBAR"
    #endif
    #ifdef WIN32_MFC_CODE
    #define SLIDERBAR "CSliderCtrl"
    #endif
    
    URL searchMSDN (LPCTSTR lpszInfo); //prototype only :-)
    
    int main()
    {
       URL url = searchMSDN (SLIDERBAR);
       cout << url << endl;
       return SUCCESS;
    }
    Have fun!
    Our dreams are young and we both know they take us where we want to go...

  8. #8
    Ngày gia nhập
    01 2007
    Nơi ở
    Hải Phòng
    Bài viết
    210

    Trích dẫn Nguyên bản được gửi bởi ilovecplusplus
    URL url = searchMSDN (SLIDERBAR);
    Trích dẫn Nguyên bản được gửi bởi hieubm
    Nhưng tớ tìm kiếm sách, chẳng thấy sách nào nói về slider. Tìm MSDN nó cũng chẳng nói là có control nào là slider
    Tìm trong MSDN, Programming Window thì nó ko nói tới cái child window control nào là slider cả. Tớ cũng đã tìm trên mạng MSDN và biết cái cái CSliderCtrl có mấy cái ::SetRange , ::SetPos . Tuy nhiên :

    Trích dẫn Nguyên bản được gửi bởi hieubm
    Cái SetRange này là của MFC. Nhưng tớ ko làm bằng MFC. Mong bạn nghĩ dùm cách khác với ! Hic hic !
    Vì vậy tớ cần một hàm theo kiểu "Windows User Interface : Platform SDK" , chứ ko phải "Microsoft Foundation Classes"

  9. #9
    Ngày gia nhập
    07 2006
    Bài viết
    166

    Paste luôn vào từ MSDN vậy


    Trackbar Controls

    --------------------------------------------------------------------------------

    A trackbar is a window that contains a slider and optional tick marks. When the user moves the slider, using either the mouse or the direction keys, the trackbar sends notification messages to indicate the change.

    About Trackbar Controls
    Using Trackbar Controls
    Trackbar Control Updates in Internet Explorer
    About Trackbar Controls
    Trackbars are useful when you want the user to select a discrete value or a set of consecutive values in a range. For example, you might use a trackbar to allow the user to set the repeat rate of the keyboard by moving the slider to a given tick mark. The following illustration shows a typical trackbar.



    The slider in a trackbar moves in increments that you specify when you create it. The values in this range are referred to as logical units. For example, if you specify that the trackbar should have logical units that range from zero to five, the slider can occupy only six positions: a position at the left side of the trackbar and one position for each increment in the range. Typically, each of these positions is identified by a tick mark.

    You create a trackbar by using the CreateWindowEx function, specifying the TRACKBAR_CLASS window class. After you have created a trackbar, you can use trackbar messages to set and retrieve many of its properties. Changes that you can make include setting the minimum and maximum positions for the slider, drawing tick marks, setting a selection range, and repositioning the slider.

    Trackbar Messages
    The logical units of a trackbar are the set of contiguous values that the trackbar can represent. They are usually defined by specifying the range of possible values with a TBM_SETRANGE message when the trackbar is first created. Applications can dynamically alter the range by using the TBM_SETRANGEMAX and TBM_SETRANGEMIN messages. An application that allows the range to be changed dynamically retrieves the final range settings when the user has finished working with the trackbar. To retrieve these settings, use the TBM_GETRANGEMAX and TBM_GETRANGEMIN messages.

    An application can send messages to the trackbar to retrieve information about the window and to change its characteristics. To retrieve the position of the slider (that is, the value the user has chosen), use the TBM_GETPOS message. To set the position of the slider, use the TBM_SETPOS message.

    A trackbar automatically displays tick marks at its beginning and end, unless you specify the TBS_NOTICKS style. You can use the TBS_AUTOTICKS style to automatically display additional tick marks at regular intervals along the trackbar. By default, a TBS_AUTOTICKS trackbar displays a tick mark at each increment of the trackbar's range. To specify a different interval for the automatic tick marks, send the TBM_SETTICFREQ message to the trackbar. For example, you could use this message to display only 10 tick marks in a range of 1 through 100.

    To set the position of a single tick mark, send the TBM_SETTIC message. A trackbar maintains an array of DWORD values that stores the position of each tick mark. The array does not include the first and last tick marks that the trackbar creates automatically. You can specify an index in this array when you send the TBM_GETTIC message to retrieve the position of the corresponding tick mark. Alternatively, you can send the TBM_GETPTICS message to retrieve a pointer to the array. The number of elements in the array is equal to two less than the tick count returned by the TBM_GETNUMTICS message. This is because the count returned by TBM_GETNUMTICS includes the first and last tick marks that are not included in the array. To retrieve the physical position of a tick mark, in client coordinates of the trackbar's window, send the TBM_GETTICPOS message. The TBM_CLEARTICS message removes all but the first and last of a trackbar's tick marks.

    A trackbar's line size determines how far the slider moves in response to keyboard input from the arrow keys, such as the RIGHT ARROW or DOWN ARROW key. To retrieve or set the line size, send the TBM_GETLINESIZE and TBM_SETLINESIZE messages. The trackbar also sends the TB_LINEUP and TB_LINEDOWN notification messages to its parent window when the user presses the arrow keys.

    A trackbar's page size determines how far the slider moves in response to keyboard input, such as the PAGE UP or PAGE DOWN key, or mouse input, such as clicks in the trackbar channel. To retrieve or set the page size, send the TBM_GETPAGESIZE and TBM_SETPAGESIZE messages. The trackbar also sends the TB_PAGEUP and TB_PAGEDOWN notification messages to its parent window when it receives keyboard or mouse input that scrolls the page. For more information, see Trackbar Notification Messages.

    An application can send messages to retrieve the dimensions of a trackbar. The TBM_GETTHUMBRECT message retrieves the bounding rectangle for the slider. The TBM_GETTHUMBLENGTH message retrieves the length of the slider. The TBM_GETCHANNELRECT message retrieves the bounding rectangle for the trackbar's channel, which is the area over which the slider moves. It contains the highlight when a range is selected. If a trackbar has the TBS_FIXEDLENGTH style, you can send the TBM_SETTHUMBLENGTH message to change the length of the slider.

    If you create a trackbar with the TBS_ENABLESELRANGE style, you can specify a "selection range," which restricts the user to a specified portion of the total range. The logical units do not change, but only a subset of them are available for use. The trackbar highlights the available range and displays triangular tick marks at the start and end. Typically, an application handles the trackbar's notification messages and sets the trackbar's selection range according to the user's input.

    You retrieve or set the selection range by sending messages to the trackbar. Use the TBM_SETSEL message to set the starting and ending positions of a selection. To set just the starting position or just the ending position of a selection, send a TBM_SETSELSTART or TBM_SETSELEND message. To retrieve the starting or ending positions of a selection range, send a TBM_GETSELSTART or TBM_GETSELEND message. To clear a selection range and restore the trackbar to its original range, send the TBM_CLEARSEL message.

    Trackbar Notification Messages
    A trackbar notifies its parent window of user actions by sending the parent a WM_HSCROLL or WM_VSCROLL message. A trackbar with the TBS_HORZ style sends WM_HSCROLL messages. A trackbar with the TBS_VERT style sends WM_VSCROLL messages. The low-order word of the wParam parameter of WM_HSCROLL or WM_VSCROLL contains the notification code. For the TB_THUMBPOSITION and TB_THUMBTRACK notifications, the high-order word of the wParam parameter specifies the position of the slider. For all other notifications, the high-order word is zero; send the TBM_GETPOS message to determine the slider position. The lParam parameter is the handle to the trackbar.

    The system sends the TB_BOTTOM, TB_LINEDOWN, TB_LINEUP, and TB_TOP notification messages only when the user interacts with a trackbar by using the keyboard. The TB_THUMBPOSITION and TB_THUMBTRACK notification messages are only sent when the user is using the mouse. The TB_ENDTRACK, TB_PAGEDOWN, and TB_PAGEUP notification messages are sent in both cases. The following table lists the trackbar notification messages and the events (virtual key codes or mouse events) that cause the notifications to be sent.

    Notification message Reason sent
    TB_BOTTOM VK_END
    TB_ENDTRACK WM_KEYUP(the user released a key that sent a relevant virtual key code)
    TB_LINEDOWN VK_RIGHT or VK_DOWN
    TB_LINEUP VK_LEFT or VK_UP
    TB_PAGEDOWN VK_NEXT (the user clicked the channel below or to the right of the slider)
    TB_PAGEUP VK_PRIOR (the user clicked the channel above or to the left of the slider)
    TB_THUMBPOSITION WM_LBUTTONUP following a TB_THUMBTRACK notification message
    TB_THUMBTRACK Slider movement (the user dragged the slider)
    TB_TOP VK_HOME

    Default Trackbar Message Processing
    This section describes the window message processing performed by a trackbar.

    Message Processing performed
    WM_CAPTURECHANGED Kills the timer if one was set during WM_LBUTTONDOWN processing and sends the TB_THUMBPOSITION notification message, if necessary. It always sends the TB_ENDTRACK notification message.
    WM_CREATE Performs additional initialization, such as setting the line size, page size, and tick mark frequency to default values.
    WM_DESTROY Frees resources.
    WM_ENABLE Repaints the trackbar window.
    WM_ERASEBKGND Erases the window background, using the current background color for the trackbar.
    WM_GETDLGCODE Returns the DLGC_WANTARROWS value.
    WM_KEYDOWN Processes the direction keys and sends the TB_TOP, TB_BOTTOM, TB_PAGEUP, TB_PAGEDOWN, TB_LINEUP, and TB_LINEDOWN notification messages, as appropriate.
    WM_KEYUP Sends the TB_ENDTRACK notification message if the key was one of the direction keys.
    WM_KILLFOCUS Repaints the trackbar window.
    WM_LBUTTONDOWN Sets the focus and the mouse capture to the trackbar. When necessary, it sets a timer that determines how quickly the slider moves toward the mouse cursor when the user holds down the mouse button in the window.
    WM_LBUTTONUP Releases the mouse capture and kills the timer if one was set during WM_LBUTTONDOWN processing. It sends the TB_THUMBPOSITION notification message, if necessary. It always sends the TB_ENDTRACK notification message.
    WM_MOUSEMOVE Moves the slider and sends the TB_THUMBTRACK notification message when tracking the mouse (see WM_TIMER).
    WM_PAINT Paints the trackbar. If the wParam parameter is non-NULL, the control assumes that the value is an HDC and paints using that device context.
    WM_SETFOCUS Repaints the trackbar window.
    WM_SIZE Sets the dimensions of the trackbar, removing the slider if there is not enough room to display it.
    WM_TIMER Retrieves the mouse position and updates the position of the slider. (It is received only when the user is dragging the slider.)
    WM_WININICHANGE Initializes slider dimensions.

    Using Trackbar Controls
    This section provides examples that demonstrate how to create a trackbar and process trackbar notification messages.

    Creating a Trackbar
    The following example shows how to create a trackbar with the TBS_AUTOTICKS and TBS_ENABLESELRANGE styles. When the trackbar is created, both its range and its selection range are initialized. The page size is also set at this time.

    Show Example

    // CreateTrackbar - creates and initializes a trackbar.
    //
    // Global variable
    // g_hinst - instance handle
    HWND WINAPI CreateTrackbar(
    HWND hwndDlg, // handle of dialog box (parent window)
    UINT iMin, // minimum value in trackbar range
    UINT iMax, // maximum value in trackbar range
    UINT iSelMin, // minimum value in trackbar selection
    UINT iSelMax) // maximum value in trackbar selection
    {

    InitCommonControls(); // loads common control's DLL

    hwndTrack = CreateWindowEx(
    0, // no extended styles
    TRACKBAR_CLASS, // class name
    "Trackbar Control", // title (caption)
    WS_CHILD | WS_VISIBLE |
    TBS_AUTOTICKS | TBS_ENABLESELRANGE, // style
    10, 10, // position
    200, 30, // size
    hwndDlg, // parent window
    ID_TRACKBAR, // control identifier
    g_hinst, // instance
    NULL // no WM_CREATE parameter
    );

    SendMessage(hwndTrack, TBM_SETRANGE,
    (WPARAM) TRUE, // redraw flag
    (LPARAM) MAKELONG(iMin, iMax)); // min. & max. positions
    SendMessage(hwndTrack, TBM_SETPAGESIZE,
    0, (LPARAM) 4); // new page size

    SendMessage(hwndTrack, TBM_SETSEL,
    (WPARAM) FALSE, // redraw flag
    (LPARAM) MAKELONG(iSelMin, iSelMax);
    SendMessage(hwndTrack, TBM_SETPOS,
    (WPARAM) TRUE, // redraw flag
    (LPARAM) iSelMin);

    SetFocus(hwndTrack);

    return hwndTrack;
    }
    Processing Trackbar Notification Messages
    The following example is a function that is called whenever a WM_HSCROLL message is received by the dialog box containing the trackbar. The trackbar has the TBS_ENABLESELRANGE style. The position of the slider is compared against the selection range, and the slider is moved to the starting or ending position of the selection range, when necessary.

    A dialog containing a trackbar with the TBS_VERT style could use this function when it receives a WM_VSCROLL message.

    Show Example

    // TBNotifications - handles trackbar notifications received
    // in the wParam parameter of WM_HSCROLL. This function simply
    // ensures that the slider remains within the selection range.

    VOID WINAPI TBNotifications(
    WPARAM wParam, // wParam of WM_HSCROLL message
    HWND hwndTrack, // handle of trackbar window
    UINT iSelMin, // minimum value of trackbar selection
    UINT iSelMax) // maximum value of trackbar selection
    {
    DWORD dwPos; // current position of slider

    switch (LOWORD(wParam)) {
    case TB_ENDTRACK:
    dwPos = SendMessage(hwndTrack, TBM_GETPOS, 0, 0);
    if (dwPos > iSelMax)
    SendMessage(hwndTrack, TBM_SETPOS,
    (WPARAM) TRUE, // redraw flag
    (LPARAM) iSelMax);
    else if (dwPos < iSelMin)
    SendMessage(hwndTrack, TBM_SETPOS,
    (WPARAM) TRUE, // redraw flag
    (LPARAM) iSelMin);
    break;

    default:
    break;

    }
    }
    Trackbar Control Updates in Internet Explorer
    Trackbar controls in Microsoft Internet Explorer support the following new features.

    Buddy Windows Trackbar controls now provide support for up to two buddy windows. Trackbar buddy windows are automatically positioned by the control to appear centered at the ends of the trackbar control. To assign an existing window to a trackbar, use the TBM_SETBUDDY message. To retrieve the handle to a given buddy window, send the TBM_GETBUDDY message.
    ToolTips Trackbar controls now support ToolTips. A trackbar creates a default ToolTip control when created with the TBS_TOOLTIPS style. However, you can assign a new ToolTip control to a trackbar by sending the TBM_SETTOOLTIPS message. To retrieve the handle to an assigned ToolTip control, use the TBM_GETTOOLTIPS message.


    --------------------------------------------------------------------------------

    © 2005 Microsoft Corporation. All rights reserved.
    nguồn: _http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/trackbar/trackbar.asp

    Còn cái link đấy thì nếu bạn có cài MSDN thì paste vào trình duyệt nó sẽ ra (tại lúc đó mạng chậm quá nên ngại không muốn vào MSDN online để tìm link )
    Đã được chỉnh sửa lần cuối bởi vinhie47 : 21-01-2007 lúc 06:12 PM.

  10. #10
    Ngày gia nhập
    01 2007
    Nơi ở
    Hải Phòng
    Bài viết
    210

    Special Thanks bạn nhiều nhiều lắm. Hóa ra sliderbar là trackbar ( hình như track bar khác ở chỗ có thêm mấy cái gạch ở dưới ). Cảm ơn bạn nhiều nha. Tuy nhiên, tớ ko dùng cái CreateWindowEx chán phẻo ấy đâu. Tớ vân dùng cái Slider thiết kế trong dialog. Đáng mừng ở chỗ, các message TBM_SETRANGE, TBM_SETPOS,... dùng được cho slider tuốt luốt. Microsoft làm ăn kiểu này, khiến mình tốn bao nhiêu công lực đi tìm về cái slider, thì đến tết Ma-rốc cũng ko ra.

    Bổ sung 1 ý cho bài trích của bạn nhé :
    #include <commctrl.h>
    Ko có nó là ko chạy được đâu nghen !
    Special Thanks !!!

Các đề tài tương tự

  1. Một số Control trong Visual Studio bị mờ đi khi cài DevExpress 11
    Gửi bởi sieunhanaotim_py trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 0
    Bài viết cuối: 26-10-2012, 09:56 PM
  2. tại sao không có hộp control trên Visual C++ 6?
    Gửi bởi zzxxxxxzzzzzxx trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 2
    Bài viết cuối: 02-04-2012, 07:44 PM
  3. ADO.NET Tạo ra control mới không có trong MS Visual 2010 như thế nào ?
    Gửi bởi huuphat trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 2
    Bài viết cuối: 10-05-2011, 06:29 PM
  4. Lỗi tạo List Control trong Project Visual 2008
    Gửi bởi yennamthien24 trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 2
    Bài viết cuối: 16-11-2010, 06:30 PM
  5. Xử lý Edit Control trong Visual C++??
    Gửi bởi classic trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 4
    Bài viết cuối: 31-05-2009, 10:56 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn