- const int WM_NCHITTEST = 0x84;
- const int HTCAPTION = 2;
- const int HTCLIENT = 1;
- protected override void WndProc(ref Message m)
- {
- base.WndProc(ref m);
- if (m.Msg == WM_NCHITTEST && (int)m.Result == HTCLIENT)
- m.Result = (IntPtr)HTCAPTION;
- }
понедельник, 30 марта 2009 г.
Tips & tricks WinForms .NET 2
Перемещение окна за любое место
вторник, 10 марта 2009 г.
Shell COM для Window x64
Много программ хорошо работает как под x32 так и под x64 виндами. Но есть то что не будет работать - это расширения для Shell x64 винды, написаные для x32 ( можно зарегать под x32 проводник, но этот путь не для настоящих джедаев ).
Создать расширение для оболочки Windows x64, оказывается на поверку тривиальной задачей.
Для начала понадобится компилятор x64 - в VS2008 уже включен.
Compiling 64 bit DLL/EXE
1. Open your Visual C++ Solution
2. Choose Build->Configuration Manager menu
3. Inside the Configuration Manager window, change the ‘Active solution platform’ to x64. If you don’t have any, you would need to create one by selecting the ‘New..’ drop down item. Copy settings from your Win32 platform.
4. Now rebuild your solution.
Если возникли ошибки связаные с типами, меняем : INT_PTR <- int. DWORD_PTR <- DWORD.
Специфичный код обрамляем в соотвествующие макросы _WIN64 и _WIN32.
Регистрация осуществляется с помощью : C:\Windows\System32\regsvr32.exe (64 bit)
Для висты требуются админские права.
Создать расширение для оболочки Windows x64, оказывается на поверку тривиальной задачей.
Для начала понадобится компилятор x64 - в VS2008 уже включен.
Compiling 64 bit DLL/EXE
1. Open your Visual C++ Solution
2. Choose Build->Configuration Manager menu
3. Inside the Configuration Manager window, change the ‘Active solution platform’ to x64. If you don’t have any, you would need to create one by selecting the ‘New..’ drop down item. Copy settings from your Win32 platform.
4. Now rebuild your solution.
Если возникли ошибки связаные с типами, меняем : INT_PTR <- int. DWORD_PTR <- DWORD.
Специфичный код обрамляем в соотвествующие макросы _WIN64 и _WIN32.
Регистрация осуществляется с помощью : C:\Windows\System32\regsvr32.exe (64 bit)
Для висты требуются админские права.
вторник, 6 января 2009 г.
Восстановление устройства в DirectX
Немного кода...
Этот код достаточно вставить перед вызовом BeginScene для девайса.
OnLostDevice - релизим все ресурсы которые с типом D3DPOOL_DEFAULT,
OnResetDevice - аналогично пересоздаем все ресурсы с типом D3DPOOL_DEFAULT, для всех ID3DX интерфейсов вызываем соответствующие методы.
Если у вас происходит ресайз окна достаточно вызвать последовательность методов
OnLostDevice, затем Reset девайсу, OnResetDevice.
Mожно вставить проверки на возвращаемые значения для BeginScene (), EndScene (), Present ().
www.epicreal.com
- HRESULT hr = m_pD3DDevice->TestCooperativeLevel ();
- // c девайсом пока ничего не случилось
- if ( false == m_bDeviceLost )
- {
- if ( hr == D3DERR_DEVICELOST )
- { // произошли проблемы
- m_bDeviceLost = true;
- OnLostDevice();
- }
- }
- // если девайс не сбросили надо его сбросить
- if ( hr == D3DERR_DEVICENOTRESET )
- {
- hr = m_pD3DDevice->Reset ( &m_d3dpp );
- if ( hr == D3D_OK )
- {
- OnResetDevice();
- // девайс в порядке
- m_bDeviceLost = false;
- }
- else
- if ( hr == D3DERR_DEVICELOST )
- {
- // произошли проблемы
- m_bDeviceLost = true;
- OnLostDevice();
- }
- }
Этот код достаточно вставить перед вызовом BeginScene для девайса.
OnLostDevice - релизим все ресурсы которые с типом D3DPOOL_DEFAULT,
OnResetDevice - аналогично пересоздаем все ресурсы с типом D3DPOOL_DEFAULT, для всех ID3DX интерфейсов вызываем соответствующие методы.
Если у вас происходит ресайз окна достаточно вызвать последовательность методов
OnLostDevice, затем Reset девайсу, OnResetDevice.
Mожно вставить проверки на возвращаемые значения для BeginScene (), EndScene (), Present ().
www.epicreal.com
понедельник, 5 января 2009 г.
"Open source" от microsoft
В последнее время озаботился тулзами и всякими либами для .NET (бесплатные и желательно с открытыми сорцами). Вот те на http://www.codeplex.com/ - чудо сайт "CodePlex is Microsoft's open source project hosting web site. Start a new project, join an existing one, or download software created by the community." - описание с сайта подняло настроение.
http://www.codeplex.com/ScintillaNET ( контрольчик для подсветки синтаксиса, для тех кто из тундры или с другой планеты ) - эта тулза так вапще находка для токаря. Ковыряние с исходниками и написание своего маленького теста (посветка кода lua, xml), мое настроение улетело в горы ! Все работает как часики.
http://www.codeplex.com/ScintillaNET ( контрольчик для подсветки синтаксиса, для тех кто из тундры или с другой планеты ) - эта тулза так вапще находка для токаря. Ковыряние с исходниками и написание своего маленького теста (посветка кода lua, xml), мое настроение улетело в горы ! Все работает как часики.
Подписаться на:
Сообщения (Atom)