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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> error 1814 при DialogBox, CreateCialog, не создается диалог из подкл. модуля 
:(
    Опции темы
pee100n
Дата 4.4.2007, 23:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



описываю в файле диалог и функцию его создающую:
Код

#include "mydialogs.h"

// переменные
COLORREF color = 0;    // выбранный цвет

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

// функция возвращает выбранный цвет
COLORREF ColorDialog(){
    DialogBox(NULL,(LPCTSTR)IDD_COLORDLG, NULL,(DLGPROC)ColorDlg);    
    return color;
};


LRESULT CALLBACK ColorDlg(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)
    {
    case WM_INITDIALOG:
        return TRUE;
    case WM_PAINT:{
        RECT rect;
        HWND hPallete = GetDlgItem(hDlg,IDC_PALLETE);
        HDC hdc = GetDC(hPallete);
        GetWindowRect(hPallete,&rect);
        for (int i = rect.left+1; i < rect.right; i++){
            for (int j = rect.top+1; j < rect.bottom; j++){
                SetPixelV(hdc,i,j,255);
            }
        }
        ReleaseDC(hDlg,hdc);
                  }break;
    case WM_COMMAND:
        if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL) 
        {
            EndDialog(hDlg, LOWORD(wParam));
            return TRUE;
        }
        break;
    }
    return FALSE;
}

вообще говоря, типа должен быть диалог выбора цвета, немного недописан, так как столкнулся с данной проблемой.
так вот, вызываю ColorDialog() в главной программе, вызывается, а диалог не выводится. ловил ошибку GetLastError - дает 1814.
в DialogBox передавал HINSTANCE и HWND - результат такой же что и с NULL
помогите, пожадуйста, кто чем знает....
PM MAIL   Вверх
586
Дата 5.4.2007, 00:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

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



Цитата(pee100n @  4.4.2007,  23:57 Найти цитируемый пост)
GetLastError - дает 1814.

"Указанное имя ресурса не найдено в файле образа."

DialogBox(NULL,(LPCTSTR)IDD_COLORDLG, NULL,(DLGPROC)ColorDlg);
DialogBox(GetModuleHandle(0),(LPCTSTR)IDD_COLORDLG, NULL,(DLGPROC)ColorDlg);
PM   Вверх
Earnest
Дата 5.4.2007, 06:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Что значит "диалог из подключенного модуля"? Другая DLL? Если все в одном exe, то что 0, что hInstance должно работать. Во первых проверь, что такой ресурс (и с правильным номером!) действительно есть, а во вторых, замени (LPCTSTR)IDD_COLORDLG на MAKEINTRESOURCE(IDD_COLORDLG) - в макросе преобразование более корректное. 


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


Опытный
**


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

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





Цитата

>>>>не создается диалог из подкл. модуля
>> DialogBox(GetModuleHandle(0),(LPCTSTR)IDD_COLORDLG, NULL,(DLGPROC)ColorDlg); 



Тебе нужен HINSTANCE  твоей Dll 
Код

HINSTANCE  hInst;
BOOL APIENTRY DllMain(HANDLE hModule, DWORD dwReason, void*)
  {
//----
   switch(dwReason)
     {
      case DLL_PROCESS_ATTACH:
          hInst = (HINSTANCE)hModule; // <---- !!!
         break;
      case DLL_PROCESS_DETACH:
        break;
     }
//----
   return(TRUE);
  }

........

DialogBox(hInst,LPCTSTR(IDD_COLORDLG),0,(DLGPROC)ColorDlg)

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


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

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