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 (Нохчи) научись уже гуглить. Запрос , первая же ссылка 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 нашёл. Там один деятель поднял такую же тему, ему ответили.
Не всё так плохо, как оно есть на самом деле.
|
|
| |