ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

не создается окно
  #1  
Старый 30.11.2008, 00:01
fire64
Участник форума
Регистрация: 01.04.2008
Сообщений: 200
Провел на форуме:
1059196

Репутация: 39
По умолчанию не создается окно

подскажите что не так в этом коде

дело в том что выполняется условие

if (!hWnd)
{
return false;
}

и окно не создается



PHP код:
#include <windows.h>

#include "stdafx.h"

extern HMODULE hClientApp;

LPCTSTR lpszAppName  "MyApp";
LPCTSTR lpszTitle    "My Application"



bool Wind_Init() 
{


   
MSG        msg;
   
HWND       hWnd
   
WNDCLASSEX wc;

   
// Register the application window class.
   //............................................
   
wc.style         CS_HREDRAW CS_VREDRAW;
 
//  wc.lpfnWndProc   = (WNDPROC)WndProc;       
   
wc.cbClsExtra    0;                      
   
wc.cbWndExtra    0;                      
   
wc.hInstance     = (HINSTANCE)hClientApp;              
   
wc.hIcon         LoadIcon( (HINSTANCE)hClientApplpszAppName ); 
   
wc.hCursor       LoadCursor(NULLIDC_ARROW);
   
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
   
wc.lpszMenuName  lpszAppName;              
   
wc.lpszClassName lpszAppName;              
   
wc.cbSize        sizeof(WNDCLASSEX);
//   wc.hIconSm       = LoadImage( (HINSTANCE)hClientApp, lpszAppName, 
  //                               IMAGE_ICON, 16, 16,
    //                             LR_DEFAULTCOLOR );
    
if (!RegisterClassEx( &wc )) 
    {
        return 
false;
    }

    
hWnd CreateWindowlpszAppName
                        
lpszTitle,    
                        
WS_OVERLAPPEDWINDOW

                        
//size windows

                        
400,   // координаты окна по ширине
                        
300,   // координаты окна по высоте
                        
170,  //  ширина окна
                        
350,   //  высота окна
                        

                        
NULL,              
                        
NULL,              
                        (
HINSTANCE)hClientApp,         
                        
NULL               
                      
);

    if (!
hWnd
    {
        return 
false;
    }    
    
   
ShowWindowhWnd); 
   
UpdateWindowhWnd );

   while( 
GetMessage( &msgNULL00) )   
   {
      
TranslateMessage( &msg ); 
      
DispatchMessage( &msg );  
   }

    return 
true;

 
Ответить с цитированием

  #2  
Старый 30.11.2008, 00:04
0verbreaK
Постоянный
Регистрация: 30.04.2008
Сообщений: 323
Провел на форуме:
379101

Репутация: 136
По умолчанию

GetLastError что говорит?
 
Ответить с цитированием

  #3  
Старый 30.11.2008, 14:29
bons
Участник форума
Регистрация: 20.12.2007
Сообщений: 295
Провел на форуме:
1777055

Репутация: 347
По умолчанию

вот работающий код минимального окна

Код:
#include <windows.h>

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

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                    PSTR szCmdLine, int iCmdShow)
     {
     static char szAppName[] = "HelloWin" ;
     HWND        hwnd ;
     MSG         msg ;
     WNDCLASSEX  wndclass ;

     wndclass.cbSize        = sizeof (wndclass) ;
     wndclass.style         = CS_HREDRAW | CS_VREDRAW ;
     wndclass.lpfnWndProc   = WndProc ;
     wndclass.cbClsExtra    = 0 ;
     wndclass.cbWndExtra    = 0 ;
     wndclass.hInstance     = hInstance ;
     wndclass.hIcon         = LoadIcon (NULL, IDI_APPLICATION) ;
     wndclass.hCursor       = LoadCursor (NULL, IDC_ARROW) ;
     wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
     wndclass.lpszMenuName  = NULL ;
     wndclass.lpszClassName = szAppName ;
     wndclass.hIconSm       = LoadIcon (NULL, IDI_APPLICATION) ;

     RegisterClassEx (&wndclass) ;

     hwnd = CreateWindow (szAppName,         // window class name
		            "The Hello Program",     // window caption
                    WS_OVERLAPPEDWINDOW,     // window style
                    CW_USEDEFAULT,           // initial x position
                    CW_USEDEFAULT,           // initial y position
                    CW_USEDEFAULT,           // initial x size
                    CW_USEDEFAULT,           // initial y size
                    NULL,                    // parent window handle
                    NULL,                    // window menu handle
                    hInstance,               // program instance handle
		            NULL) ;		             // creation parameters

     ShowWindow (hwnd, iCmdShow) ;
     UpdateWindow (hwnd) ;

     while (GetMessage (&msg, NULL, 0, 0))
          {
          TranslateMessage (&msg) ;
          DispatchMessage (&msg) ;
          }
     return msg.wParam ;
     }

LRESULT CALLBACK WndProc (HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
     {
     HDC         hdc ;
     PAINTSTRUCT ps ;
     RECT        rect ;

     switch (iMsg)
          {

          case WM_PAINT :
	           hdc = BeginPaint (hwnd, &ps) ;

               GetClientRect (hwnd, &rect) ;

               DrawText (hdc, "Hello, world", -1, &rect,
			             DT_SINGLELINE | DT_CENTER | DT_VCENTER) ;

	           EndPaint (hwnd, &ps) ;
               return 0 ;

          case WM_DESTROY :
               PostQuitMessage (0) ;
               return 0 ;
          }

     return DefWindowProc (hwnd, iMsg, wParam, lParam) ;
     }
 
Ответить с цитированием

  #4  
Старый 30.11.2008, 14:48
t04
Участник форума
Регистрация: 10.01.2007
Сообщений: 140
Провел на форуме:
246020

Репутация: 105
По умолчанию

Код:
procedure WndProc(hWnd,uMsg:LongWord;wParam,lParam:Longint) stdcall;
begin
  case uMsg of
    WM_DESTROY: PostQuitMessage(0);
  DefWindowProc(hWnd,uMsg,wParam,lParam);
end;

...
в заполнении WNDCLASSEX
  wc.lpfnWndProc:=@WndProc;
Код:
ShowWindow( hWnd, 0 );

const
  SW_HIDE = 0;
  SW_NORMAL = 1;

сделай
ShowWindow( hWnd, SW_NORMAL );
или 
ShowWindow( hWnd, 1 );
убери
Код:
    if (!hWnd)  
    { 
        return false; 
    }
так никто не делает
сделай так

if (hWnd=INVALID_HANDLE_VALUE)or(hWnd<1) then
exit;

Последний раз редактировалось t04; 30.11.2008 в 15:03..
 
Ответить с цитированием

  #5  
Старый 30.11.2008, 16:43
Dian
Участник форума
Регистрация: 02.09.2008
Сообщений: 101
Провел на форуме:
196792

Репутация: 37
По умолчанию

Цитата:
подскажите что не так в этом коде
Закомменчено присвайвание указателя на оконную процедуру. Без нее работать не может.
А вообще обычно лучше смотреть код ошибки
 
Ответить с цитированием

  #6  
Старый 30.11.2008, 20:53
0verbreaK
Постоянный
Регистрация: 30.04.2008
Сообщений: 323
Провел на форуме:
379101

Репутация: 136
По умолчанию

Dian без обработчика тоже должно работать, для окна не совсем нужен он.
 
Ответить с цитированием

  #7  
Старый 01.12.2008, 00:24
t04
Участник форума
Регистрация: 10.01.2007
Сообщений: 140
Провел на форуме:
246020

Репутация: 105
По умолчанию

думаю что ошибка в каком то ненормальном if операторе

никогда не видел чтобы писали такое

делфи даже не скомпилирует такое "чудо"
 
Ответить с цитированием

  #8  
Старый 01.12.2008, 01:15
bons
Участник форума
Регистрация: 20.12.2007
Сообщений: 295
Провел на форуме:
1777055

Репутация: 347
По умолчанию

)
потому что это не делфи
 
Ответить с цитированием

  #9  
Старый 01.12.2008, 02:42
De-visible
Banned
Регистрация: 06.01.2008
Сообщений: 904
Провел на форуме:
4037638

Репутация: 1821


Отправить сообщение для De-visible с помощью ICQ
По умолчанию

t04, ты помоему темой ошибся.
 
Ответить с цитированием

  #10  
Старый 01.12.2008, 11:59
sn0w
Статус пользователя:
Регистрация: 26.07.2005
Сообщений: 568
Провел на форуме:
1290766

Репутация: 1236


По умолчанию

топикстартер, а как ты предлагаешь окну работать если в твоем коде:

// wc.lpfnWndProc = (WNDPROC)WndProc;

?!?!?
__________________


snow white world wide
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В МГУ молодые люди зашли в библиотеку через дверь, а вышли - в окно -=lebed=- Мировые новости 20 09.11.2006 17:10
Окно с кнопкой на Api je0n Авторские статьи 1 09.11.2006 02:03
В Интернете создается база данных по утерянным и похищенным паспортам Nova Мировые новости 1 16.03.2006 14:42
возможно ли получить ссылку на дочернее окно с помощю JavaScript ? rg25 PHP, PERL, MySQL, JavaScript 0 30.01.2006 17:41



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ