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

Поиск:

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


Бывалый
*


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

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



когда я создаю в winAPI программе на C++ новое окно с именем класса UPDOWN_CLASS то программа компилируеться без ошибок, но не запускаеться на выполение, либо запускаеться все же, но спинера не видно на экране. в чем моя ошибка?
PM MAIL   Вверх
Romikgy
Дата 13.9.2006, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



В 17 строке


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

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


Бывалый
*


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

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



дома перед мамочкой будешь умничать- а был бы ты профи сразу бы ответил на мою тему...
PM MAIL   Вверх
zkv
Дата 13.9.2006, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

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



Цитата(Edik @  13.9.2006,  16:52 Найти цитируемый пост)
а был бы ты профи сразу бы ответил на мою тему... 

так вам сразу и ответили:
Цитата(Romikgy @  13.9.2006,  16:44 Найти цитируемый пост)
В 17 строке 

smile 
а если серьезно, то как догадаться что вы имеете ввиду? Покажите код, тогда будет понятно о чем речь
PM MAIL   Вверх
Earnest
Дата 13.9.2006, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

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



Возможно, ты забыл инициализировать Common Controls. 

Модератор: и, пожалуйста, поменьше гонору: если тебе не нравится ответ, сначала подумай, правильно ли ты задал вопрос.


--------------------
...
PM   Вверх
Romikgy
Дата 13.9.2006, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



Цитата(Edik @  13.9.2006,  15:52 Найти цитируемый пост)
дома перед мамочкой будешь умничать- а был бы ты профи сразу бы ответил на мою тему...


Edik, приходя на форум читай его правила , они всегда на виду!
http://forum.vingrad.ru/index.php?showtopic=48019


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

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


Бывалый
*


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

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



рассказываю популярно, ребята, извините за "гонор"- я тут новенький!!! так вот, я поднесу код обязательно, так как сейчас не захватил его в интернет клуб, но факт в нем тот, что hSpinWnd=CreateWindowEx ... и т.д. возвращает у меня дескриптор hSpinWnd=NULL я проверял кодом этот участок программы. hSpinWnd= CreateWindow(... я вставляю как и положено в инициализацию окна, потом посылаю сообщения SendMessage об установке начальных параметров вроде там BUDDY и прочее(позиция и прочее...) причем у меня стоят в CreateWindow к спину стили SETBUDDYINT, потом ALIGNRIGHT то есть вся процедура инициализации спина не вызывает ошибок, я даже примеры с интернета копировал - все нормально, но еще факт- стоит мне с панели инструментов Visual C++ поставить спин на форму ресурса- как программа перестает работать- то есть компилируеться и линкуеться без ошибок, и даже висит в памяти а окно не выводиться. как только я с формы убираю спин- программа снова начинает нормально выводить окно, но спина на нем нет. а код я поднесу- вы только бы сказали в чем дело- я уже не спал три ночи из за этого. просто потерял смысл жизни.
PM MAIL   Вверх
Edik
Дата 13.9.2006, 20:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



может я не все библиотеки прилинковал? подскажите. я просто сейчас не помню какие линковал библиотеки, но без дополнительных библиотек программа в Visual Studio на WinAPI просто не работает. выдает ошибки компилятора. а у меня никаких ошибок не выдет, просто спина рядом в полем ввода Edit нет.
PM MAIL   Вверх
Romikgy
Дата 13.9.2006, 21:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



Edik, исходник выложи


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Earnest
Дата 14.9.2006, 07:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

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



Eще раз: есть у тебя вызов InitCommonControls?


--------------------
...
PM   Вверх
Edik
Дата 14.9.2006, 10:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



вот такие библиотеки я линкую в проект user32.lib gdi32.lib winmm.lib comdlg32.lib comctl32.lib.
теперь код
Код

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

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

HINSTANCE hInstance;
char iEdit[40];

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 hSpinWnd;
    HWND hEditWnd;

    switch (iMsg)
          {
        case WM_CREATE :

         hSpinWnd=CreateWindowEx(0L, UPDOWN_CLASS,"",
            UDS_ALIGNRIGHT|UDS_SETBUDDYINT|
            WS_VISIBLE|WS_CHILD,
            30,30,30,30,
            hwnd, (HMENU)88, hInstance, NULL);
          return 0;

        case WM_PAINT:
    
        hEditWnd=GetDlgItem(hwnd, 44);
        hSpinWnd=GetDlgItem(hwnd,88);
        SendMessage(hSpinWnd, UDM_SETBUDDY, (LONG)hEditWnd, 0L);
        SendMessage(hSpinWnd, UDM_SETBASE, (WPARAM)10,0L);
        SendMessage(hSpinWnd, UDM_SETRANGE, 0, (LPARAM)MAKELONG(50, 0));
        SendMessage(hSpinWnd, UDM_SETPOS, 0, (LPARAM)MAKELONG(25, 0));
        return 0;

        break;

        case WM_DESTROY :

        PostQuitMessage (0) ;
        return 0 ;
        
        case WM_COMMAND:
   
            if (LOWORD (wParam) == IDOK) 
            { 
            EndDialog(hwnd,0);
            PostQuitMessage (0) ;
            return 0 ;
            }
        if (LOWORD (wParam) == 55)

            {
            GetDlgItemText(hwnd,44,iEdit, 40); 
            
            SetDlgItemText(hwnd, 42, iEdit);
            break;
            } 
         }
     return DefWindowProc (hwnd, iMsg, wParam, lParam) ;
     }



//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,9,50,49,8,NOT WS_GROUP
    PUSHBUTTON      "Show",55,123,40,50,14,NOT WS_TABSTOP
    EDITTEXT        44,13,13,79,14,ES_AUTOHSCROLL
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





Добавлено @ 10:33 
вызова InitCommonControls у меня нет. я об этом нигде просто не читал, если можно напишите его назначение и как он оформляеться. у меня нет ни одной толковой доки по С++ в том числе и нету у меня MSDN. и вобще, я просто открываю программой форму диалога, положив на нее даже без всякого кода элемент UPDOWN  и програ вобще не хочет после этого выводить диалог, просто не запускаеться. выдает 0 ошибок компиляции и линка и все. стоп. то же самое с трек баром, но я сейчас не о нем. меня больше интересует это.
PM MAIL   Вверх
Romikgy
Дата 14.9.2006, 10:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



Цитата(Edik @  14.9.2006,  09:28 Найти цитируемый пост)
UPDOWN_CLASS

А где это определено ? имхо твой класс определен как 
Цитата(Edik @  14.9.2006,  09:28 Найти цитируемый пост)
wndclass.lpszClassName = szAppName ;

 smile 


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

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


Бывалый
*


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

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



Цитата

А где это определено ?

я определил клас в ресурсах- см. ниже кода с++. там описание диалогового окна. кроме того я добавил InitCommonControl(); в процедуру инициализации окна и все палучилась пацануха! СПАСИБО огромное за помощь. звиняйте ели че не то. кроме того- еще вапросик! чего когда я в WM_PAINT ставлю return 0; или return TRUE;  с диалогового окна исчезают поле воода эдит и сам спинер, а если я ничего не возвращаю с WM_PAINT то все работает как надо, кроме того почему инициализацию спинера в моем случае надо производить именно в WM_PAINT, я пробую инициализировать спинер значениями в WM_CREATE но тогда он не работает. а так все получилось. спасибо еще раз.
PM MAIL   Вверх
Romikgy
Дата 14.9.2006, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



Цитата(Edik @  14.9.2006,  10:32 Найти цитируемый пост)
его когда я в WM_PAINT ставлю return 0; или return TRUE;  с диалогового окна исчезают поле воода эдит и сам спинер

не вызывается 
Цитата(Edik @  14.9.2006,  09:28 Найти цитируемый пост)
 return DefWindowProc (hwnd, iMsg, wParam, lParam) ;

имхо


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Earnest
Дата 14.9.2006, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

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



Куда-нибудь в районе InitInstance нужно вставить вызов InitCommonControls().
Эта функция регистрирует соответствующие классы, без чего никто из коммон-контролов создан быть не может.

Добавлено @ 17:34 
Ага, уже сделал.

Добавлено @ 17:41 
Цитата

кроме того почему инициализацию спинера в моем случае надо производить именно в WM_PAINT, я пробую инициализировать спинер значениями в WM_CREATE но тогда он не работает

Не надо в WM_PAINT. Но в WM_CREATE еще рано: только-только создан диалог и нет никаких контролов
Делай в WM_INITDIALOG.


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

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


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

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


 




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


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

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