Ярлыки

вторник, 29 июня 2010 г.

MFC: создание собственного визуального класса

наследуемого от стандартного класса.
1.создаем класс
2.указываем базовый класс
class CModelListFiles : public CListCtrl

Для использования из вызывающего класса нам нужно получить указатель на родительский класс. Для этого:
1.перегружаем метод Create где в третьем параметре получаем указатель на родителя
BOOL CModelListFiles::Create(DWORD dwStyle, const RECT &rect, CModelDlg *pParent, UINT nID)
{
if(!CListCtrl::Create(dwStyle,rect,pParent,nID)) return FALSE; //вызов метода базового класса
m_parent=pParent; //окно-родитель
return TRUE;
}
2.в хэдэре перед определением нашего класса обьявляем вызывающий класс
class CModelDlg;
3.в определении нашего класса создаем указатель на родителя
CModelDlg *m_parent;
4.включаем #include "ModelDlg.h"
в cpp нашего класса

ModelListFiles.h - визуальный класс наследуемый от CListCrtl
#if !defined(AFX_MODELLISTFILES_H__DEB17F5E_9013_49CA_8947_CCEBC974EF4F__INCLUDED_)
#define AFX_MODELLISTFILES_H__DEB17F5E_9013_49CA_8947_CCEBC974EF4F__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

class CModelDlg;

class CModelListFiles : public CListCtrl
{
public:
CModelDlg *m_parent;
CModelListFiles();
virtual ~CModelListFiles();

private:
BOOL Create(DWORD dwStyle,const RECT& rect,CModelDlg *pParent,UINT nID);
};

#endif // !defined(AFX_MODELLISTFILES_H__DEB17F5E_9013_49CA_8947_CCEBC974EF4F__INCLUDED_)

ModelListFiles.cpp
#include "stdafx.h"
#include "ModelListFiles.h"
#include "ModelDlg.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CModelListFiles::CModelListFiles()
{

}

CModelListFiles::~CModelListFiles()
{

}

BOOL CModelListFiles::Create(DWORD dwStyle, const RECT &rect, CModelDlg *pParent, UINT nID)
{
if(!CListCtrl::Create(dwStyle,rect,pParent,nID)) return FALSE; // Âûçîâ ìåòîäà áàçîâîãî êëàññà
m_parent=pParent; // îêíî-ðîäèòåëü
return TRUE;
}
ModelDlg.h
#if !defined(AFX_MODELDLG_H__D27F3632_A29D_4E97_B85B_F672DFCD102C__INCLUDED_)
#define AFX_MODELDLG_H__D27F3632_A29D_4E97_B85B_F672DFCD102C__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// ModelDlg.h : header file
//
#include "CustFilesEdit.h"


/////////////////////////////////////////////////////////////////////////////
// CModelDlg dialog

class CModelDlg : public CDialog
{
// Construction
public:
CModelDlg(CWnd* pParent = NULL); // standard constructor

};

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_MODELDLG_H__D27F3632_A29D_4E97_B85B_F672DFCD102C__INCLUDED_)

ModelDlg.cpp
#include "stdafx.h"
#include "ModelDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CModelDlg dialog


CModelDlg::CModelDlg(CWnd* pParent /*=NULL*/)
: CDialog(CModelDlg::IDD, pParent),
m_CustFilesBox(this)
{
//{{AFX_DATA_INIT(CModelDlg)
m_NoEdit = FALSE;
//}}AFX_DATA_INIT
}

понедельник, 28 июня 2010 г.

Идея как главное направление – как ее найти?

Как найти идею? Довольно просто. Бизнес-идея всегда связана с какой-то проблемой и является решением для нее. А миссия Вашего будущего бизнеса – идеальное (глобальное) решение данной проблемы.

Самое важное в бизнесе – это всегда идея, инновация. Как и где найти бизнес-идею? Об этом мы поговорим в этот раз.

Идея в бизнесе - это совсем не то же, что, например, идея в философии. Бизнес-идея – это направление движения. В конце этого направления должно горделиво возвышаться то, что называется «Миссия фирмы». Скажем, идея Генри Форда о конвейере и миссия «Каждому американцу – личный автомобиль». Идея Дж.Истмана (Кодак) о сухой фотопластине и миссия «Фотография – доступная всем». Чем выше и благороднее миссия фирмы – тем больше шансов на достижение успеха в долгосрочной перспективе.

Как найти идею? Довольно просто. Бизнес-идея всегда связана с какой-то проблемой и является решением для нее. А миссия – идеальное (глобальное) решение данной проблемы. То есть: вначале найдите проблему у людей, помогите им ее решить – они вам за это заплатят. Вот суть вообще любого бизнеса в одном предложении.

Иногда «бизнесмены» сами и создают проблему, а потом услужливо готовы оказать помощь (рэкет, например). Иногда вам предлагают ложное решение проблемы. Типичный пример – некоторые шампуни от перхоти. Известно, что перхоть – это симптом грибкового заболевания. Вместо лечения предлагается каждый день использовать шампуни с отшелушивающим эффектом. Перестал использовать шампунь – перхоть появилась снова. Клиент, что называется, «на игле». Так или иначе, правильная последовательность выглядит так: проблема – идея решения – план реализации – реализация решения.

Найти проблему уже куда проще, чем идею. Проблемы – они на поверхности. Нерешенные проблемы (типа лекарства от СПИДа) найти просто, но решение – сложно. Если найдете решение такой проблемы – сказочно разбогатеете! Но можно и по-другому. В наш безумный век достаточно предложить решение проблемы «с экономией» по сравнению с уже имеющимися на рынке решениями. Экономией времени, денег, нервов, усилий… За экономию ресурсов – люди вам заплатят. Сеть бистро, платежные автоматы, доставка всего-всего на дом, заказ всего-всего по телефону-Интернету – бизнесы на экономии времени. Time is money, как говорится. Скидки, распродажи, дисконтные системы – экономия денег. Адвокатские конторы, страховой бизнес, налоговый консалтинг – экономия нервов.

Хорошим инструментом является пирамида потребностей А.Маслоу. В пирамиде построчно определены потребности людей, или, другими словами, их насущные проблемы. Используем мы эту пирамиду довольно оригинально: высота строки в пирамиде – это средний доход от одного клиента, ширина строки – объем рынка (количество потенциальных клиентов). Речь идет о примерном процентном соотношении. Если ваш бизнес эксплуатирует самую нижнюю ступень потребностей (физиологические: пища, сон, секс, одежда, и т.п.) – вы можете рассчитывать на широкий рынок, но относительно небольшие наценки, ведь и конкурентов много. А вот в верхней части пирамиды (самовыражение) бизнес еще только-только нарождается. Пример: смотрели фильм «Давайте потанцуем» с Ричардом Гиром? Много ли у нас подобных клубов, где учат танцевать, петь, рисовать не детей, а взрослых? Потребность в самовыражении есть у всех. Если ваш бизнес захватывает две строки пирамиды и более – вы можете рассчитывать на устойчивые прибыли.

Сразу хочу разочаровать: даже самая отличная идея еще не гарантирует успешности бизнеса. Все дело в реализации. Во-первых, некоторые замечательные идеи реализовать нельзя по причине дороговизны, некоторые – по причине того, что это кому-то влиятельному не понравится (читай – если он на этом сам «греется»), некоторые – просто потому, что не в то время и не в том месте вы их воплощаете. Или – просто не так. За последние пять лет я с двойственным чувством наблюдаю, как два десятка моих идей были воплощены кем-то и довольно удачно. Почему не мной? Не было денег, времени, желания, а у кого-то все это нашлось. В Рунете, кстати, есть ряд сайтов, которые битком набиты именно идеями с примерами реализации. Ищите и обрящете.

На закуску интересные направления, на которые стоит обратить внимание:

  • Вендинг (торговые и платежные автоматы), чем выше аренда и з/п в вашем регионе – тем этот бизнес интереснее. Это современный и быстрорастущий сектор.
  • Некоммерческие организации (спортивные клубы, различные кружки по интересам и т.п., хотя организации некоммерческие – зарабатывать на них можно очень хорошо).
  • Бизнес на любых мелких бытовых услугах. Или на тех, кто такие услуги оказывает. Фирма «Муж на час» – хороший пример.
  • Любые виды бизнеса, связанные с обработкой информации. Справочные службы с доступом по телефону/Интернету. Консалтинг всех видов (налоговый, экономический, юридический, психотерапевтический). Информация всегда стоит дорого.
  • Сезонный бизнес. Изготовление подарков из конфет к Новому году легко приносит 100 тыс. рублей в месяц, летом продажа мороженого и прохладительных напитков в нужных местах (пляжи, парки) – 150% прибыли и более.
  • Интернет-проекты. Интернет – отличная площадка для старта! Сайт «Школа Жизни» – чем не пример? В США семь лет назад был просто бешеный взлет «доткомов»! Правда, кризис пережили далеко не все, но я надеюсь, вы не забыли формулу выживаемости бизнеса? Только 10% фирм существуют через два года после старта.

Итак, вы увидели проблему, готовы предложить оригинальное решение. Как понять, найдет ли эта идея своего покупателя? Нужно составить бизнес-план! На этапе бизнес-плана многие идеи отметаются, как нереализуемые или малодоходные.

http://www.biznesbomba.ru/user/id/816/articles/158

фото барахолка

http://community.livejournal.com/spb_photo_sale/2345376.html

chance.ru

foto.ru

воскресенье, 27 июня 2010 г.

SQL Server HYT00

http://social.technet.microsoft.com/Forums/en/sqldatabaseengine/thread/87543a3e-65c7-402d-bfd7-634693f9f064

SQL Server 2008: Change data capture (CDC)

http://www.gotdotnet.ru/blogs/yliberman/6067/

http://istomin.wordpress.com/2010/01/21/change-data-capture-cdc-sql-server-2008/

пятница, 25 июня 2010 г.

SQL Server очистить таблицу в Management Studio

-открыть таблицу правой кнопкой мыши
-нажать Show SQL Pane (Ctrl+3)
-в меню Change Type выбрать delete
-подредактировать запрос
-нажать Execute SQL (Ctrl+R)

четверг, 24 июня 2010 г.

MFC работа с SQL Server через CRecordset

1.Для работы с БД необходимо добавить новый класс через ClassWizard или правой кнопкой мышки в дереве классов.
2.Указать базовый класс CRecordset.
3.Указать ODBC.
4.Указать таблицы с которыми есть желание работать.
5.Добавить #include в хэдер созданного класса.
если структура таблицы изменилась необходимо пересоздать класс заново.

SQL Server Management Studio

http://bdis.umeta.ru/db/db_course/labs/tools/index.htm

CListCtrl

http://blackheel.ru/s_and_a/clistctrl_virtlist.shtml

вторник, 22 июня 2010 г.

CString

http://www.sources.ru/cpp/mfc/string/cstring_2.htm

сервис заметок

http://www.rsdn.ru/?Forum/Info/FAQ.com.lpcwstr_or_bstr.aspx

books

Fuck it. Послать все на ..., или Парадоксальный путь к успеху и процветанию http://www.books.ru/shop/books/690844
Гамсун "Голод" http://fictionbook.ru/author/gamsun_knut/golod/
Coding4Fun: программируем для удовольствия http://www.books.ru/shop/books/694838
Законы Паркинсона http://www.ozon.ru/context/detail/id/3630926/
Принцип Питера, или Почему дела всегда идут вкривь и вкось http://www.ozon.ru/context/detail/id/1382478/

понедельник, 21 июня 2010 г.

Шкаф для книг.

http://tellur-spb.ru/kontaktnaya-informaciya.html
http://www.gurov-co.ru/node/377
http://www.mebelnam.ru/knijniy.html

books links

http://www.extracoder.com/genesis/0068.html

http://hack-portal.ucoz.ru/load/16-1-0-114

http://www.zipsites.ru/?n=15/10/1/

Waitable Timers

http://msdn.microsoft.com/en-us/library/ms686898%28v=VS.85%29.aspx

http://msdn.microsoft.com/en-us/library/ms682492%28v=VS.85%29.aspx

Почему Вы используете именно таймер? Вообще-то при многонитевой (multithreads) организации приложения используются другие подходы: WaitFor..., Sleep, WaitableTimer, - полюс синхронизация с необходимой нитью (thread).
Вообще-то обычный таймер (timer) - это user mode object, который отправляет сообщение WM_TIMER в очередь событий. Далее дело приложения организовать корректно обработку данного сообщения. Причем обработка имеет свои нюансы для разных ОС: Win9x и Me - обрабатывается сообщение в главной нити процесса, NT и клоны - в той нити, где был создан таймер.

http://junglewin.narod.ru/threads.html#timer

таймер в потоке

http://msdn.microsoft.com/en-us/library/ms686915%28v=VS.85%29.aspx

SQL Server Stored Procedure

http://www.mssqltips.com/tutorial.asp?tutorial=160

http://www.c-sharpcorner.com/UploadFile/john_charles/796/

ODBC escape-последовательности

http://edn.embarcadero.com/article/37453

MS SQLServer DateTime

http://code.msdn.microsoft.com/SQLTutorials
http://anubhavg.wordpress.com/2009/06/11/how-to-format-datetime-date-in-sql-server-2005/
http://msdn.microsoft.com/ru-ru/library/ms187819.aspx
http://msdn.microsoft.com/ru-ru/library/ms187928%28SQL.90%29.aspx

пятница, 18 июня 2010 г.

Multithreads

http://junglewin.narod.ru/threads.html#timer

Подскажите, плиз, что-то я совсем запутался.
в созданном потоке создаю таймер, SetWaitableTimer(...)
Затем жду когда он протикает (это может произойти через н-дцат секунд).
WaitForSingleObject(WaitableTimerHandle, INFINITE) ? ...
как из основного потока завершить (не убивая) поток, который находится в режиме ожидания, или звершить этот таймер досрочно?

Подробней это выглядит так:
WaitableTimerHandle:=CreateWaitableTimer(nil, True, 'DeathReviewTimer');
...
while not Terminated do begin
...
SetWaitableTimer(WaitableTimerHandle,
DueTime,
0,
nil,
nil,
False)
...
if (WaitForSingleObject(WaitableTimerHandle, INFINITE)<>WAIT_OBJECT_0) then begin
MessageBox(0, 'WaitForSingleObject failed!', 'Error!',
MB_ICONERROR or MB_OK or MB_SETFOREGROUND or MB_TOPMOST or MB_TASKMODAL);
exit;
end;
...
end;
...
Думаю можно сделать контоль через WaitForMultipleObjects
Но ведь наверное можно как-то получить доступ к существующему таймеру? вот смотрю в мсдн на openwaitabletimer...
кто-нибудь так делал?
// Сначала
HANDLE SomeEvent = CreateEvent (NULL, FALSE, FALSE, NULL);

// Потом ждёшь
HANDLE handles [2] = { WaitableTimerHandle, SomeEvent };
DWORD result = WaitForMultipleObjects (2, handles, FALSE, INFINITE);
switch (result)
{
case WAIT_OBJECT_0 + 0:
// Дождались таймера
break;

case WAIT_OBJECT_0 + 1:
// Пора сваливать
break;

default:
// Что-то пошло не так
break;
}

// В неком другом потоке
SetEvent (SomeEvent);

четверг, 17 июня 2010 г.

Многопоточное программирование

http://www.devdoc.ru/index.php/content/view/multi_thread_3.htm

http://www.sources.ru/cpp/faqs/90.htm

MSMQ

http://msmvps.com/blogs/gladchenko/default.aspx

http://www.codeproject.com/KB/IP/msmqchannel.aspx

Невизуальные HTML-редакторы

http://www.internet-technologies.ru/articles/article_1086.html

ms sql server 2005 отслеживание изменений в таблице из приложения

http://msdn.microsoft.com/ru-ru/library/cc305322.aspx

ms sql 2005 синхронизация

http://subscribe.ru/archive/comp.prog.visualc/200102/18072733.html

хранимые продцедуры
http://msdn.microsoft.com/ru-ru/library/ms187926%28SQL.90%29.aspx
http://www.studfiles.ru/dir/cat32/subj291/file684/view1344/page2.html

event notification
http://msdn.microsoft.com/ru-ru/library/ms189453%28v=SQL.90%29.aspx
http://blogs.msdn.com/b/alexejs/archive/2009/07/19/p20090719_5f00_1.aspx
http://www.sql.ru/articles/mssql/03011001NotificationServices.shtml

Краткое введение в сервис-брокер
http://blogs.msdn.com/b/alexejs/archive/2009/08/15/9871237.aspx
http://books.google.ru/books?id=fx4JM99vKZ8C&printsec=frontcover&source=gbs_v2_summary_r&cad=0#v=onepage&q&f=false

пятница, 11 июня 2010 г.

MS SOL Server data types

sql server поддерживает следующие типы данных:

Тип данных Обозначение Размер, байт
Бинарные данные binary
varbinary[(n)] 1-8000
Символы char[(n)]
varchar[(n)] 1-8000
( до 8000 символов)
Символы unicode nchar[(n)]
nvarchar[(n)] 1-8000
(до 4000 символов)
Дата и время datetime 8
smalldatetime 4
Точные числа decimal[(p[,s])]
numeric[(p[,s])] 5-17
Приблизительные числа float[(n)] real 4-8 4
Глобальный идентификатор uniqueidentifier 16
Целые числа int smallint, tinyint 4 2, 1
Денежки money, smallmoney 8, 4
Специальные bit, cursor,
sysname, timestamp 1, 0-8
Текст и изображение text, image 0-2 Гб
Текст unicode ntext 0-2 Гб

вторник, 8 июня 2010 г.

Plastic Bumper

http://www.samodelkin.komi.ru/articles/kuzov2.html

суббота, 5 июня 2010 г.

Как изменить язык ввода по-умолчанию на экране приветствия в Windows 7

http://w7q.ru/windows7/kak-izmenit-yazyik-vvoda-po-umolchaniyu-na-ekrane-privetstviya-v-windows-7/

пятница, 4 июня 2010 г.

VC++ MFC Tutorial: CListCtrl, InsertItem, Using List Control, SetImageList, Article with source code

http://www.ucancode.net/CPP_Library_Control_Tool/VC_MFC_Totorial_CListCtrl_InsertItem_SetImageList_Article.htm

Win: COM

http://www.rsdn.ru/article/com/introcom.xml

http://msdn.microsoft.com/ru-ru/library/ms690343%28v=VS.85%29.aspx

среда, 2 июня 2010 г.

Copy Files From Clipboard

//проверяем есть ли доступные данные
//CF_HDROP означает что нас интересуют входящие данные о файлах
if (!IsClipboardFormatAvailable(CF_HDROP))
{
AfxMessageBox( "No avaible files in Clipboard" );
return;
}
//открываем буфер обмена
if ( !OpenClipboard() )
{
AfxMessageBox( "Cannot open the Clipboard" );
return;
}
//получаем данные из буфера обмена
HDROP my_cb_data;
//приводим данные из типа HANDLE в тип HDROP
my_cb_data = (HDROP)GetClipboardData(CF_HDROP);
//если данные получены
if(my_cb_data)
{
//получаем количество файлов в буфере обмена
//для чего вторым параметром передаем 0xFFFFFFFF
UINT num_cb_files = DragQueryFile(my_cb_data,0xFFFFFFFF,NULL,0);
CString st_num_cb_files;
st_num_cb_files.Format("%i", num_cb_files);
AfxMessageBox( st_num_cb_files, MB_OK);
//создаем буфер для хранения имен файлов
TCHAR *fName = new TCHAR[num_cb_files];
//заполняем буфер
DragQueryFile(my_cb_dta, 0, fName, num_cb_files );
AfxMessageBox( fName, MB_OK);

}
//закрываем буфер обмена
CloseClipboard();

http://www.vsokovikov.narod.ru/New_MSDN_API/index_msdn.htm

http://www.codeproject.com/KB/clipboard/archerclipboard1.aspx

http://netcode.ru/cpp/?click=r-213.php.htm

THERMOS

http://www।risk.ru/users/homohomeni/2559/