Jump to content
Forumu Destekleyenlere Katılın ×
Paticik Forumları
2000 lerden beri faal olan, çok şukela bir paylaşım platformuyuz. Hoşgeldiniz.

*.jpeg,*.gif;*.ico vb... dosyalarını OLE Kullanarak Yüklemek (VC++)


Maleboge

Öne çıkan mesajlar

Detaylı Bilgi için http://msdn.microsoft.com/library/
[hline]
#include
#include
#include
#include "resource.h"
#define HIMETRIC_INCH 2540
//===================================================================================
HINSTANCE hInst;
LPPICTURE gpPicture;
//===================================================================================
HWND InitWindow(HINSTANCE hinst,DWORD dwIcon,DWORD dwMenu,char* szName,int x,int y,int w,int h);
CenterWin(HWND hWnd,int w,int h);
//===================================================================================
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
MSG msg;
hInst=hInstance;
InitWindow(hInst,0,0,"JPEG Loader",0,0,0,0);
while(GetMessage(&msg,NULL,NULL,NULL))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
//===================================================================================
PrePare()
{
DWORD hRes,hImg,dwFSize;
hRes=(DWORD)FindResource(0,(LPCSTR)ABC,(LPCSTR)"IMAGE");
hImg=(DWORD)LockResource(LoadResource(0,(HRSRC)hRes));
dwFSize=SizeofResource(0,(HRSRC)hRes);
HGLOBAL hGl=GlobalAlloc(0,dwFSize);
memcpy(hGl,(void*)hImg,dwFSize);
//----------------------------------------
LPSTREAM pstm=NULL;
HRESULT hr = CreateStreamOnHGlobal(hGl,TRUE,&pstm);
hr = OleLoadPicture(pstm, dwFSize, FALSE, IID_IPicture, (LPVOID *)&gpPicture);

}
//===================================================================================
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wP, LPARAM lP)
{
long hmWidth;
long hmHeight;
RECT rc;
int nWidth;
int nHeight;
PAINTSTRUCT ps;
HDC hdc;
switch (message)
{
case WM_CREATE:
CenterWin(hWnd,280,200);
PrePare();
return DefWindowProc(hWnd, message, wP, lP);
break;
case WM_PAINT:
hdc=BeginPaint(hWnd,&ps);
gpPicture->get_Width(&hmWidth);
gpPicture->get_Height(&hmHeight);
nWidth = MulDiv(hmWidth, GetDeviceCaps(hdc, LOGPIXELSX), HIMETRIC_INCH);
nHeight = MulDiv(hmHeight, GetDeviceCaps(hdc, LOGPIXELSY), HIMETRIC_INCH);
GetClientRect(hWnd, &rc);
gpPicture->Render(hdc, 0, 0, nWidth, nHeight, 0, hmHeight, hmWidth, -hmHeight, &rc);

EndPaint(hWnd,&ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wP, lP);
}
return 0;
}

//===================================================================================
HWND InitWindow(HINSTANCE hinst,DWORD dwIcon,DWORD dwMenu,char* szName,int x,int y,int w,int h)
{
WNDCLASSEX wcex;
wcex.cbSize = sizeof(WNDCLASSEX);
wcex.style = CS_HREDRAW | CS_VREDRAW;
wcex.lpfnWndProc = (WNDPROC)WndProc;
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = hinst;
wcex.hIcon = LoadIcon(hinst,(LPCTSTR)dwIcon);
wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW);
wcex.lpszMenuName = (char*)dwMenu;
wcex.lpszClassName = szName;
wcex.hIconSm = LoadIcon(wcex.hInstance,(LPCTSTR)dwIcon);
RegisterClassEx(&wcex);
HWND hWnd;
hWnd = CreateWindow(szName,szName, WS_OVERLAPPED |
WS_CAPTION |
WS_SYSMENU |
WS_MINIMIZEBOX |
WS_BORDER ,
x,
y,
w,
h,
NULL,NULL,hinst, NULL);
ShowWindow(hWnd,1);
UpdateWindow(hWnd);
return hWnd;
}
//===================================================================================
CenterWin(HWND hWnd,int w,int h)
{
HWND hDes;
RECT rc1;
hDes=GetDesktopWindow();
GetWindowRect(hDes,&rc1);
rc1.bottom=rc1.bottom/2;
rc1.right=rc1.right/2;
MoveWindow(hWnd,rc1.right-(w/2),rc1.bottom-(h/2),w,h,1);
}[hline]"Saçma Olmayan Hiçbir Fikrin Ümidi Yoktur"(A.Einstein)
Criminal2's HomePage
Link to comment
Sosyal ağlarda paylaş

Denemedim şu an ama bu sistemi giflerde direk böyle kullanamayızki?. transparancy? onu naısl halletcez yoksa o Render() fonksiyonu yapıyormu bu işi?. Yani mesela Gif load ettik tek framelikse sorun yokta animasyonsa nolcak yine dediğim gibi o render hallediyormu. ayrıca dikkat ettiğime göre o render fonksiyonu bize bir hwnd döndermiyor eğer gif yüklüyorsa virtual bir window create etmesi lazım diilmi. Onun timerlerı için falan?. Bizde gerektiğinde onu kapatabilmemiz için.
Ben kullanamdım bilmiyorumda ama MFC kullandığımızda basit bir kaç işlemle bir explorer com u yerleştirebiliyoruz windowa ve ona isteidğimiz image in adresiniveridğimizde(local hardisk veya internet) onu direk load ediyor.

Bu activex elementlerini win32 de kullanmayı biliyorsan o daha makbule geçer bak.[hline]Alma?
Mater?
Link to comment
Sosyal ağlarda paylaş

gif lerin encode edilmesiyle ilgili code ayzaiblirim buraya elimd eçok harika bir gif library si var onuda laızm olan varsa verebilirim. ek eksiği giflerde dosya boyutunu küçültmeye yarıyan değişmeyen bölgeleri transparant yapma olayı sorun ayratıyor çok uğraştım bir türlü beceremedim onu ama onada şöyle bir çözüm buldum. Photo Shop la açtığınızda custoımize menusunden kaldırabiliyorsunuz o özleliğini gif azcık fazla yer kaplıyor o zaman, o kadar. Ama buna çözüm bulursam üzeridne çalıştığım program için baya bir işe yarar. Çünkü program internet tabanlı çalışıyor sürekli gif çekiyor fln bu zamandan tasarruf sağlıyor.

Az önce msdn den Oleyle bir picture load eden bir progrmıan kdoalrını çektim denemeler yaptım şimdi hayır olmuyor giflerin sadece ilk framesini yüklüyor.[hline]Alma?
Mater?
Link to comment
Sosyal ağlarda paylaş

http://www.relisoft.com/win32/index.htm
buyur Lixad burda pek bi güzel bi win32 api tutorialı var 7. konuya geldım hadi bakalm 1 ay a kadar bitiricem :P ama baştan söyliyim C++ ı sonuna kadar kullanıyor örneklerde
(Ole ve activex kullanımınıda anlatıyor)

bide bu kodda en önemli kısım

hr = OleLoadPicture(pstm, dwFSize, FALSE, IID_IPicture, (LPVOID *)&gpPicture);

diğerleri klasik resource yönetim fonksiyonları ve window class &prosedür tanımları (Diğer resource fonksiyonlarının tanımı için MSDN->Platform SDK->User Interfaces Services->Resources->Resources)

bide döndermek lafı nerden çıktı? döndürmek+göndermek?
Link to comment
Sosyal ağlarda paylaş

ewet site güzelmiş...
şuranında altını çizmek isterim..

gpPicture->get_Width(&hmWidth);
gpPicture->get_Height(&hmHeight);
nWidth = MulDiv(hmWidth, GetDeviceCaps(hdc, LOGPIXELSX), HIMETRIC_INCH);
nHeight = MulDiv(hmHeight, GetDeviceCaps(hdc, LOGPIXELSY), HIMETRIC_INCH);[hline]"Saçma Olmayan Hiçbir Fikrin Ümidi Yoktur"(A.Einstein)
Criminal2's HomePage
Link to comment
Sosyal ağlarda paylaş

tüh rezil oldum.

said:
"COM programming is so difficult that you shouldn't even try it without MFC. Right or wrong? Absolutely wrong!. Granted, OLE and its successor COM have the elegance of a figure-skating hippopotamus. But putting MFC on top of COM is like dressing the hippo in an oversized clown suit. "


evet site tam aradığım eşylere cevap veriyor teşekkür ler Rahan.

Criminal transparancy olayıı tam öle diil bahsettiğim yani naısl anlatayım. Paint Shop un varmı orda customzie menusüne girdiğinde anlarsın. Böle ardarda oynatılan freamelerde eski frameyle aynı olan yerler transparant yapılıyor bu sayede dosyanın size ından faydalanılıyor fln. Ha evet bnm kullandım library de sorunlar var bir çoğunu düzellttim elimden geldiğince ama bu konuda bişiy yapamadım Sanırım bu site işime yarıyacak.[hline]Alma?
Mater?
Link to comment
Sosyal ağlarda paylaş

icq dan iritibata geçersek olur sanırım lib diil tam olarka yane bulduğun şekilde diil şu an bendekini baya modifiye ettim. bu OLE işime yaramaz ztne ya progmraı gösteririm analrsın ne dmeke siteidğimi framelerin hepsini alıp yollasa tamam o zaman sorun olmazda tek frame olmuyor gifin anlamı kalmıyor.

icq:75928066 ( çok online yakalıyamassın öss yüzünden)[hline]Alma?
Mater?
Link to comment
Sosyal ağlarda paylaş

×
×
  • Yeni Oluştur...