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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> UPDOWN_CLASS, Не получаеться 
V
    Опции темы
Edik
Дата 14.9.2006, 18:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 207
Регистрация: 13.9.2006

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



не так слушай, Earnest, я создаю окно диалога самым первым- посмотри код. у меня INITDIALOG не работает. и ящо вапросик- как пользоваться SendMessage и UDM_GETPOS у меня она ноль возвращает. можешь код прикинуть мне тута если не в аблом?
PM MAIL   Вверх
Edik
Дата 15.9.2006, 10:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 207
Регистрация: 13.9.2006

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



у меня еще последний вопрос- я получаю сообщения от спинера, но они отстают от тех, которые есть на самом деле. помогите отредактировать следующий код.
Код

case WM_NOTIFY:
    if (LOWORD(wParam) == 88) // спин имеет ID 88
    {    
    hSpinWnd= GetDlgItem(hwnd, 88);
    iPos=LOWORD(SendMessage(hSpinWnd, UDM_GETPOS, 0, 0));
    //тута когда клацаю спин вниз- все нормально,
    //когда клацаю вверх- отстает в CTEXT от EDITTEXT
    //на две позиции
    iParam=lParam;
    if (iParam<0)
    iPos=iPos+1;
    else if (iParam>0)
    iPos=iPos-1;
    itoa(iPos, iEdit, 10);
    // 42 это ID CTEXT
    SetDlgItemText(hwnd, 42, iEdit);
    }

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


Бывалый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 207
Регистрация: 13.9.2006

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



Вот правильная программа с файлом ресурсов полностью. Большая благодарность Эрнесту модератору за помощь.
Код

//Файл TrackBar.cpp

#include <windows.h>
#include <windowsx.h>
#include <commctrl.h>


LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;

HINSTANCE hInstance;
char iEdit[40];
int iPos;

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                    PSTR szCmdLine, int iCmdShow)
     {
     static char  szAppName[] = "My" ;
     HWND         hwnd ;
     MSG          msg ;
     WNDCLASSEX   wndclass ;

     wndclass.cbSize        = sizeof (wndclass) ;
     wndclass.style         = CS_HREDRAW | CS_VREDRAW;
     wndclass.lpfnWndProc   = (WNDPROC)WndProc ;
     wndclass.cbClsExtra    = 0 ;
     wndclass.cbWndExtra    = DLGWINDOWEXTRA ;
     wndclass.hInstance     = hInstance ;
     wndclass.hIcon         = LoadIcon (hInstance, szAppName) ;
     wndclass.hCursor       = LoadCursor (NULL, IDC_ARROW) ;
     wndclass.hbrBackground = (HBRUSH) (COLOR_WINDOW) ;
     wndclass.lpszMenuName  = NULL ;
     wndclass.lpszClassName = szAppName ;
     wndclass.hIconSm       = LoadIcon (hInstance, szAppName) ;

     RegisterClassEx (&wndclass) ;

     hwnd = CreateDialog (hInstance, szAppName, 0, NULL ) ;
     ShowWindow (hwnd, iCmdShow) ;
     UpdateWindow(hwnd);     
     
     
     while (GetMessage (&msg, NULL, 0, 0))
          {
          TranslateMessage (&msg) ;
          DispatchMessage (&msg) ;
          }
     return msg.wParam ;
     }


LRESULT CALLBACK WndProc (HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
     {

    HWND hTrackWnd;
    HWND hProgrWnd;
    HWND hEditWnd;
    HWND hSpinWnd;
    int i;
    struct _NM_UPDOWN FAR *     iParam;
    int iPosParam;


    switch (iMsg)
          {

        case WM_DESTROY :
        PostQuitMessage (0) ;
        break ;

        case WM_CREATE :

    InitCommonControls();

        case WM_PAINT:
        
        hEditWnd= GetDlgItem(hwnd, 44);
        hSpinWnd= GetDlgItem(hwnd, 77);
        SendMessage(hSpinWnd, UDM_SETBUDDY, (LONG)hEditWnd, 0L);
        SendMessage(hSpinWnd, UDM_SETBASE, (WPARAM)10,0L);
        SendMessage(hSpinWnd, UDM_SETRANGE, 0, (LPARAM)MAKELONG(10, 0));
        SendMessage(hSpinWnd, UDM_SETPOS, 0, (LPARAM)MAKELONG(5, 0));
      
            
        hTrackWnd= GetDlgItem(hwnd, 88);
        SendMessage(hTrackWnd, TBM_SETRANGE, TRUE, MAKELONG(0,10));
        SendMessage(hTrackWnd, TBM_SETPOS, TRUE, 5);
        for (i=1; i<10; i++)
        SendMessage(hTrackWnd, TBM_SETTIC, 0 , i);
        
        hProgrWnd= GetDlgItem(hwnd,99);
        SendMessage(hProgrWnd, PBM_SETRANGE, 0, MAKELPARAM(0,10));
        SendMessage(hProgrWnd, PBM_SETSTEP, 1, 0);
        SendMessage(hProgrWnd, PBM_SETPOS, 5, 0);
        break;

            
        case WM_NOTIFY:
            if (LOWORD(wParam) == 77)
            {    
            
                hSpinWnd= GetDlgItem(hwnd, 77);
                iPos=LOWORD(SendMessage(hSpinWnd, UDM_GETPOS, 0, 0));

                iParam=(LPNMUPDOWN)lParam;
                iPosParam=iParam->iDelta;
                
                if (iPosParam>0)
                {
                    iPos=iPos+1;
                    if (iPos==11)
                        iPos=0;
                }
                else if (iPosParam<0)
                {
                    iPos=iPos-1;
                    if (iPos==-1)
                        iPos=10;
                }
            hTrackWnd= GetDlgItem(hwnd, 88);
            hProgrWnd= GetDlgItem(hwnd, 99);
            SendMessage(hProgrWnd, PBM_SETPOS, iPos,0);
            SendMessage(hTrackWnd, TBM_SETPOS, TRUE, iPos);
            itoa(iPos,iEdit,10);
            SetDlgItemText(hwnd, 42, iEdit);
            }
        case WM_COMMAND:
   
            if (LOWORD (wParam) == IDOK) 
            { 
            EndDialog(hwnd,0);
            PostQuitMessage (0) ;
            return 0 ;
            }
        if (LOWORD (wParam) == 55)

            {
        
            break;
            } 
    
        }
     return DefWindowProc (hwnd, iMsg, wParam, lParam) ;
     }

//Файл TrackBar.rc

//Microsoft Developer Studio generated resource script.
//
#include "resource.h"

#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#define APSTUDIO_HIDDEN_SYMBOLS
#include "windows.h"
#undef APSTUDIO_HIDDEN_SYMBOLS

/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS

/////////////////////////////////////////////////////////////////////////////
// Russian resources

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS)
#ifdef _WIN32
LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
#pragma code_page(1251)
#endif //_WIN32

/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//

MY DIALOG DISCARDABLE  32768, 0, 189, 79
STYLE DS_MODALFRAME | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "My"
CLASS "My"
FONT 8, "MS Sans Serif"
BEGIN
    PUSHBUTTON      "Ok",IDOK,127,10,50,14
    CTEXT           "Option",42,129,62,49,8,NOT WS_GROUP
    PUSHBUTTON      "Show",55,125,33,50,14,NOT WS_TABSTOP
    CONTROL         "Slider1",88,"msctls_trackbar32",TBS_BOTH | WS_TABSTOP,
                    11,23,100,15
    CONTROL         "Progress1",99,"msctls_progress32",WS_BORDER,21,52,80,14
    EDITTEXT        44,36,4,40,14,ES_AUTOHSCROLL | ES_NUMBER
    CONTROL         "Spin1",77,"msctls_updown32",UDS_WRAP | UDS_SETBUDDYINT | 
                    UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS,77,4,11,
                    14
END


#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//

1 TEXTINCLUDE DISCARDABLE 
BEGIN
    "resource.h\0"
END

2 TEXTINCLUDE DISCARDABLE 
BEGIN
    "#define APSTUDIO_HIDDEN_SYMBOLS\r\n"
    "#include ""windows.h""\r\n"
    "#undef APSTUDIO_HIDDEN_SYMBOLS\r\n"
    "\0"
END

3 TEXTINCLUDE DISCARDABLE 
BEGIN
    "\r\n"
    "\0"
END

#endif    // APSTUDIO_INVOKED

#endif    // Russian resources
/////////////////////////////////////////////////////////////////////////////



#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//


/////////////////////////////////////////////////////////////////////////////
#endif    // not APSTUDIO_INVOKED



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


Новичок



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

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



Как  задать  отрицательные числа в ранге UPDOWN_CLASS ?

Пишу : 
SendMessage(hSpin,   UDM_SETRANGE, 0, (LPARAM)MAKELONG(100, -100) );

Как  только  spin доходит до отрицательного числа UDM_GETPOS выдает 65534.

Это сообщение отредактировал(а) K0resh - 13.4.2009, 23:05
PM MAIL   Вверх
GremlinProg
Дата 13.4.2009, 23:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

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



преобразовывай к знаковому:
Код

short value = (short)SendMessage(hwnd,UDM_GETPOS,0,0);



--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
K0resh
Дата 13.4.2009, 23:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



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

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


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

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


 




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


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

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