Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите разобраться с окнами. 
:(
    Опции темы
Guest
Дата 16.12.2004, 22:21 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Всегда писал консольные программы , теперь решил перейти на окна...
не получается создать окно ...
И еще подскажите как осуществлять ввод\вывод в окно...
извените за слишком простой вопрос...
Код

#include <windows.h>
int WINAPI WinMain(HINSTANCE a,HINSTANCE b,PSTR cmd,int hz){
WNDCLASS MyClass;
ATOM MyClassAtom;
HWND newwindow;
//registering class
MyClass.style=CS_HREDRAW;
MyClass.lpfnWndProc=CallWindowProc;
MyClass.cbClsExtra=0;
MyClass.cbWndExtra=0;
MyClass.hInstance=a;
MyClass.hIcon=NULL;
MyClass.hCursor=NULL;
MyClass.hbrBackground=NULL;
MyClass.lpszMenuName=NULL;
MyClass.lpszClassName="MyNewClass";
MyClassAtom=RegisterClass(&MyClass);
//creating window
newwindow=CreateWindow(&MyClassAtom,"MyNewWindow",WS_BORDER,100,100,100,100,GetDesktopWindow(),NULL,a,NULL);
for(;;){};
}

  Вверх
_dreamer_
Дата 17.12.2004, 06:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



после создания окна нужно огранизовать message loop, а не просто бесконечный цикл

вот пример из MSDN.

Код

#include <windows.h>

// Global variable

HINSTANCE hinst;

// Function prototypes.

int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int);
InitApplication(HINSTANCE);
InitInstance(HINSTANCE, int);
LRESULT CALLBACK MainWndProc(HWND, UINT, WPARAM, LPARAM);

// Application entry point.

int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hPrevInstance,
   LPSTR lpCmdLine, int nCmdShow)
{
   MSG msg;

   if (!InitApplication(hinstance))
       return FALSE;

   if (!InitInstance(hinstance, nCmdShow))
       return FALSE;

   while (GetMessage(&msg, (HWND) NULL, 0, 0) != 0 && GetMessage(&msg, (HWND) NULL, 0, 0) != -1)
   {
       TranslateMessage(&msg);
       DispatchMessage(&msg);
   }
   return msg.wParam;
       UNREFERENCED_PARAMETER(lpCmdLine);
}

BOOL InitApplication(HINSTANCE hinstance)
{
   WNDCLASSEX wcx;

   // Fill in the window class structure with parameters
   // that describe the main window.

   wcx.cbSize = sizeof(wcx);          // size of structure
   wcx.style = CS_HREDRAW |
       CS_VREDRAW;                    // redraw if size changes
   wcx.lpfnWndProc = MainWndProc;     // points to window procedure
   wcx.cbClsExtra = 0;                // no extra class memory
   wcx.cbWndExtra = 0;                // no extra window memory
   wcx.hInstance = hinstance;         // handle to instance
   wcx.hIcon = LoadIcon(NULL,
       IDI_APPLICATION);              // predefined app. icon
   wcx.hCursor = LoadCursor(NULL,
       IDC_ARROW);                    // predefined arrow
   wcx.hbrBackground = GetStockObject(
       WHITE_BRUSH);                  // white background brush
   wcx.lpszMenuName =  "MainMenu";    // name of menu resource
   wcx.lpszClassName = "MainWClass";  // name of window class
   wcx.hIconSm = LoadImage(hinstance, // small class icon
       MAKEINTRESOURCE(5),
       IMAGE_ICON,
       GetSystemMetrics(SM_CXSMICON),
       GetSystemMetrics(SM_CYSMICON),
       LR_DEFAULTCOLOR);

   // Register the window class.

   return RegisterClassEx(&wcx);
}

BOOL InitInstance(HINSTANCE hinstance, int nCmdShow)
{
   HWND hwnd;

   // Save the application-instance handle.

   hinst = hinstance;

   // Create the main window.

   hwnd = CreateWindow(
       "MainWClass",        // name of window class
       "Sample",            // title-bar string
       WS_OVERLAPPEDWINDOW, // top-level window
       CW_USEDEFAULT,       // default horizontal position
       CW_USEDEFAULT,       // default vertical position
       CW_USEDEFAULT,       // default width
       CW_USEDEFAULT,       // default height
       (HWND) NULL,         // no owner window
       (HMENU) NULL,        // use class menu
       hinstance,           // handle to application instance
       (LPVOID) NULL);      // no window-creation data

   if (!hwnd)
       return FALSE;

   // Show the window and send a WM_PAINT message to the window
   // procedure.

   ShowWindow(hwnd, nCmdShow);
   UpdateWindow(hwnd);
   return TRUE;

}


PM MAIL   Вверх
Guest
Дата 18.12.2004, 16:11 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Код

#include <windows.h>

int WINAPI WinMain(HINSTANCE a,HINSTANCE b,PSTR cmd,int hz){
WNDCLASS MyClass;
ATOM MyClassAtom;
HWND newwindow;
MSG msg;

//registering class
MyClass.style=CS_HREDRAW|CS_VREDRAW;
MyClass.lpfnWndProc=CallWindowProc;
MyClass.cbClsExtra=0;
MyClass.cbWndExtra=0;
MyClass.hInstance=a;
MyClass.hIcon=NULL;
MyClass.hCursor=NULL;
MyClass.hbrBackground=GetStockObject(WHITE_BRUSH);
MyClass.lpszMenuName=NULL;
MyClass.lpszClassName="MyNewClass";
MyClassAtom=RegisterClass(&MyClass);

//creating window
newwindow=CreateWindow("MyNewClass","MyNewWindow",WS_OVERLAPPEDWINDOW,100,100,100,100,GetDesktopWindow(),NULL,a,NULL);
ShowWindow(newwindow,SW_SHOW);
UpdateWindow(newwindow);
while (GetMessage(&msg, (HWND) NULL, 0, 0) != 0 && GetMessage(&msg, (HWND) NULL, 0, 0) != -1)
   {
       TranslateMessage(&msg);
       DispatchMessage(&msg);
   };
}

Чтото он ошибку выдает... при запуске программы...
Ладно , понял , программить окна это не просто 2 новые функции заменяющие printf() и scanf() , может скажете книжку где все это написано коротко и полно?
Заранее спасибо..
  Вверх
prapor
Дата 18.12.2004, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Я тоже начал недавно мне посоветовали "С++ Builder" автор Никита Культин .Там всё понятно с примерами на диске .
Подробнее пиши на мыло .
Успехов !!!! smile
PM MAIL ICQ   Вверх
Guest
Дата 26.12.2004, 19:47 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Иди на www.firststeps.ru
  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

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


 




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


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

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