[Wine-devel] [Wine-patches] [eterhack] Reimplement Etersoft Authors and output Etersoft informations (eterbug #6494). Замечания

Vitaly Lipatov lav на etersoft.ru
Сб Янв 15 22:40:42 MSK 2011


On 15 января 2011, grosso wrote:
> --- a/dlls/shell32/Makefile.in
> +++ b/dlls/shell32/Makefile.in
> @@ -1,4 +1,4 @@
> -EXTRADEFS = -D_SHELL32_ -DCOM_NO_WINDOWS_H
> +EXTRADEFS = -D_SHELL32_ -DCOM_NO_WINDOWS_H
> -D_FORTIFY_SOURCE=1


Не вижу смысла добавлять -D_FORTIFY_SOURCE=1
 
> --- /dev/null
> +++ b/dlls/shell32/etersoft_about.c
> @@ -0,0 +1,294 @@
> +#define ETERSOFT_FUNC_LICENSE
> +#define ETERSOFT_FUNC_VERSION

Эти дефайны не нужны.

> +void add_etersoft_authors(HINSTANCE hInstance, HWND list ,
> const WCHAR *authors ) +{
Тут лучше добавить комментарий, что функция полностью скопирована из такой-то.
И уже нет смысла передавать сюда authors, достаточно определить внутри функции,
как в оригинале.
И почему функция перестала быть static, как в оригинале?

> +void fill_listbox(HWND hWndCtl, const char* const *pstr,
> HFONT hFont) +{
Зачем нужна эта функция и где она используется?

> ); +	/*
> +	* add etersoft_authors
> +	*/
> +	hWndCtl = GetDlgItem(hWnd, IDC_ABOUT_LISTETER);
> +	ShowWindow( hWndCtl, SW_HIDE );
> +	add_etersoft_authors( shell32_hInstance ,hWndCtl ,
> authors_etersoft ); +
ShowWindow и пр. функции вокруг при добавлении авторов стоит вызывать также, как
и вокруг оригинальной функции.

> +
> +	while ((dwBytesRead = read(hFile,buf,1024))!=0)
> +        dwFileSize += dwBytesRead;
> +	hMem = GlobalAlloc(GHND,dwFileSize);
Просьба переделать вычисление размера файла путём его считывания.

> +	if (hMem!=NULL)
Условие лучше инвертировать — выйти сразу, если hMem == NULL

> +}
> +
> +
> +void etersoft_paint_picture(RECT Rec, HDC hDC, HWND hWnd, int
> width, int height) +{
Нет смысла передавать сюда обнулённые width, height

> +	if (pPicture == NULL)
> +		return;
> +
> +	IPicture_get_Width(pPicture,&width);
> +    IPicture_get_Height(pPicture,&height);
Они заполняются здесь

> --- a/dlls/shell32/shell32_main.c
> +++ b/dlls/shell32/shell32_main.c
> @@ -48,6 +48,8 @@
> 
>  #include "wine/debug.h"
>  #include "wine/unicode.h"
> 
> +#include "wine/etersoft.h"
Зачем нужен этот include?

> +#include "etersoft_about.h"
> 
>  WINE_DEFAULT_DEBUG_CHANNEL(shell);
> 
> @@ -938,7 +940,7 @@ static void add_authors( HWND list )
> 
>      HRSRC rsrc = FindResourceW( shell32_hInstance, authors,
>      (LPCWSTR)RT_RCDATA ); char *strA = LockResource(
>      LoadResource( shell32_hInstance, rsrc )); DWORD sizeW,
>      sizeA = SizeofResource( shell32_hInstance, rsrc );
> 
> -
> +
Не должно быть изменений

> @@ -964,8 +966,10 @@ static void add_authors( HWND list )
> 
>  static INT_PTR CALLBACK AboutDlgProc( HWND hWnd, UINT msg,
>  WPARAM wParam,
>  
>                                        LPARAM lParam )
>  
>  {
> 
> +
> 
>      HWND hWndCtl;
> 
> +
> 
>      TRACE("\n");
Лишние вставленные строки, надо убрать
>              WCHAR template[512], buffer[512], version[64];
>              extern const char *wine_get_build_id(void);
> 
> -
> +            #endif
> +
> 
Не должно быть второго +

>                  wine_get_build_id(), -1,
> 
> -                                     version,
> sizeof(version)/sizeof(WCHAR) ); 
> +                           
>             version, sizeof(version)/sizeof(WCHAR) );
Ненужное изменение

 
>                  hWndCtl = GetDlgItem(hWnd,

>                  IDC_ABOUT_LISTBOX);
> 
> -                SendMessageW( hWndCtl, WM_SETREDRAW, 0, 0 );
> -                SendMessageW( hWndCtl, WM_SETFONT,
> (WPARAM)info->hFont, 0 );
> 
>                  add_authors( hWndCtl );
> 
> -                SendMessageW( hWndCtl, WM_SETREDRAW, 1, 0 );
> -            }
> +                ShowWindow( hWndCtl, SW_SHOW );
> +           }
Не вижу, зачем здесь удалять SendMessage и добавлять ShowWindow.
 
>          }
>          return 1;
> 
> 
>      case WM_PAINT:
> -        {
> +        {
Здесь не должно быть изменения
 
>              PAINTSTRUCT ps;
> 
> +            RECT Rec;
> 
>              HDC hDC = BeginPaint( hWnd, &ps );
>              paint_dropline( hDC, hWnd );
> 
> +            etersoft_paint_picture(Rec, hDC, hWnd, 0, 0);
Странно передавать неинициализованный Rec. Передавать нули тоже не надо.

-- 
С уважением,
Виталий Липатов, ALT Linux Team, Eternity Software Team
Россия, Санкт-Петербург. http://etersoft.ru
GNU! ALT Linux! WINE! LaTeX! LyX! http://freesource.info


Подробная информация о списке рассылки Wine-devel