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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Диалог не отображается 
:(
    Опции темы
knut
Дата 31.10.2006, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Ппивет Всем
вот под WinCE делаю диалог но он не отображается подскажите почему?
Код

int WINAPI WinMain(HINSTANCE hInstance,
                   HINSTANCE hPrevInstance,
                   LPTSTR    lpCmdLine,
                   int       nCmdShow)
{
     wc1.style = CS_HREDRAW | CS_VREDRAW;
     wc1.lpfnWndProc = (WNDPROC)WndProc;
     wc1.cbClsExtra = 0;
     wc1.cbWndExtra = DLGWINDOWEXTRA;
     wc1.hInstance = hInstance;
     wc1.hCursor = LoadCursor(NULL,IDC_ARROW);
     wc1.hbrBackground = (HBRUSH)(COLOR_BTNFACE+1);
     wc1.lpszMenuName = NULL;
         
       RegisterClass(&wc1);
       hwnd = CreateDialog(hInstance,MAKEINTRESOURCE(129),0,0);
       UpdateWindow(hwnd);
       ShowWindow(hwnd,SW_SHOW); 
}



--------------------
Цитата

Многие вещи нам непонятны не оттого, что наши понятия слабы, а оттого, что данные вещи не входят в круг наших понятий.
PM MAIL   Вверх
Nastya
Дата 31.10.2006, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 27.3.2002
Где: Мариуполь

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



Не совсем поняла, что за сласс ты регистришь и зачем.
И где твоя DlgProc

И не стоит забывать про GetLastError smile


--------------------
Что бы понять рекурсию, надо понять рекурсию

"Профессионал - это человек сделавший все возможные ошибки в очень узкой области". Н.Бор
PM MAIL   Вверх
neosapient
Дата 31.10.2006, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Я так понимаю, что класс, который вы не указали, здесь совсем не нужен.
Далее вы используетеъ
hwnd = CreateDialog(hInstance,MAKEINTRESOURCE(129),0,0);
Последним 4-ым параметром должена быть функция обработки сообщений WndProc.
Затем надо отобразить окно ShowWindow(hwnd,SW_SHOW);
И еще добавляем цикл обработки сообщений
Резюмирую
Код

// подключаем стандартные контролы
#include <windows.h>
// подключаем нестандартные контролы
#include <commctrl.h>
#pragma comment(lib,"comctl32.lib")

int WINAPI WinMain(HINSTANCE hInstance,
                   HINSTANCE hPrevInstance,
                   LPTSTR    lpCmdLine,
                   int       nCmdShow)
{
    hwnd = CreateDialog(hInstance,MAKEINTRESOURCE(129),0,WndProc);
    ShowWindow(hwnd,SW_SHOW); 
    MSG msg;
    while( GetMessage( &msg, 0,0,0 ) )
    {
        if(! IsDialogMessage( hwnd , &msg) )
        {
            TranslateMessage( &msg );
            DispatchMessage( &msg );
        }
    }
}


Но проще так.
Код

// подключаем стандартные контролы
#include <windows.h>
// подключаем нестандартные контролы
#include <commctrl.h>
#pragma comment(lib,"comctl32.lib")

int WINAPI WinMain(HINSTANCE hInstance,
                   HINSTANCE hPrevInstance,
                   LPTSTR    lpCmdLine,
                   int       nCmdShow)
{
    hwnd = DialogBox(hInstance,MAKEINTRESOURCE(129),0,WndProc);
}


Надеюсь помог.

Это сообщение отредактировал(а) neosapient - 31.10.2006, 18:06
PM MAIL   Вверх
Gwendolen
Дата 31.10.2006, 23:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Была недавно моя тема по зтому поводу воспользуйся поиском там про главные окна из ресурсов с классом и без класов.
Если без класса надо в ресурсе удалить строку например CLASS "MY_EXCLUSIVE_CLASS"
Во вторых мой компилятор С требует полного заполнения WNDCLASSEX.
Но на всякий случай повторюсь:
res.rc:
Код

#include "apptype.h"
1000 DIALOGEX 6,6,194,102
CAPTION "FORM"
FONT 8,"MS Sans Serif",0,0
#ifdef MAIN_CLASS
CLASS "MY_EXCLUSIVE_CLASS"
#endif
STYLE 0x10CF0000
BEGIN
  CONTROL "Cld Wnd",1001,"Button",0x50010000,38,16,114,63
END
2000 DIALOGEX 0,0,239,87
CAPTION "CLD FORM"
FONT 8,"MS Sans Serif",0,0
STYLE 0xD0CF0040
BEGIN
  CONTROL "Get Cld",2001,"Button",0x50010F01,74,32,50,14
END


apptype.h:
Код

#define MAIN_CLASS

main.c:
Код

#include <windows.h>

#include "apptype.h"

BOOL CALLBACK ChDlgProc( HWND wnd, UINT msg, WPARAM wParam, LPARAM lParam )
{
    static HWND hWndPrnt; 
     switch( msg )
      {
         case WM_DESTROY :
             //PostQuitMessage(0);
             return TRUE;
         break;
     case WM_CLOSE://WM_SYSCOMMAND:
            //if (wParam == SC_CLOSE)
              {
                 EndDialog(wnd, 0);
                 return TRUE;
              }
         break;
        case WM_COMMAND:
        if (LOWORD(wParam) == 2001)
            {
                SetWindowText (GetParent((HWND) lParam), __TEXT("Caption: Child"));
                hWndPrnt    = GetParent (wnd);
                SetWindowText (hWndPrnt, __TEXT("Caption: GetParent"));
                return TRUE;
              }
         break;
      }
     return FALSE;
  }


/*
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
  {
     MSG msg;    
     HWND MainWnd;
     
     MainWnd=CreateDialog(hInstance, MAKEINTRESOURCE(1000), 0, MainDlgProc);
     ShowWindow(MainWnd, SW_SHOW );
     
     while (GetMessage(&msg,0,0,0) )
        {
         if (MainWnd!=0)
            {
             if (IsDialogMessage(MainWnd, &msg))
               {continue;}
            }
         TranslateMessage(&msg);
         DispatchMessage(&msg);
        }
     return msg.wParam;
  }
*/

#ifdef MAIN_CLASS
LRESULT CALLBACK WindowProc(HWND wnd, UINT msg, WPARAM wParam, LPARAM lParam)
  {
      switch( msg )
      {
         case WM_DESTROY :
             PostQuitMessage(0);
             return 0;
         break;   
        case WM_COMMAND:
        if (LOWORD(wParam) == 1001)
            {
                 DialogBox(GetModuleHandle(NULL), MAKEINTRESOURCE(2000), wnd, ChDlgProc);
                 return 0;
              }
         break;         
      }    
      return DefWindowProc(wnd,msg,wParam,lParam);
  }    
#else
BOOL CALLBACK MainDlgProc( HWND wnd, UINT msg, WPARAM wParam, LPARAM lParam )
  {
     switch( msg )
      {
         case WM_DESTROY :
             PostQuitMessage(0);
             return TRUE;
         break;
     case WM_CLOSE://WM_SYSCOMMAND:
            //if (wParam == SC_CLOSE)
              {
                 //EndDialog(wnd, 0);
                 //PostQuitMessage(0);
                 DestroyWindow(wnd);
                 return TRUE;
              }
         break;
        case WM_COMMAND:
        if (LOWORD(wParam) == 1001)
            {
                 DialogBox(GetModuleHandle(NULL), MAKEINTRESOURCE(2000), wnd, ChDlgProc);
                 return TRUE;
              }
         break;
      }
     return FALSE;
  } 
#endif
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
  {
     MSG msg;    
     HWND MainWnd;
#ifdef MAIN_CLASS     
     WNDCLASSEXA wc;
     
     wc.cbSize = sizeof(WNDCLASSEXA);
     wc.style = CS_HREDRAW | CS_VREDRAW;
     wc.lpfnWndProc = (WNDPROC)WindowProc;
     wc.cbClsExtra = 0;
     wc.cbWndExtra = DLGWINDOWEXTRA;
     wc.hInstance = hInstance;
     wc.hIcon = LoadIcon(NULL, IDI_QUESTION);
     wc.hCursor = LoadCursor(NULL,IDC_ARROW);
     wc.hbrBackground = (HBRUSH)(COLOR_BTNFACE+1);
     wc.lpszMenuName = NULL;
     wc.lpszClassName = "MY_EXCLUSIVE_CLASS";
     wc.hIconSm = NULL;
     
     RegisterClassEx(&wc);
     MainWnd=CreateDialog(hInstance, MAKEINTRESOURCE(1000), 0, NULL);
#else
    MainWnd=CreateDialog(hInstance, MAKEINTRESOURCE(1000), 0, MainDlgProc);
#endif
    ShowWindow(MainWnd, SW_SHOW ); 
     
     while (GetMessage(&msg,0,0,0) )
        {
         if (MainWnd!=0 )
            {
             if (IsDialogMessage(MainWnd, &msg))
               {continue;}
            }
         TranslateMessage(&msg);
         DispatchMessage(&msg);
        }
     return msg.wParam;
  }


Добавлено @ 23:20 
Кстати
Цитата(neosapient @  31.10.2006,  18:04 Найти цитируемый пост)
// подключаем нестандартные контролы
#include <commctrl.h>
#pragma comment(lib,"comctl32.lib")

и InitCommonControls (); забывать не надо, малоли что...

--------------------
Наносите пользу и причиняйте добро!
PM MAIL   Вверх
neosapient
Дата 1.11.2006, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата

и InitCommonControls (); забывать не надо, малоли что...

действительно не надо
Код

// подключаем стандартные контролы
#include <windows.h>
// подключаем нестандартные контролы
#include <commctrl.h>
#pragma comment(lib,"comctl32.lib")

int WINAPI WinMain(HINSTANCE hInstance,
                   HINSTANCE hPrevInstance,
                   LPTSTR    lpCmdLine,
                   int       nCmdShow)
{
    InitCommonControls (); 
    hwnd = DialogBox(hInstance,MAKEINTRESOURCE(129),0,WndProc);
}

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.0478 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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