18.11.2004
AndrewVK
Хочу рассказать про несколько мнений о рефакторинге, кои в ходе моей профессиональной деятельности оказались мифами.

Миф 1. Рефакторинг не нужен или нужен очень редко.
Любой код имеет определенный цикл жизни, который в итоге завершается тем, что из-за запутанности кода его проще оказывается полность переписать. Единственным известным мне способом продлить жизненный цикл существующего кода является его рефакторинг.

Миф 2. Тщательное проектирование позволяет избавится от рефакторинга.
Не существует идеальных архитекторов. Всегда будут ошибки проектирования. Следовательно — рефакторинг в ходе разработки это нормальный процесс, от которого не избавится. Но это еще не все — помимо ошибок проектирования всегда будет ситуация, когда структура кода не оптимальна из-за того что на момент проектирования существует некоторая неопределенность, от которой можно избавиться, только начав разработку.

Миф 3. Рефакторинг это упрощение кода.
На самом деле рефакторинг, как правило, не упрощает...
21.09.2004
Odi$$ey
OE>>Как в ATL клиенте подписываться на события надо объяснять?
E>ДА!

Ok, например в клиенте есть диалог, в котором нужно ловить события от COM-сервера:

class CMainDlg : public CAxDialogImpl<CMainDlg>
               , public CDialogResize<CMainDlg>
{


добавляем туда следующие вещи (см. выделенное):

[ccode]
#import "MyCOM.dll" no_namespace, named_guids

// произвольное число, удобно когда подключение идет к событиям сразу нескольких компонент
#define IMYINTRFID 1

class CMainDlg : public CAxDialogImpl<CMainDlg>
, public CDialogResize<CMainDlg>
, public IDispEventImpl<IMYINTRFID, CMainDlg, &DIID___IMyIntrfEvent, &LIBID_MYCOMLib, 1, 0>
{

IMyIntrfPtr pMyIntrfPtr;

// номер метода-события (0x1) смотрим в idl сервера или в
// mycom.tli, который создаст #import
BEGIN_SINK_MAP( CMainDlg )
SINK_ENTRY_EX( IMYINTRFID, DIID___IMyIntrfEvent, 0x1, OnFirstMethod )
END_SINK_MAP()
03.06.2004
Odi$$ey
Здравствуйте, Carc, Вы писали:

C>Как получить текст горячей клавиши?

C>Т.е. я юзую какую нить к примеру Ctrl+A у себя в приложении, причем есессно клавиша может меняться пользователем, как мне получить текст который отображать в меню (типа какой нить "Ctrl+A"), пробовал тот же GetKeyName но что я не смог разобраться.... хелп

посмотреть исходники MFC-шного CHotKeyCtrl::GetHotKeyName():

[ccode]
CString GetKeyName( UINT vk, BOOL fExtended )
{
LONG lScan = MapVirtualKey( vk, 0 ) << 16;

// if it's an extended key, add the extended flag
if ( fExtended )
lScan |= 0x01000000L;

TCHAR sz[ 100 ];

::GetKeyNameText( lScan, sz, 100 );

sz[ 99 ] = 0;

return CString( sz );
}

CString GetHotKeyName( DWORD hk )
{
static const TCHAR szPlus[] = _T( " + " );
CString strKeyName;
WORD wCode;
WORD wModifiers;

wCode = LOBYTE( LOWORD( hk ) );
wModifiers = HIBYTE( LOWORD( hk ) );

if ( wCode != 0 || wModifiers != 0 )
{
07.07.2004
Odi$$ey
Есть окно с Edit, нужно программно переключить язык ввода.
19.03.2002
Odi$$ey
Можно ли заменить стандартный хелп, который подключается при создании проекта в AppWizard-е на HTML хелп, так чтобы он работал как обычный хелп, и если можно то как.
16.10.2002
Odi$$ey
Есть стандартный ListView со стилями LVS_EX_GRIDLINES и LVS_REPORT (эмуляция Grid-a). Хочется сделать "зебру" — чередующиеся белые и серые полосы. Или выделять некоторые строки иным цветом (красным, если это что-то критическое), в зависимости от значения строки.
08.06.2004
IT
Вот тут обнаружил завалявшуюся простенькую HTML читалку.
Поддерживает GET, POST, сертификаты, куки, referer, редиректы.
14.06.2003
der Igel
В статье описаны необходимые наcтройки ньюс-клиента для чтения форумов RSDN через протокол NNTP
17.09.2003
Odi$$ey
Рассматривается способ объединения CHM-файлов без использования HtmlHelp-коллекций
15.08.2003
IT
Как правильно уволиться.
<  1  …  24  25  26  27  28  29  30  > rss