Понедельник, 17 Июня 2024, 06:00

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
DevС++, функция GetStockObject
ТритонДата: Вторник, 24 Апреля 2012, 05:52 | Сообщение # 1
постоянный участник
Сейчас нет на сайте
Code
//=================================================================================================
#include <windows.h>
#include <fstream.h>
#include <iostream.h>
//=================================================================================================
std::ofstream    Log;
//=================================================================================================
bool             InitApplication           (HINSTANCE  Instance   );
//=================================================================================================
LRESULT CALLBACK WindowProcedureMainWindow (HWND       Window     ,
                     UINT       Message    ,
                     WPARAM     First      ,
                     LPARAM     Second     );
//=================================================================================================
int  WINAPI      WinMain                   (HINSTANCE  Instance   ,
                     HINSTANCE  Previus    ,
                     LPSTR      CommandLine,
                     int        Show       )
{
   Log.open("Log.Log");
   Log<<"WinMain                  ="<<(void *)WinMain                  <<"."<<endl;   
   Log<<"InitApplication          ="<<(void *)InitApplication          <<"."<<endl;
   Log<<"WindowProcedureMainWindow="<<(void *)WindowProcedureMainWindow<<"."<<endl;   
   Log<<"DefWindowProc            ="<<(void *)DefWindowProc            <<"."<<endl;    
   Log<<"WinMain is starting."<<endl;
   Log<<"Instance   ="<<(void *)Instance<<" at "<<(void *)&Instance<<"."<<endl;
   Log<<"Previus    ="<<(void *)Previus<<" at "<<(void *)&Previus<<"."<<endl;
   Log<<"CommandLine=\""<<CommandLine<<"\" at "<<(void *)CommandLine<<", pointer at "<<(void *)&CommandLine<<"."<<endl;
   Log<<"Show       ="<<Show<<" at "<<(void *)&Show<<"."<<endl;
   if (InitApplication(Instance))
   {
   }
   Log.close();
   return 0;
}
//=================================================================================================
bool             InitApplication           (HINSTANCE  Instance   )
{
   char ApplicationName[16]="Sea jackals";
   WNDCLASSEX WindowClass;
   Log<<"InitApplication is starting."<<endl;
   Log<<"ApplicationName=\""<<ApplicationName<<"\" at "<<(void *)ApplicationName<<", pointer at "<<(void *)&ApplicationName<<"."<<endl;
   WindowClass.cbSize       =        sizeof        (WindowClass                 );
   WindowClass.style        =        CS_HREDRAW|
                     CS_VREDRAW;
   WindowClass.lpfnWndProc  =        WindowProcedureMainWindow;
   WindowClass.cbClsExtra   =        0;
   WindowClass.cbWndExtra   =        0;
   WindowClass.hInstance    =        Instance;
   WindowClass.hIcon        =        LoadIcon      (NULL       , IDI_APPLICATION);
   WindowClass.hCursor      =        LoadCursor    (NULL       , IDC_ARROW      );
   WindowClass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH                 );
   Log<<"WindowClass at "<<(void *)&WindowClass<<"."<<endl;
   Log<<"WindowClass.cbSize       ="<<        WindowClass.cbSize       <<" at "<<(void *)&WindowClass.cbSize       <<"."<<endl;
   Log<<"WindowClass.style        ="<<        WindowClass.style        <<" at "<<(void *)&WindowClass.style        <<"."<<endl;
   Log<<"WindowClass.lpfnWndProc  ="<<(void *)WindowClass.lpfnWndProc  <<" at "<<(void *)&WindowClass.lpfnWndProc  <<"."<<endl;
   Log<<"WindowClass.cbClsExtra   ="<<        WindowClass.cbClsExtra   <<" at "<<(void *)&WindowClass.cbClsExtra   <<"."<<endl;
   Log<<"WindowClass.cbWndExtra   ="<<        WindowClass.cbWndExtra   <<" at "<<(void *)&WindowClass.cbWndExtra   <<"."<<endl;
   Log<<"WindowClass.hInstance    ="<<(void *)WindowClass.hInstance    <<" at "<<(void *)&WindowClass.hInstance    <<"."<<endl;
   Log<<"WindowClass.hIcon        ="<<(void *)WindowClass.hIcon        <<" at "<<(void *)&WindowClass.hIcon        <<"."<<endl;
   Log<<"WindowClass.hCursor      ="<<(void *)WindowClass.hCursor      <<" at "<<(void *)&WindowClass.hCursor      <<"."<<endl;
   Log<<"WindowClass.hbrBackground="<<(void *)WindowClass.hbrBackground<<" at "<<(void *)&WindowClass.hbrBackground<<"."<<endl;
   return true;
}
//=================================================================================================
LRESULT CALLBACK WindowProcedureMainWindow (HWND       Window     ,
                     UINT       Message    ,
                     WPARAM     First      ,
                     LPARAM     Second     )
{
   switch (Message)
   {
    case WM_DESTROY: PostQuitMessage(0);
    break;
   }
   return DefWindowProc (Window, Message, First, Second);
}
//=================================================================================================
не компилится из-за строки
Code
WindowClass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH                 );
, если её заменить на
Code
WindowClass.hbrBackground=NULL;
, то всё эйси. В чём дело и как с этим бороться?

Добавлено (24.04.2012, 05:52)
---------------------------------------------
И хорошо бы декларацию типа WNDCLASSEX.


Не всё так плохо, как оно есть на самом деле.

Сообщение отредактировал Тритон - Вторник, 24 Апреля 2012, 09:05
НохчиДата: Вторник, 24 Апреля 2012, 07:54 | Сообщение # 2
заслуженный участник
Сейчас нет на сайте
Тема поднималась миллион раз, научись уже гуглить.

Многие вопросы по Windows отпадут, если посмотреть тут
ТритонДата: Вторник, 24 Апреля 2012, 09:05 | Сообщение # 3
постоянный участник
Сейчас нет на сайте
Quote (Нохчи)
научись уже гуглить.
Запрос
Quote
HBRUSH dev c++
, первая же ссылка http://social.msdn.microsoft.com/Forums/en-US/vcgeneral/thread/e4fd1c4b-4407-4743-a74f-7d78338c17d2/, на странице красуется название мелкомягкой студии, которая ту самую строку принимает без каких либо сообщений. Так кто не умеет гуглить? [url=http://www.google.ru/search?rlz=1C1AVSX_enRU457RU457&sourceid=chrome&ie=UTF-8&q=HBRUHS+devc%2B%2B#hl=ru&newwindow=1&rlz=1C1AVSX_enRU457RU457&sa=X&ei=pDCWT-iBDIm80QXHhti3Dg&ved=0CBsQvwUoAA&q=HBRUSH+dev+c%2B%2B&spell=1&bav=on.2,or.r_gc.r_pw.r_qf.,cf.osb&fp=180a75b44e2f9207]Убедись[/url].

Добавлено (24.04.2012, 08:59)
---------------------------------------------
Внутренний же поиск по HBRUSH ведёт только на эту тему, что противоречит утверждению о том, что она хоть раз здесь поднималась. С какой стати новичок на форуме должен знать форум лучше внутреннего поисковика? Я даже не гугол.

Добавлено (24.04.2012, 09:05)
---------------------------------------------
Тест показал, что проблема не в типе, а в функции: компилятор её знает, а линкер нет.


Не всё так плохо, как оно есть на самом деле.

Сообщение отредактировал Тритон - Вторник, 24 Апреля 2012, 09:08
НохчиДата: Вторник, 24 Апреля 2012, 09:18 | Сообщение # 4
заслуженный участник
Сейчас нет на сайте
libgdi32.a

Многие вопросы по Windows отпадут, если посмотреть тут
ТритонДата: Четверг, 26 Апреля 2012, 15:34 | Сообщение # 5
постоянный участник
Сейчас нет на сайте
Уже на www.cyberforum нашёл. Там один деятель поднял такую же тему, ему ответили.

Не всё так плохо, как оно есть на самом деле.
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг