02.02.2006
Odi$$ey
Здравствуйте, Игорь Вартанов, Александр Шаргин, Вы писали:

ИВА>Статья:

ИВА>Как добавить всплывающие подсказки для элементов управления диалога?

до кучи к WinAPI и MFC — как то же самое делается в WTL:

  • добавляем в данные диалога CToolTipCtrl (atlctrls.h):

    class CMainDlg : public CAxDialogImpl<CMainDlg>,
       public CWinDataExchange<CMainDlg>
    {
      ...
    private:
       CToolTipCtrl tooltip_;
       CEdit edit1;
       CButton CancelBtn_;
       CButton OkBtn_;
    };

  • в OnInitDialog() вставляем инициализацию tooltip_:

    [ccode]
    LRESULT CMainDlg::OnInitDialog( UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/ )
    {
    ...

    // создание тултипа
    tooltip_.Create( m_hWnd, rcDefault, NULL, WS_POPUP | TTS_NOPREFIX | TTS_ALWAYSTIP, WS_EX_TOPMOST );
    ATLASSERT( tooltip_.IsWindow() );

    //Связываем контролы с тултипами
    ATLVERIFY( tooltip_.AddTool( &CToolInfo( TTF_SUBCLASS,
  • 30.12.2005
    Odi$$ey
    Глава из книги "Beyond the C++ Standard Library: An Introduction to Boost".
    Рассматриваются все типовые случаи применения bind — связывание свободных функций, функций-членов класов, переменных-членов, виртуальных функций, а также функциональная композиция. На простом примере поясняется идея, лежащая в основе реализации bind.
    05.06.2005
    Odi$$ey
    Здравствуйте, <Аноним>, Вы писали:

    А>Как изменить сабж у PropertySheet?


    [ccode]
    class CCfgSheet: public CPropertySheetImpl<CCfgSheet>
    {

    public:
    typedef CPropertySheetImpl<CCfgSheet> sheetBase; // 3
    CCfgSheet();
    ~CCfgSheet();

    BEGIN_MSG_MAP( CCfgSheet )
    CHAIN_MSG_MAP( sheetBase )
    MESSAGE_HANDLER( WM_SHOWWINDOW, OnShowWindow )
    END_MSG_MAP()

    // Since WTL's CPropertySheet does not receive a WM_INITDIALOG message,
    // this needs to be called to handle the remaining initialization tasks
    LRESULT OnShowWindow( UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& bHandled );

    protected:
    ...
    };

    // Since WTL's CPropertySheet does not receive a WM_INITDIALOG message,
    // this needs to be called to handle the remaining initialization tasks
    LRESULT CCfgSheet::OnShowWindow( UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& bHandled )
    {
    SetIcons();
    SetRussianBtn();
    01.05.2005
    Odi$$ey
    Здравствуйте, <Аноним>, Вы писали:

    А>На диалоги есть несколько групп radio button, как указать к какой группе какая относится?


    Надо расставить их по-порядку в Tab Order (Ctrl-D при редактировании ресурса диалога). Назначаешь самому первому свойство Group = True, дальше в порядке Tab Order идет его группа, пока не встретится снова radio button с Group = True, с него начнется новая группа, ну и т.д.
    24.04.2005
    Odi$$ey
    Здравствуйте, LordWin, Вы писали:

    LW>Как имея Dll которая была написана для експорта в Visual Basic (стянул у автора а обратного адреса для мыла у него нету) перенести в Visual C++ 7 .NET ????

    LW>Visual C++ 7 .NET говорит что .lib файл неподходит или же битый ....

    1. берем проект, в котором надо использовать твою mdmxsvr.dll, подключаем h и lib, какие есть:

    #include "mdmxsvr.h"
    #pragma comment(lib, "mdmxsvr")

    ага, lib-а не нравится:

    mdmxsvr.lib : warning LNK4003: invalid library format; library ignored

    2. Создаем свою (IMPDEF.exe из комплекта Borland C++ Builder):

    impdef.exe mdmxsvr.def mdmxsvr.dll

    получился mdmxsvr.def:

    [ccode]
    LIBRARY MDMXSVR.DLL

    EXPORTS
    MDMX_Close @4 ; MDMX_Close
    MDMX_GetDMXTransmissions @3 ; MDMX_GetDMXTransmissions
    MDMX_OpenSerialDevice @1 ; MDMX_OpenSerialDevice
    28.12.2004
    Odi$$ey
    — Как прикрутить к моей программе преобразование из текста в голос?
    — А как получить список установленных голосов?
    — А если нужно не проговаривать, а создавать из текста аудиофайл?
    21.09.2004
    Odi$$ey
    OE>>Как в ATL клиенте подписываться на события надо объяснять?
    E>ДА!

    Ok, например в клиенте есть диалог, в котором нужно ловить события от COM-сервера:

    class CMainDlg : public CAxDialogImpl<CMainDlg>
                   , public CDialogResize<CMainDlg>
    {


    добавляем туда следующие вещи (см. выделенное):

    [ccode]
    #import "MyCOM.dll" no_namespace, named_guids

    // произвольное число, удобно когда подключение идет к событиям сразу нескольких компонент
    #define IMYINTRFID 1

    class CMainDlg : public CAxDialogImpl<CMainDlg>
    , public CDialogResize<CMainDlg>
    , public IDispEventImpl<IMYINTRFID, CMainDlg, &DIID___IMyIntrfEvent, &LIBID_MYCOMLib, 1, 0>
    {

    IMyIntrfPtr pMyIntrfPtr;

    // номер метода-события (0x1) смотрим в idl сервера или в
    // mycom.tli, который создаст #import
    BEGIN_SINK_MAP( CMainDlg )
    SINK_ENTRY_EX( IMYINTRFID, DIID___IMyIntrfEvent, 0x1, OnFirstMethod )
    END_SINK_MAP()
    03.06.2004
    Odi$$ey
    Здравствуйте, Carc, Вы писали:

    C>Как получить текст горячей клавиши?

    C>Т.е. я юзую какую нить к примеру Ctrl+A у себя в приложении, причем есессно клавиша может меняться пользователем, как мне получить текст который отображать в меню (типа какой нить "Ctrl+A"), пробовал тот же GetKeyName но что я не смог разобраться.... хелп

    посмотреть исходники MFC-шного CHotKeyCtrl::GetHotKeyName():

    [ccode]
    CString GetKeyName( UINT vk, BOOL fExtended )
    {
    LONG lScan = MapVirtualKey( vk, 0 ) << 16;

    // if it's an extended key, add the extended flag
    if ( fExtended )
    lScan |= 0x01000000L;

    TCHAR sz[ 100 ];

    ::GetKeyNameText( lScan, sz, 100 );

    sz[ 99 ] = 0;

    return CString( sz );
    }

    CString GetHotKeyName( DWORD hk )
    {
    static const TCHAR szPlus[] = _T( " + " );
    CString strKeyName;
    WORD wCode;
    WORD wModifiers;

    wCode = LOBYTE( LOWORD( hk ) );
    wModifiers = HIBYTE( LOWORD( hk ) );

    if ( wCode != 0 || wModifiers != 0 )
    {
    07.07.2004
    Odi$$ey
    Есть окно с Edit, нужно программно переключить язык ввода.
    19.03.2002
    Odi$$ey
    Можно ли заменить стандартный хелп, который подключается при создании проекта в AppWizard-е на HTML хелп, так чтобы он работал как обычный хелп, и если можно то как.
    <  1  2  3  > rss