Döndüüm :)
Evet Arkadaşlar Bir Süreliğine İzmire Gitmem Gerekti Bu Zaman Zarfında Makalelerde Durdu.Dün Evime Dönüş Yaptım :P,Bu Sırada Yeni Bloglar Açtım.Belki İlginizi Çeker.Bağlantılarım Kısmında Bloglara Ulaşabilirsiniz.
Değişik Programlama Dillerinin Püf Noktaları
Evet Arkadaşlar Bir Süreliğine İzmire Gitmem Gerekti Bu Zaman Zarfında Makalelerde Durdu.Dün Evime Dönüş Yaptım :P,Bu Sırada Yeni Bloglar Açtım.Belki İlginizi Çeker.Bağlantılarım Kısmında Bloglara Ulaşabilirsiniz.
htt://www.csharpnedir.com adresinden alıntıdır.
Visual C#, Visual
Studio ailesinin yeni üyesidir, bu yeni dil c ve c++ temelleri üzerine kurulmasına
rağmen komponent temelli programlama tekniğini geliştirmek için birtakım yeni
özellikler eklenmiştir. C# dilinin sentaksı C ve C++ programcılarına çok tanıdık
gelecektir. Bundan şüpheniz olmasın.
Bundan sonraki
adımlarda projemizi nasıl derleyeceğimizi ve bu iki dosya hakkında detaylı bilgiyi
öğreneceğiz.
using
System;
namespace quicksort
{
///
/// Summary description for Class1.
///
class Class1
{
static void Main(string[]
args)
{
//
// TODO: Add code to start application
here
//
Console.WriteLine
("Hello, C#.NET World!");
}
}
}
// Bu satır derleyici
tarafından görülmez
/* Aynı zamanda bu blok da
derleyici tarafından görünmez*/
using komutu bize
sınıfın ismini namespace(isim alanı) kullanmadan kullanabilmemizi sağlar.
Aşağıda kırmızı ile yazılan yazılar using komutunun uygulamasının sonucudur.
using
System;
class Class1
{
static void Main(string[]
args)
{
System.Console.WriteLine ("Hello, C#.NET World!");
Console.WriteLine
("Hello, C#.NET World!");
}
}
// namespaces
ekleme
using System;
// namespace tanımlama
namespace MsdnAA
{
// uygulama sınıfı tanımlama
class QuickSortApp
{
// uygulama oluşturma
static void Main (string[] szArgs)
{
// Programın
hakkında
Console.WriteLine ("QuickSort
C#.NET Sample Application\n");
// kullanıcıdan bilgi alma
Console.Write
("Source: ");
string szSrcFile = Console.ReadLine
();
Console.Write ("Output: ");
string szDestFile = Console.ReadLine
();
}
}
}
Adım
5. Dizilerin Kullanımı
Programımız
sıralama yapmadan önce girişten satırları alarak bir dizi içinde saklaması gerekir.
Şimdi .NET temel sınıflarından olan ArrayList sınıfını inceleyeceğiz.
// isim alanı
ekleme
using System;
using System.Collections;
// isimalanı tanımlama
namespace c#nedircom
{
// uygulama sınıfı tanımlama
class QuickSortApp
{
// uygulama başlangıcı
static void Main (string[] szArgs)
{
Console.WriteLine ("QuickSort
C#.NET Sample Application\n");
// Dosya isimlerini almak için
komut yaz
Console.Write ("Source: ");
string szSrcFile = Console.ReadLine
();
Console.Write ("Output: ");
string szDestFile = Console.ReadLine
();
// TODO: Read contents of source file
ArrayList szContents = new ArrayList
();
}
}
}
string szElement
= "insert-me";
ArrayList szArray = new ArrayList ();
szArray.Add (szElement);
Dizinin var olan bir
elemanına ulaşabilmek için, diziye ait Item() metoduna ulaşmak istediğimiz elemanın
sıra(index) numarasını geçebiliriz.Kısaca [] operatörlerini kullanarak da
istediğimiz elemana Item() metodunu kullanmadan da ulaşabiliriz.
Console.WriteLine
(szArray[2]);
Console.WriteLine (szArray.Item (2));
ArrayList
sınıfının daha birçok metodu vardır, ancak biz bu uygulamada sadece ekleme ve okuma yapacağız.
ArrayList sınıfına ait tüm metod ve özellikleri öğrenmek için MSDN kitaplığına
başvurabilirsiniz.
// isimalanı
ekleme
using System;
using System.Collections;
class=newcode>using System.IO;
namespace MsdnAA
{
class QuickSortApp
{
static void Main (string[] szArgs)
{
string szSrcLine;
ArrayList szContents = new ArrayList
();
FileStream fsInput = new FileStream
(szSrcFile, FileMode.Open,FileAccess.Read);
StreamReader srInput = new StreamReader
(fsInput);
while ((szSrcLine = srInput.ReadLine
()) != null)
{
// dizinin sonuna
ekleme
szContents.Add (szSrcLine);
}
srInput.Close ();
fsInput.Close ();
// TODO: Buraya QuickSort fonksiyonu
gelecek
// sıraları satırları yazma
FileStream fsOutput = new FileStream
(szDestFile,FileMode.Create, FileAccess.Write);
StreamWriter srOutput = new StreamWriter
(fsOutput);
for (int nIndex = 0; nIndex <
szContents.Count; nIndex++)
{
// hedef dosyaya
satır yazma
srOutput.WriteLine
(szContents[nIndex]);
}
srOutput.Close ();
fsOutput.Close ();
// başarıyı kullanıcıya bildirme
Console.WriteLine ("\nThe sorted
lines have been written.\n\n");
}
}
}
// isim alanı
ekleme
using System;
using System.Collections;
using System.IO;
namespace c#nedircom
{
class QuickSortApp
{
static void Main (string[] szArgs)
{
... ... ...
// QuickSort fonksiyonuna parametrelerin geçişi
QuickSort (szContents, 0, szContents.Count
- 1);
... ... ...
}
//
QuickSort fonksiyonu
static void QuickSort (ArrayList szArray, int
nLower, int nUpper)
{
if (nLower < nUpper)
{
// Ayırma ve sıralama
işlemi
int nSplit = Partition
(szArray, nLower, nUpper);
QuickSort (szArray,
nLower, nSplit - 1);
QuickSort (szArray,
nSplit + 1, nUpper);
}
}
// QuickSort bölmelere ayırma
static int Partition (ArrayList szArray, int
nLower, int nUpper)
{
// İlk elemanı bulma
int nLeft = nLower + 1;
string szPivot = (string) szArray[nLower];
int nRight = nUpper;
// Dizi elemanlarını bölme
string szSwap;
while (nLeft <= nRight)
{
while (nLeft <=
nRight)
{
if
(((string) szArray[nLeft]).CompareTo (szPivot) > 0)
break;
nLeft
= nLeft + 1;
}
while (nLeft <=
nRight)
{
if
(((string) szArray[nRight]).CompareTo (szPivot) <= 0)
break;
nRight
= nRight - 1;
}
// Eğer uygunsa
yer değiştirme işlemi yap
if (nLeft < nRight)
{
szSwap
= (string) szArray[nLeft];
szArray[nLeft]
= szArray[nRight];
szArray[nRight]
= szSwap;
nLeft
= nLeft + 1;
nRight
= nRight - 1;
}
}
szSwap = (string) szArray[nLower];
szArray[nLower] = szArray[nRight];
szArray[nRight] = szSwap;
return nRight;
}
}
}
Yukarıdaki kodlarda
yeni gördüğümüz metod CompareTo() metodudur. Bu metod iki string ifadesini karşılaştırır.
BreakPoint bulunan
satırlar kırmızı ile gösterilir. BreakPoint ' i kaldırmak için ilgili satıra
sağ tıklayıp Remove BreakPoint menüsünü seçin.
Kod içinde adım
adım ilerlemek için menü çubuğundan Debug | Step Over ' ı seçerek sarı okun
hareketini izleyin. class=command>Debug | Step Into komutu gitmek istediğimiz
fonksiyona gitmemizi sağlar. Aşağıda iki defa Step Over menüsünü seçtikten sonra
kaynak kodumuzun görüntüsü mevcuttur.
Eğer programımızın
diğer bir sonlandırıcı nedene (yeni bir breakpoint, exception , exit, debug)
gelene kadar devam etmesini istiyorsanız Debug | Continue menülerini seçin.
Aynı zamanda bir
değişkene sağ tıklayarak QuickWatch menüsünü açabilirsiniz. QuickWatch ile değişken
hakkında daha detaylı bilgiler elde edebilirsiniz. Mesela diziler hakkında aşağıdaki
şekilde görüldüğü gibi bilgiler elde edilebilir.
Bu yazı "Microsoft MSDN Magazine" 'den Türkçeye
tercüme edilmiştir.
Gönderen Cutler zaman: 03:12 0 yorum
Etiketler: ASP, ASP.net, C#, giriş, programlama, visual basic
İşletim Sistemlerinde Görmüşsünüzdür,Transparan Formları Şimdi Bunları Beraber Yapacağız.
Simdi "Biz bunu nasil yapariz?" derseniz, VB de bu islemi API ile yapabiliyoruz. Yani windows un kullandigi sekildeki gibi.
Gelelim isin koduna. Asagidaki API leri modulde tanımlayın.
Public Declare Function GetWindowLong Lib "User32.dll" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Public Declare Function SetWindowLong Lib "User32.dll" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Public Declare Function SetLayeredWindowAttributes Lib "User32.dll" (ByVal hWnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long
Public Declare Function SetLayeredAttributes Lib "User32.dll" (ByVal hWnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long
Public Declare Function UpdateLayeredWindow Lib "User32.dll" (ByVal hWnd As Long, ByVal hdcDst As Long, pptDst As Any, psize As Any, ByVal hdcSrc As Long, pptSrc As Any, crKey As Long, ByVal pblend As Long, ByVal dwFlags As Long) As Long
Bunlarida yine module ekleyin.
Public Const GWL_STYLE = (-16)
Public Const GWL_EXSTYLE = (-20)
Public Const WS_EX_LAYERED = &H80000
Public Const ULW_COLORKEY = &H1
Public Const ULW_ALPHA = &H2
Public Const ULW_OPAQUE = &H4
Public Const AC_SRC_OVER = &H0
Public Const AC_SRC_ALPHA = &H1
Public Const AC_SRC_NO_PREMULT_ALPHA = &H1
Public Const AC_SRC_NO_ALPHA = &H2
Public Const AC_DST_NO_PREMULT_ALPHA = &H10
Public Const AC_DST_NO_ALPHA = &H20
Public Const LWA_COLORKEY = &H1
Public Const LWA_ALPHA = &H2
Simdi isi kolaylastirmak amaciyla function yapalim. Bu functionida module yazin.
Public Sub MakeTransparent(hWnd, Rate)
Dim WinInfo As Long
On Local Error Resume Next
WinInfo = GetWindowLong(hWnd, GWL_EXSTYLE)
WinInfo = WinInfo Or WS_EX_LAYERED
On Local Error Resume Next
SetWindowLong hWnd, GWL_EXSTYLE, WinInfo
On Local Error Resume Next
SetLayeredWindowAttributes hWnd, 0, Rate, LWA_ALPHA
End Sub
Sira geldi function i kullanmaya. Function çalisirken pencerenin daha dogrusu formun hWnd(Handle) numarasini alip formu transparan yapacağız. Buradaki rate ne diyeceksiniz. Rate saydam olma orani. Bunu 0 dan 254 e kadar sayı değeri olmak üzere ayarlayabilirsiniz.
Simdi biz fonksiyonu efekt olsun diye forma Fade In - Fade Out özelligi verelim.
Formun Load olayina;
For X = 0 To 254 Step -19
MakeTransparent Me.hWnd, X
Next
Me.Show
Formun Unload ve Terminate olayinada bu kodu yerlestirelim..
For X = 254 To 0 Step -19
MakeTransparent Me.hWnd, X
Next
End
!! Programi kapatirken End degilde Unload Me komutunu kullaniniz. !!
Iste bu kadar. Artik formunuz Fade In- Out seklinde açilip kapanacak. Bence bu güzel bi görünüm katacak programa.
Dikkat: Unutmayin ki bu API sadece Windows 2000, Windows XP ve üzeri sistemlerde mevcut aksi halde çalismaz(Gerçi fonksiyonda göz önünde bulundurmuyor)
Gönderen Cutler zaman: 13:51 0 yorum
Etiketler: ASP, ASP.net, programlama, visual basic
1. Visual Basic Menusunden Project --> References Bolumunden --- VB OpenGL API 1.2(ANSI) Secenegini Seçmeniz Gerekir.
2. Bir Form ismi Form1 bir Modul ismi Module1 ve bir de Timer ismi Timer1 koymanız gerekir.
'Forma Yazilacak Kisim Burdan itibaren Baslamaktadir....(Copy Paste yapsaniz yeterli olur.)
Option Explicit
Dim xAngle As GLfloat
Dim yAngle As GLfloat
Dim zAngle As GLfloat
Dim YScale As Long
Dim XScale As Long
Private Sub Form_Load()
Dim hGLRC As Long
Dim fAspect As GLfloat
Call InitializeArrays
Form1.ScaleMode = 3
xAngle = 0
yAngle = 0
zAngle = 0
SetupPixelFormat hDC
hGLRC = wglCreateContext(hDC)
wglMakeCurrent hDC, hGLRC
glEnable GL_DEPTH_TEST
glEnable GL_DITHER
glDepthFunc GL_LESS
glClearDepth 1
glClearColor 0, 0, 0, 0
glMatrixMode GL_PROJECTION
glLoadIdentity
If Form1.ScaleHeight > 0 Then
fAspect = Form1.ScaleWidth / Form1.ScaleHeight
Else
fAspect = 0
End If
gluPerspective 60, fAspect, 1, 2000
glViewport 0, 0, Form1.ScaleWidth, Form1.ScaleHeight
glMatrixMode GL_MODELVIEW
glLoadIdentity
glLightfv GL_LIGHT0, GL_POSITION, LightPos(0)
glEnable GL_LIGHTING
glEnable GL_LIGHT0
glShadeModel GL_SMOOTH
glFrontFace GL_CCW
glMaterialfv GL_FRONT, GL_SPECULAR, SpecRef(0)
glMateriali GL_FRONT, GL_SHININESS, 50
BuildCube
Form_Paint
End Sub
Private Sub Form_Paint()
Dim i As Integer
Dim a As Integer
Dim b As Integer
Dim c As Integer
glLoadIdentity
gluLookAt m_Translate_X, m_Translate_Y, m_Translate_Z, m_Translate_X + (100# * (Cos(m_camera_radsFromEast))), m_Translate_Y + m_camera_direction_y, m_Translate_Z - (100# * Sin(m_camera_radsFromEast)), 0#, 1#, 0#
glClear GL_COLOR_BUFFER_BIT Or GL_DEPTH_BUFFER_BIT
glPushMatrix
glTranslatef 0, 0, -3
glRotatef xAngle, 0.1, 0, 0
glRotatef yAngle, 0, 0.1, 0
glRotatef zAngle, 0, 0, 1
glCallList m_Cube
glPopMatrix
glPushMatrix
glTranslatef 0, -2, 0
glPopMatrix
SwapBuffers hDC
End Sub
Private Sub Form_Resize()
glViewport 0, 0, Form1.ScaleWidth, Form1.ScaleHeight
Form_Paint
End Sub
Private Sub Form_Unload(Cancel As Integer)
If hGLRC <> 0 Then
wglMakeCurrent 0, 0
wglDeleteContext hGLRC
End If
If hPalette <> 0 Then
DeleteObject hPalette
End If
End Sub
Sub BuildCube()
Dim i As Integer
Dim a As Integer
Dim b As Integer
Dim c As Integer
m_Cube = glGenLists(1)
glNewList m_Cube, GL_COMPILE_AND_EXECUTE
For i = 0 To TRIANGLE_COUNT - 1
a = index(i, 0)
b = index(i, 1)
c = index(i, 2)
Call RenderTriangle(a, b, c)
Next
glEnd
glEndList
End Sub
Private Sub Timer1_Timer()
YScale = YScale + 1
XScale = XScale + 1
yAngle = YScale
xAngle = XScale
If YScale = 359 Then
YScale = 0
XScale = 0
End If
Form_Paint
End Sub
'Forma Yazilacak Kisim Burda Sona erdi (Umarim Copy Paste Yapmissinizdir.)
-------------------------------------------------------------------------------------------------------------------------------------
'Burasida Module Yazilacak Kisim (yine Hatirlatirim Copy Paste Yapiniz.)
Option Explicit
Private Type PALETTEENTRY
peRed As Byte
peGreen As Byte
peBlue As Byte
peFlags As Byte
End Type
Private Type LOGPALETTE
palVersion As Integer
palNumEntries As Integer
palPalEntry(0 To 255) As PALETTEENTRY
End Type
Private Type PIXELFORMATDESCRIPTOR
nSize As Integer
nVersion As Integer
dwFlags As Long
iPixelType As Byte
cColorBits As Byte
cRedBits As Byte
cRedShift As Byte
cGreenBits As Byte
cGreenShift As Byte
cBlueBits As Byte
cBlueShift As Byte
cAlphaBits As Byte
cAlphaShift As Byte
cAccumBits As Byte
cAccumRedBits As Byte
cAccumGreenBits As Byte
cAccumBlueBits As Byte
cAccumAlpgaBits As Byte
cDepthBits As Byte
cStencilBits As Byte
cAuxBuffers As Byte
iLayerType As Byte
bReserved As Byte
dwLayerMask As Long
dwVisibleMask As Long
dwDamageMask As Long
End Type
Const PFD_TYPE_RGBA = 0
Const PFD_TYPE_COLORINDEX = 1
Const PFD_MAIN_PLANE = 0
Const PFD_DOUBLEBUFFER = 1
Const PFD_DRAW_TO_WINDOW = &H4
Const PFD_SUPPORT_OPENGL = &H20
Const PFD_NEED_PALETTE = &H80
Private Declare Function ChoosePixelFormat Lib "gdi32" (ByVal hDC As Long, pfd As PIXELFORMATDESCRIPTOR) As Long
Private Declare Function CreatePalette Lib "gdi32" (pPal As LOGPALETTE) As Long
Private Declare Sub DeleteObject Lib "gdi32" (hObject As Long)
Private Declare Sub DescribePixelFormat Lib "gdi32" (ByVal hDC As Long, ByVal PixelFormat As Long, ByVal nBytes As Long, pfd As PIXELFORMATDESCRIPTOR)
Private Declare Function GetDC Lib "gdi32" (ByVal hWnd As Long) As Long
Private Declare Function GetPixelFormat Lib "gdi32" (ByVal hDC As Long) As Long
Private Declare Sub GetSystemPaletteEntries Lib "gdi32" (ByVal hDC As Long, ByVal start As Long, ByVal entries As Long, ByVal ptrEntries As Long)
Private Declare Sub RealizePalette Lib "gdi32" (ByVal hPalette As Long)
Private Declare Sub SelectPalette Lib "gdi32" (ByVal hDC As Long, ByVal hPalette As Long, ByVal bln As Long)
Private Declare Function SetPixelFormat Lib "gdi32" (ByVal hDC As Long, ByVal i As Long, pfd As PIXELFORMATDESCRIPTOR) As Boolean
Private Declare Sub SwapBuffers Lib "gdi32" (ByVal hDC As Long)
Private Declare Function wglCreateContext Lib "OpenGL32" (ByVal hDC As Long) As Long
Private Declare Sub wglDeleteContext Lib "OpenGL32" (ByVal hContext As Long)
Private Declare Sub wglMakeCurrent Lib "OpenGL32" (ByVal l1 As Long, ByVal l2 As Long)
Public hPalette As Long
Public hGLRC As Long
Public LightPos(3) As GLfloat
Public SpecRef(3) As GLfloat
Public Diffuse(3) As GLfloat
Public Const TRIANGLE_COUNT = 12
Public vdata(23, 2) As GLfloat
Public vcolor(23, 2) As GLfloat
Public index(TRIANGLE_COUNT, 3) As GLfloat
Public m_Grid As Integer
Public m_Cube As Integer
Public m_Translate_X As Integer
Public m_Translate_Y As Integer
Public m_Translate_Z As Integer
Public m_camera_radsFromEast As GLfloat
Public m_translationUnit As Double
Public m_camera_direction_y As Integer
Sub FatalError(ByVal strMessage As String)
MsgBox "Fatal Error: " & strMessage, vbCritical + vbApplicationModal + vbOKOnly + vbDefaultButton1, "Fatal Error In " & App.Title
Unload frmMain
Set frmMain = Nothing
End
End Sub
Sub SetupPixelFormat(ByVal hDC As Long)
Dim pfd As PIXELFORMATDESCRIPTOR
Dim PixelFormat As Integer
pfd.nSize = Len(pfd)
pfd.nVersion = 1
pfd.dwFlags = PFD_SUPPORT_OPENGL Or PFD_DRAW_TO_WINDOW Or PFD_DOUBLEBUFFER Or PFD_TYPE_RGBA
pfd.iPixelType = PFD_TYPE_RGBA
pfd.cColorBits = 24
pfd.cDepthBits = 24
pfd.iLayerType = PFD_MAIN_PLANE
PixelFormat = ChoosePixelFormat(hDC, pfd)
If PixelFormat = 0 Then FatalError "Could not retrieve pixel format!"
SetPixelFormat hDC, PixelFormat, pfd
End Sub
Sub SetupPalette(ByVal lhDC As Long)
Dim PixelFormat As Long
Dim pfd As PIXELFORMATDESCRIPTOR
Dim pPal As LOGPALETTE
Dim PaletteSize As Long
PixelFormat = GetPixelFormat(lhDC)
DescribePixelFormat lhDC, PixelFormat, Len(pfd), pfd
If (pfd.dwFlags And PFD_NEED_PALETTE) <> 0 Then
PaletteSize = 2 ^ pfd.cColorBits
Else
Exit Sub
End If
pPal.palVersion = &H300
pPal.palNumEntries = PaletteSize
Dim redMask As Long
Dim GreenMask As Long
Dim BlueMask As Long
Dim i As Long
redMask = 2 ^ pfd.cRedBits - 1
GreenMask = 2 ^ pfd.cGreenBits - 1
BlueMask = 2 ^ pfd.cBlueBits - 1
For i = 0 To PaletteSize - 1
With pPal.palPalEntry(i)
.peRed = i
.peGreen = i
.peBlue = i
.peFlags = 0
End With
Next
GetSystemPaletteEntries frmMain.hDC, 0, 256, VarPtr(pPal.palPalEntry(0))
hPalette = CreatePalette(pPal)
If hPalette <> 0 Then
SelectPalette lhDC, hPalette, False
RealizePalette lhDC
End If
End Sub
Public Sub InitializeArrays()
m_Translate_X = 0
m_Translate_Z = 5
m_translationUnit = 1
m_camera_direction_y = 0
m_camera_radsFromEast = 1.56
LightPos(0) = 0
LightPos(1) = 2
LightPos(2) = 2
LightPos(3) = 1
SpecRef(0) = 1#
SpecRef(1) = 0#
SpecRef(2) = 0#
SpecRef(3) = 1#
'Front (0-3)
vdata(0, 0) = 1
vdata(0, 1) = 1
vdata(0, 2) = 1
vdata(1, 0) = 1
vdata(1, 1) = -1
vdata(1, 2) = 1
vdata(2, 0) = -1
vdata(2, 1) = -1
vdata(2, 2) = 1
vdata(3, 0) = -1
vdata(3, 1) = 1
vdata(3, 2) = 1
'back (4-7)
vdata(4, 0) = 1#
vdata(4, 1) = 1#
vdata(4, 2) = -1#
vdata(5, 0) = 1#
vdata(5, 1) = -1#
vdata(5, 2) = -1#
vdata(6, 0) = -1#
vdata(6, 1) = -1#
vdata(6, 2) = -1#
vdata(7, 0) = -1#
vdata(7, 1) = 1#
vdata(7, 2) = -1#
'right (8-11)
vdata(8, 0) = 1#
vdata(8, 1) = 1#
vdata(8, 2) = 1#
vdata(9, 0) = 1#
vdata(9, 1) = 1#
vdata(9, 2) = -1#
vdata(10, 0) = 1#
vdata(10, 1) = -1#
vdata(10, 2) = -1#
vdata(11, 0) = 1#
vdata(11, 1) = -1#
vdata(11, 2) = 1#
'left (12-15)
vdata(12, 0) = -1#
vdata(12, 1) = 1#
vdata(12, 2) = 1#
vdata(13, 0) = -1#
vdata(13, 1) = 1#
vdata(13, 2) = -1#
vdata(14, 0) = -1#
vdata(14, 1) = -1#
vdata(14, 2) = -1#
vdata(15, 0) = -1#
vdata(15, 1) = -1#
vdata(15, 2) = 1#
'Top (16-20)
vdata(16, 0) = 1#
vdata(16, 1) = 1#
vdata(16, 2) = 1#
vdata(17, 0) = 1#
vdata(17, 1) = 1#
vdata(17, 2) = -1#
vdata(18, 0) = -1#
vdata(18, 1) = 1#
vdata(18, 2) = -1#
vdata(19, 0) = -1#
vdata(19, 1) = 1#
vdata(19, 2) = 1#
'Botton
vdata(20, 0) = 1#
vdata(20, 1) = -1#
vdata(20, 2) = 1#
vdata(21, 0) = 1#
vdata(21, 1) = -1#
vdata(21, 2) = -1#
vdata(22, 0) = -1#
vdata(22, 1) = -1#
vdata(22, 2) = -1#
vdata(23, 0) = -1#
vdata(23, 1) = -1#
vdata(23, 2) = 1#
'Index
'front
index(0, 0) = 0
index(0, 1) = 1
index(0, 2) = 2
index(1, 0) = 0
index(1, 1) = 2
index(1, 2) = 3
'Back
index(2, 0) = 4
index(2, 1) = 6
index(2, 2) = 5
index(3, 0) = 4
index(3, 1) = 7
index(3, 2) = 6
'Right
index(4, 0) = 8
index(4, 1) = 9
index(4, 2) = 10
index(5, 0) = 8
index(5, 1) = 10
index(5, 2) = 11
'Left
index(6, 0) = 12
index(6, 1) = 14
index(6, 2) = 13
index(7, 0) = 12
index(7, 1) = 15
index(7, 2) = 14
'Top
index(8, 0) = 16
index(8, 1) = 18
index(8, 2) = 17
index(9, 0) = 16
index(9, 1) = 19
index(9, 2) = 18
'Bottom
index(10, 0) = 20
index(10, 1) = 21
index(10, 2) = 22
index(11, 0) = 20
index(11, 1) = 22
index(11, 2) = 23
'Color
'front
vcolor(0, 0) = 1
vcolor(0, 1) = 1
vcolor(0, 2) = 1
vcolor(1, 0) = 1
vcolor(1, 1) = 0
vcolor(1, 2) = 1
vcolor(2, 0) = 0
vcolor(2, 1) = 0
vcolor(2, 2) = 1
vcolor(3, 0) = 0
vcolor(3, 1) = 1
vcolor(3, 2) = 1
'back
vcolor(4, 0) = 1#
vcolor(4, 1) = 1#
vcolor(4, 2) = 0#
vcolor(5, 0) = 1#
vcolor(5, 1) = 0#
vcolor(5, 2) = 0#
vcolor(6, 0) = 0#
vcolor(6, 1) = 0#
vcolor(6, 2) = 0#
vcolor(7, 0) = 0#
vcolor(7, 1) = 1#
vcolor(7, 2) = 0#
'right
vcolor(8, 0) = 1#
vcolor(8, 1) = 1#
vcolor(8, 2) = 1#
vcolor(9, 0) = 1#
vcolor(9, 1) = 1#
vcolor(9, 2) = 0#
vcolor(10, 0) = 1#
vcolor(10, 1) = 0#
vcolor(10, 2) = 0#
vcolor(11, 0) = 1#
vcolor(11, 1) = 0#
vcolor(11, 2) = 1#
'left
vcolor(12, 0) = 0#
vcolor(12, 1) = 0.1
vcolor(12, 2) = 1#
vcolor(13, 0) = 0#
vcolor(13, 1) = 1#
vcolor(13, 2) = 0#
vcolor(14, 0) = 0#
vcolor(14, 1) = 0#
vcolor(14, 2) = 0#
vcolor(15, 0) = 0#
vcolor(15, 1) = 0#
vcolor(15, 2) = 1#
'Top
vcolor(16, 0) = 1#
vcolor(16, 1) = 1#
vcolor(16, 2) = 1#
vcolor(17, 0) = 1#
vcolor(17, 1) = 1#
vcolor(17, 2) = 0#
vcolor(18, 0) = 0#
vcolor(18, 1) = 1#
vcolor(18, 2) = 0#
vcolor(19, 0) = 0#
vcolor(19, 1) = 1#
vcolor(19, 2) = 1#
'Bottom
vcolor(20, 0) = 1#
vcolor(20, 1) = 0#
vcolor(20, 2) = 1#
vcolor(21, 0) = 1#
vcolor(21, 1) = 0#
vcolor(21, 2) = 0#
vcolor(22, 0) = 0#
vcolor(22, 1) = 0#
vcolor(22, 2) = 0#
vcolor(23, 0) = 0#
vcolor(23, 1) = 0#
vcolor(23, 2) = 1#
End Sub
Public Sub RenderTriangle(a As Integer, b As Integer, c As Integer)
Dim x1 As GLfloat
Dim y1 As GLfloat
Dim z1 As GLfloat
Dim lRC As Long
Dim x2 As GLfloat
Dim y2 As GLfloat
Dim z2 As GLfloat
Dim x3 As GLfloat
Dim y3 As GLfloat
Dim z3 As GLfloat
Dim v1(3) As GLfloat
Dim v2(3) As GLfloat
Dim v3(3) As GLfloat
Dim v(3) As GLfloat
Dim w(3) As GLfloat
Dim out(3) As GLfloat
Dim r1 As GLfloat
Dim g1 As GLfloat
Dim b1 As GLfloat
Dim r2 As GLfloat
Dim g2 As GLfloat
Dim b2 As GLfloat
Dim r3 As GLfloat
Dim g3 As GLfloat
Dim b3 As GLfloat
b1 = vcolor(a, 1)
g1 = vcolor(a, 2)
r2 = vcolor(b, 0)
b2 = vcolor(b, 1)
g2 = vcolor(b, 2)
r3 = vcolor(c, 0)
b3 = vcolor(c, 1)
g3 = vcolor(c, 2)
v1(0) = vdata(a, 0)
v1(1) = vdata(a, 1)
v1(2) = vdata(a, 2)
x1 = vdata(a, 0)
y1 = vdata(a, 1)
z1 = vdata(a, 2)
v2(0) = vdata(b, 0)
v2(1) = vdata(b, 1)
v2(2) = vdata(b, 2)
x2 = vdata(b, 0)
y2 = vdata(b, 1)
z2 = vdata(b, 2)
v3(0) = vdata(c, 0)
v3(1) = vdata(c, 1)
v3(2) = vdata(c, 2)
x3 = vdata(c, 0)
y3 = vdata(c, 1)
z3 = vdata(c, 2)
'--------------------------------------------------------------------
v(0) = x2 - x1
v(1) = y2 - y1
v(2) = z2 - z1
w(0) = x3 - x2
w(1) = y3 - y2
w(2) = z3 - z2
Call normcrossprod(v, w, out)
glBegin (GL_TRIANGLES)
'Flip the normal
glNormal3f -1 * out(0), -1 * out(1), -1 * out(2)
Diffuse(0) = r1
Diffuse(1) = b1
Diffuse(2) = g1
Diffuse(3) = 1
glMaterialfv GL_FRONT, GL_AMBIENT_AND_DIFFUSE, Diffuse(0)
glVertex3f v1(0), v1(1), v1(2)
Diffuse(0) = r2
Diffuse(1) = b2
Diffuse(2) = g2
Diffuse(3) = 1
glMaterialfv GL_FRONT, GL_AMBIENT_AND_DIFFUSE, Diffuse(0)
glVertex3f v2(0), v2(1), v2(2)
Diffuse(0) = r3
Diffuse(1) = b3
Diffuse(2) = g3
Diffuse(3) = 1
glMaterialfv GL_FRONT, GL_AMBIENT_AND_DIFFUSE, Diffuse(0)
glVertex3f v3(0), v3(1), v3(2)
glEnd
End Sub
Public Sub normalize(out() As GLfloat)
Dim d As GLfloat
d = Sqr(out(0) * out(0) + out(1) * out(1) + out(2) * out(2))
If (d = 0) Then
Exit Sub
End If
out(0) = out(0) / d
out(1) = out(1) / d
out(2) = out(2) / d
End Sub
Public Sub normcrossprod(v() As GLfloat, w() As GLfloat, out() As GLfloat)
'[Vx Vy Vz] X [Wx Wy Wz] =[(Vy*Wz-Wy*Vz),(Wx*Vz-Vx*Wz),(Vx*Wy-Wx*Vy)]
out(0) = v(1) * w(2) - w(1) * v(2)
out(1) = w(0) * v(2) - v(0) * w(2)
out(2) = v(0) * w(1) - w(0) * v(1)
Call normalize(out)
End Sub
'Module ve Programa yazilacaklar bu kadar umarim isinize yarar
Gönderen Cutler zaman: 13:43 0 yorum
Etiketler: directx, opengl, visual basic
Flood DDOS Koruması
Oncelikle Sayfanıza Ddos saldırısı yapanlardan yada sayfanızı durmadan yenıyenlerden kurtulmak için yapılmış ufak olsada bir önlem..
Öncelikle
If CInt(SESSION("koru" ))> 10 Then 'Ö10 yazan kısmı kendinzie göre değiştirebilirsiniz. Bu 10 Sayfanızın yenilenme oranıdır .. yani kişi saldırı ve sayfa yenileme sayısını secersiniz..
suanki haliyle 10 defa saldırı yada refresh yapılırsa kişi siteden ban'lanır.
Session.TimeOut=1
1 yazan yer ise saldırı yapan kişinin siteden kaç dk uzaklastırılması gerektiğini belirler.. ve dakika bazındadır (Şuanda 1 dk)
ve diğer kalan kısımlarıda kendinize göre ayarlayabilirsiniz
Alıntı:
< %
If SESSION("koru" )="" Then '
SESSION("koru" )=0
Else
SESSION("koru" )= SESSION("koru" ) + 1
End If
If CInt(SESSION("koru" ))> 10 Then '
Session.TimeOut=1
Response.Write("< title> Flood Korumasi < / title>")
RESPONSE.Write("
Visual Basicdeki bu fonksiyon kullanılarak , belirli bir karakter ile ayrılan metinleri, bileşenlerine ayrılabilmektedir.
Form üzerine 1 adet TextBox ve bir adet ListBox yerleştirelim.
Private Sub Text1_Change()
Dim vField As Variant
List1.Clear
If InStr(1, Trim(Text1), ";") Then
For Each vField In Split(Trim(Text1), ";")
List1.AddItem CStr(vField)
Next
End If
End Sub
Yeni başlayanlar için ipuçları
Listbox'a degisik renklerde item nasıl eklenir?
MSFlexGrid control kullanın
Form close butonu nasıl çalistirilir?
dim bClose as Boolean
Form'un QueryUnload event'ine ekle:
If bClose = false then cancel = true
Bir combo'nun içini diger bir combo'dan aldiklarinizla nasıl doldurursunuz?
Sub comboA_click()
comboB.text = comboA.text
End sub
Eger ComboA'daki seçili degerlerin ComboB'ye aktarilmasini istiyorsaniz
Sub comboA_click()
comboB.AddItem comboA.text
end sub
Birden fazla sütun içeren combolar nasıl yapılır?
Projenize Microsoft Forms 2.0 control ekleyin, oradaki
combo multi-column destekler.
Combo1.Clear
Combo1.ColumnCount = 2
Combo1.ListWidth = "6 cm" 'Total genislik
Combo1.ColumnWidths = "2 cm;4 cm" 'sütun genisligi
Combo1.AddItem "Ivir zivir"
Combo1.List(0, 1) = "Ivir zivir"
Dikine uzanan label nasıl yapılır?
Private Sub Form_Activate()
Dim s As String
Label1.Caption = "Visual Basic 2000"
For i = 1 To Len(Label1)
s = s & Mid$(Label1, i, 1) & vbCrLf
Next
Label1 = s
End Sub
dikkat: Label'i dikine çekmelisiniz
Joker karakterler kullanarak string nasıl aranır?
Dim Mystr As String
Mystr = "Hakan"
If Mystr Like "H*" Then
MsgBox "Bulundu"
Else
MsgBox "Bulunamadi"
End If
Her dile uyumlu tarih nasıl formatlanir?
Command1.Caption = Format$(Date, "Short Date")
Uyari isareti olan (X) mesaj kutusu nasıl yapılır?
MsgBox "Mesaj Buraya!!", vbCritical, "Önemli"
Içine tab yerlestirebileceginiz text kutulari nasıl yapılır?
Bir form içindeki tüm kontrollerin tabstoplarini False'e esitleyin
Text kutulari için kisayol tuslari nasıl belirlenir?
Kisayol tusuna sahip bir label hazirlayin ve label'in tabindex'ini textbox'un tabindexinden
bir asagiya esitleyin.
Command butondan popup menü nasıl yapılır?
Öncelikle menü editör ile bir menü yaratin.
Asagidaki gibi:
Button Menu (Menu name: mnuBtn, Visible: False - Unchecked)
....SubMenu Item 1 (Menu name: mnuSub, Index: 0)
....SubMenu Item 2 (Menu name: mnuSub, Index: 1)
....SubMenu Item 3 (Menu name: mnuSub, Index: 2)
....SubMenu Item 4 (Menu name: mnuSub, Index: 3)
ve bir tane de command button hazirlayin ve kodu yerlestirin:
Private Sub mnuSub_Click(Index As Integer)
Call MsgBox("Kliklenen menü: " & Index + 1, vbExclamation)
End Sub
Private Sub Command1_Click()
Call PopupMenu(mnuBtn)
End Sub
Not: Isterseniz daha güzel etki için "Call PopupMenu(mnuBtn)" çagrisi yerine
Call PopupMenu(Menu:=mnuBtn, X:=Command1.Left, Y:=Command1.Top + _
Command1.Height)
çagrisini yada;
Call PopupMenu(mnuBtn, vbPopupMenuCenterAlign, Command1.Left + _
(Command1.Width / 2), Command1.Top + Command1.Height)
çagrisini kullanin.
Text kutusunda olan degisiklik nasıl farkedilir?
'Amaç kullaniciyi yaptigi degisiklikler konusunda programi kapatmadan uyarmaktir.
Public Degisti As Boolean 'Bu degisken textbox'ta herhangi bir degisiklik olup olmadigini tutar.
Private Sub Text1_Change()
Degisti= True
End SubPrivate
Sub Form_Unload(Cancel As Boolean)
If Degisti Then
If Msgbox("Degisiklikler kaydedilsin mi?", vbYesNo, "Kayit'") = vbYes Then
'Buraya kaydetme ile ilgili kodlar gelecek
Degisti = False
' Degisti degerini tekrar False yap ki bir sonraki degisiklikte tekrar çalisabilsin. (Bu Önemli!!!!)
'Bunu sadece buradaki If - End If blogu arasina yaz
End If
End If
End Sub
Listbox'a bir text dosyasi içerigi nasıl yüklenir?
Private Sub Command1_Click()
Dim BulunanKelimeler As String
Open "C:\test.txt" For Input As #1
List1.Clear
While Not EOF(1)
Input #1, StringHold
List1.AddItem BulunanKelimeler
Wend
Close #1
End Sub
Textbox ve Combobox için Undo (geri al) fonksiyonu nasıl kullanılır?
'Bir Windows API undo islemi yapar
'asagidaki deklerasyonlari yaz
Declare Function SendMessage Lib "User" (ByVal hWnd As _
Integer, ByVal wMsg As Integer, ByVal wParam As _
Integer, lParam As Any) As Long
'asagidaki degismezleri yaz
Global Const WM_USER = &h400
Global Const EM_UNDO = WM_USER + 23
' Undo Sub 'lara asagidaki kodu yaz
UndoResult = SendMessage(myControl.hWnd, EM_UNDO, 0, 0)
'UndoResult = -1 olursa hata var demektir
'UndoResult sadece bir rakamdir ve hiç bir önemi yoktur. Sadece yer tutmasi için yazilir.
'VB'nin buna benzer gariplikleri vardir. Bir amaci varsa da ben bilmiyorum
Clipboard'dan text nasıl kopyalanir?
'Textbox'ta texti isaretle ve isaretlenen yeri clipboard'dan kopyaladiginla degistir:
txtBox.SelText = Clipboard.GetText
'Yada tüm text'i clipboarddan aldiginla degistir.
txtBox.Text = Clipboard.GetText
Clipboard'a text nasıl kopyalanir?
'Önce clipboard'u temizle
Clipboard.Clear
'Sonra kopyalanacak alani seç ve clipboard'a kopyala
Clipboard.SetText txtBox.Text, vbCFText
Toolbar'in click olayi nasıl kodlanir?
Private Sub Toolbar1_ButtonClick(ByVal Button As Button)
'button clicklerini saptamak için:
Select Case Button.Key
Case Is = "Exit"
If MsgBox("Çikmak istiyor musunuz??", vbQuestion + vbYesNo + _
vbDefaultButton2, "Programdan çikiyorsunuz!") = vbNo Then Exit Sub
Call ExitProgram
Case Is = "Repair"
Call Repairdb
Case Is = "Delete"
Call DeleteRoutine
Case Is = "Edit"
Call EditRoutine
Case Is = "New"
Call NewRoutine
Case Is = "Copy"
Call CopyToClipboard
Case Is = "Help"
Call ShowHelpContents
End Select
End Sub
Dogum gününden kişinin yaşı nasıl hesaplanır?
'Text'i Date data türüne çevir
Dim Birth as Date
Birth = DateValue(txtDOB)
'Yasi hesapla
Dim Age as Integer
Age = Int(DateDiff("D", Birth, Now) / 365.25)
4 rakamlı tarih nasıl kontrol edilir?
Public Function ValidDate(MDate)
'Amaç: 4 digitli "yyyy" formatindaki tarihi kontrol etmek; hata var ise kullaniciyi uyarmaktir.
'Input: Texbox'tan string
'Output: True yada False
'Default : False
ValidDate = False
'Eger uzunluk "m/d/yyyy" 'den kisa ise fonkiyondan çik
If Len(MDate) < 8 Then Exit Function
'Geçerli bir tarih türü girilmemisse terket
If IsDate(MDate) = False Then Exit Function
'Sonu "yyyy" ile bitmiyorsa yada baslamiyorsa terket
Dim StartDate As String
Dim EndDate As String
EndDate = Right(MDate, 4)
StartDate = Left(MDate, 4)
If ValidChar(EndDate, "0123456789") = False And _
ValidChar(StartDate, "0123456789") = False Then Exit Function
'Tüm bu testlerden geçilirse True yükle
ValidDate = True
End Function
Web adresleri nasıl açılır?
'Asagidaki kodu bir kontrolun click event'ine yaz
Dim iRet As Long
Dim Cevap As Integer
Cevap = MsgBox("www.hakanersoz.com adresini açmak istiyor musunuz?", vbInformation + vbYesNo, "www.hakanersoz.com")
Select Case Cevap
Case vbYes
iRet = Shell("start.exe http://www.hakanersoz.com", vbNormal)
Case vbNo
Exit Sub
End Select
Menüye 13x13 bitmaplar nasııl eklenir?
'Bir Picturebox control ekle
'Autosize özelligini 'True' yap unutma: bitmap olacak (Icon degil)
'maximum 13X13 bitmap olmali.
'Asagidaki deklerasyonlari bir Bas modulune ekle:
'Bu örnek VB4 içindir
Private Declare Function VarPtr Lib "VB40032.DLL" (variable As Any) As Long
Private Declare Function GetMenu Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function GetSubMenu Lib "user32" (ByVal hMenu As Long, ByVal nPos As Long) As Long
Private Declare Function SetMenuItemBitmaps Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long, ByVal hBitmapUnchecked As Long, ByVal hBitmapChecked As Long) As Long
Const MF_BYPOSITION = &H400&
'form load event içine asagidaki kodu yerlestir
Dim mHandle As Long, lRet As Long, sHandle As Long, sHandle2 As Long
mHandle = GetMenu(hwnd)
sHandle = GetSubMenu(mHandle, 0)
lRet = SetMenuItemBitmaps(sHandle, 0, MF_BYPOSITION, imOpen.Picture, imOpen.Picture)
lRet = SetMenuItemBitmaps(sHandle, 1, MF_BYPOSITION, imSave.Picture, imSave.Picture)
lRet = SetMenuItemBitmaps(sHandle, 3, MF_BYPOSITION, imPrint.Picture, imPrint.Picture)
lRet = SetMenuItemBitmaps(sHandle, 4, MF_BYPOSITION, imPrintSetup.Picture, imPrintSetup.Picture)
sHandle = GetSubMenu(mHandle, 1)
sHandle2 = GetSubMenu(sHandle, 0)
lRet = SetMenuItemBitmaps(sHandle2, 0, MF_BYPOSITION, imCopy.Picture, imCopy.Picture)
Çalisma aninda menü nasıl olusturulur?
Dim index As Integer
index = mnuHook.Count
Load mnuHook(index)
mnuHook(index).Caption = "New Menu Entry"
mnuHook(index).Visible = True
'Yeni girdiler mnuHook 'dan sonra olusur. Ancak unutmayin mnuHook halihazirda varolan bir menü elemanidir.
Text nasıl sifrelenir?
'encryption function :
Public Function Encrypt(ByVal Plain As String)
For I=1 To Len(Plain)
Letter=Mid(Plain,I,1)
Mid(Plain,I,1)=Chr(Asc(Letter)+1)
Next
Encrypt = Plain
End Sub
Public Function Decrypt(ByVal Encrypted As String)
For I=1 to Len(Encrypted)
Letter=Mid(Encrypted,I,1)
Mid(Encrypted,I,1)=Chr(Asc(Letter)-1)
Next
Decrypt = Encrypted
End Sub
Print Encrypt("This is just an example")
Print Decrypt("Uijt!jt!kvtu!bo!fybnqmf")
Form nasıl yavas yavas karartilir? (Fade to black)
Sub FormFade(frm As Form)
' Formu yavas yavas karartir
For icolVal% = 255 To 0 Step -1
DoEvents
frm.BackColor = RGB(icolVal%, icolVal%, icolVal%)
Next icolVal%
End Sub
Formun caption'una nasıl kayan yazı yazılır?
Sub KayanYazi(frm As Form)
Dim X As Integer
Dim current As Variant
Dim Y As String
Y = frm.Caption
frm.Caption = ""
frm.Show
For X = 0 To Len(Y)
If X = 0 Then
frm.Caption = ""
current = Timer
Do While Timer - current < 0.1
DoEvents
Loop
GoTo bitti
Else: End If
frm.Caption = left(Y, X)
current = Timer
Do While Timer - current < 0.05
DoEvents
Loop
bitti:
Next X
End Sub
Verilen kredi karti numarasinin geçerli olup olmadigi nasıl anlasilir?
'Asagidaki fonksiyonu bir BAS modulu içine kopyala
'Not: Tüm kredi kartlari belli bir algoritma ile üretilir. Rastgele sayilar bu algoritmaya uymaz. Bu fonksiyon bu hesaplamalari yapar
'Asagidaki Sub bir command butonuna ait olabilir. Kliklendiginde verilen kart numarasini kontrol eder.
Sub KartKontrolu_Click ( )
'KartGecerli degiskeni True olur eger fonksiyon dogru deger çevirirse
Dim KartGecerli as Boolean
KartGecerli = GecerliKartNumarasimi("4552012301230123")
If KartGecerli then
Msgbox "Geçerli kart"
else
Msgbox "Aman dikkat. Bu kart geçersiz!!!"
End if
End Sub
Public Function GecerliKartNumarasimi(ByVal pCardNumber As String) As Boolean
Dim CharPos As Integer
Dim CheckSum As Integer
Dim tChar As String
For CharPos = Len(pCardNumber) To 2 Step -2
CheckSum = CheckSum + CInt(Mid(pCardNumber, CharPos, 1))
tChar = CStr((Mid(pCardNumber, CharPos - 1, 1)) * 2)
CheckSum = CheckSum + CInt(Left(tChar, 1))
If Len(tChar) > 1 Then CheckSum = CheckSum + CInt(Right(tChar, 1))
Next
If Len(pCardNumber) Mod 2 = 1 Then CheckSum = CheckSum + CInt(Left(pCardNumber, 1))
If CheckSum Mod 10 = 0 Then
IsValidCreditCardNumber = True
Else
IsValidCreditCardNumber = False
End If
End Function
Ayin son günü nasıl bulunur?
Public Function AyinSonGunu(ByVal GecerliTarih As Date) As Byte
Dim SonGun As Byte
SonGun = DatePart("d", DateAdd("d", -1, DateAdd("m", 1, _
DateAdd("d", -DatePart("d", GecerliTarih) + 1, Date))))
AyinSonGunu = SonGun
End Function
Private Sub Command1_Click()
MsgBox Date & " tarihine ait ayin son günü : " & AyinSonGunu(Date)
End Sub
VB6 projeleri VB5'te nasıl açilir?
Notepad yada baska bir editör ile VB 6.vbp dosyasini açin ve bu dosyadaki
'Retained = 0' satirini silip dosyayi kaydedin.
Artik VB6 projelerini VB5'te açabilirsiniz.
MDB veritabanlarinda hataya neden olan Null field degerlerinden nasıl kurtulunur?
Default deger olarak Access string alanlari NULL deger tasir (Çift tirnak yani bos string girilmedikçe)
Null deger tasiyan bir alani recordset araciligiyla bir string içine kopyalamak istediginizde (sanirim birçogunuz bunu görmüstür) runtime type-mismatch hatasi olusur. Bundan kurtulmanin en kolay yolu & karakteri kullanarak her alan basina çift tirnak (yani bos string) eklemektir. Asagidaki örnek gibi:
Dim DB As Database
Dim RS As Recordset
Dim sAd As String
Set DB = OpenDatabase("Test.mdb")
Set RS = DB.OpenRecordset("Ad")
sAd = "" & RS![Adi Soyadi] ' Adi Soyadi alani içine "" ekleniyor, böylece null deger yokediliyor.
Ekran çözünürlügü nasıl bulunur?
Genelde ekran çözünürlügüne göre programlarinizdaki nesneleri resize etmek oldukça kullanisli bir yoldur.
Ekran çözünürlügünü söyle bulursunuz:
Asagidaki kodu form_load'a yazarsanız her açılışta ekran çözünürlüðünü kontrol eder.
Genislik = Screen.Width \ Screen.TwipsPerPixelX
Yukseklik = Screen.Height \ Screen.TwipsPerPixelY
Ekran_Cozunurlugu = Genislik & "x" & Yukseklik
Sonuç asagidaki gibi olur:
800x600
Veritabanina nasıl daha hizli ulasilir?
Bir recordset içinde daha hızlı döngü çalıstırmak için bir yol var. Genelde bir çok programcı aþagidaki kodu kullanır:
Do While Not Records.EOF 'Dosya sonuna kadar döngü baslat
Combo1.AddItem Records![Firma Adi] 'Combo'ya Records recordset'inin [Firma Adi] adli alanini ekle
Records.Movenext 'Bir sonraki kayda git
Loop
Buradaki problem her defasinda veritabaninin bir sonraki kayda gitmek için dosya sonuna ulasip ulasmadigini kontrol etmek zorunda olmasidir. Bu zorunluluk özellikle çok büyük veritabanlarinda büyük performans kayiplarina neden olur. Çözüm ise önce kayit adedini RecordCount ile bulmak ve For ---- Next döngüsü ile kayit okumaktir :
Records.MoveLast ' Recordset'in sonuna giderek kaç adet kayit oldugunu bulmalisiniz. Bu islemin bir kez yapilmasi yeterlidir.
KayitSayisi=Records.RecordCount 'Kayıt sayısı bir long deðiþken içine alındı
Records.MoveFirst 'Ilk kayda gel
For i =1 To KayitSayisi 'Þimdi kayıtları EOF telaþı olmadan birer birer okuyalim
Combo1.AddItem Records![Firma Adi]
Records.MoveNext
Next
ışte size garantili %33'lük performans artışı
Gökkusagi renklerinde text nasıl olusturulur?
1. Standart EXE projesi baslat
2. Asagidaki kodu Form'un Paint proc'una yaz:
Sub Form_Paint()
Dim I As Integer, X As Integer, Y As Integer
Dim C As String
Cls
For I = 0 To 91
X = CurrentX
Y = CurrentY
C = Chr(I)
Line -(X + TextWidth(C), Y = TextHeight(C)), QBColor(Rnd * 16), BF
CurrentX = X
CurrentY = Y
ForeColor = RGB(Rnd * 256, Rnd * 256, Rnd * 256)
Print "Merhaba Basic Programciligi"
Next
End Sub
3. Projeyi çalistirirsaniz formun degisik renklerde yaziyla kaplandigini görürsünüz.
and watch the form fill with lots of multi-coloured text
Text kutusundaki bosluklar nasıl yokedilir?
Kullanicilarin text kutusuna bosluk karakteri girmelerini engellemek için :
Textbox 'un KeyPress olayina asagidaki kodu yaz:
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 32 Then
KeyAscii = 0
End If
End Sub
Tek harekette text dosyasi nasıl yüklenir?
FileText fonksiyonunu kullanarak istediginiz dosyayi açar ve textbox içine yerlestirirsiniz.
Fonksiyonu Bas modulu içine yaz
Function FileText (filename$) As String
Dim dosya As Integer
dosya = FreeFile
Open filename$ For Input As #dosya
FileText = Input$(LOF( dosya), dosya)
Close # dosya
End Function
Text1.Text = FileText("c:\autoexec.bat") 'Text1 textbox'una tek hamlede autoexec.bat içerigi yüklenir.
Windows Control Panel (Denetim masasi) uzantilari VB ile nasıl açilir?
Option Explicit
Private strPanelAdi As String
Private Sub Command1_Click()
strPanelAdi = File1.filename
If strPanelAdi = "" Then
MsgBox "Bir .CPL dosyasi seçilmedi." & vbCrLf & _
"Windows Control Panel açiliyor.",vbInformation
End If
Shell "rundll32.exe shell32.dll,Control_RunDLL " & _
strPanelAdi, vbNormalFocus
End Sub
Private Sub Form_Load()
With File1
'Sadece Control Panel uzantili dosyalari göster
.Pattern = "*.CPL"
'FileListBox yalnizca System yada System32 dizinini hedef alsin:
.Filename = "C:\Windows\System"
End With
End Sub
Bellegi bosaltmak için tüm formlar nasıl unload edilir?
Public Sub UnloadAllForms()
Dim Form As Form
For Each Form In Forms
Unload Form
Set Form = Nothing
Next Form
End Sub
Bu prosedürü çalistirmak için en uygun yer ana formun unload event'idir
Kontroller nasıl taşınabilir? (Drag&Drop)
Burada bir picturebox form üzerinde drag&drop ile tasinmaktadir.
Option Explicit
Public globalX As Integer
Public globalY As Integer
Private Sub Form_DragDrop(Source As Control, X As Single, Y As Single)
Picture1.Move X - globalX, Y - globalY
End Sub
Private Sub Picture1_MouseDown(Button As Integer, _
Shift As Integer, X As Single, Y As Single)
Picture1.Drag vbBeginDrag
globalX = X
globalY = Y
End Sub
Kendi Popup menünüz bir textbox içinde nasıl gösterilir?
Bu ipucu ile standart Windows pop up menüsünü bastirir kendi popup menünüzü çalistirirsinz.
Private Sub Text1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 2 Then
With Text1
.Enabled = False
PopupMenu {KendiMenunuz}
.Enabled = True
.SetFocus
End With
End If
End Sub
Mesaj kutusunun ileri özellikleri nasıl kullanilir?
Dim Msg, Style, Title, Help, Ctxt, Cevap, MyString
Msg = "Devam edelim mi ?" ' Mesaji tanimla
Style = vbYesNo + vbCritical + vbDefaultButton2 'Butonlari tanimla
Title = "MsgBox Gösterimi" ' Title tanimla
Help = "DEMO.HLP" 'Bir help dosyasi bagla
Ctxt = 1000 ' Baslik tanimla
Cevap = MsgBox(Msg, Style, Title, Help, Ctxt) 'Masaji göster ve kullanici cevabini bekle
If Cevap = vbYes Then ' Kullanici evet'i seçti
MsgBox "Kabul ettiniz" ' Karsilik ver
Else ' Tersi durumda kullanici hayir'i seçmis demektir
MsgBox "Kabul etmediniz" ' Karsilik ver
End If
Menülerde seperatör (ayraç) nasıl yapılır?
mnu.Caption="-"
Listbox'taki tüm elemanlar nasıl seçilir?
'Asagidaki kodu cmdYeniEkle_Click() yordamina yaz
List1.AddItem Text1.Text ' Yeni bir item ekle
'Asagidaki kodu cmdTumunuSec_Click() yordamina yaz
For x = 0 To List1.ListCount - 1
List1.Selected(x) = True ' item(x) seç
Next x
Listview'deki satirlarin kaç tane oldugu nasıl sayilir?
lItemCount = lstCount.ListItems.Count
Msgbox lItemCount
Form konfetti ile nasıl doldurulur?
DrawWidth = 5 ' noktaciklarin genisligi
Dim x As Long
Dim y As Long
Dim r As Integer
Dim g As Integer
Dim b As Integer
Randomize
Do
x = Val(Screen.Width) * Rnd
y = Val(Screen.Height) * Rnd
bir sonraki noktacigin rengi rastgele seçilir
r = 255 * Rnd
g = 255 * Rnd
b = 255 * Rnd
Form1.PSet (x, y), RGB(r, g, b)
Loop
Form üzerindeki Picturebox nasıl ortalanir?
Picture1.Left = (Form1.Width - Picture1.Width) / 2
Clipboard kullanarak bir Picturebox içerigi resim diger bir picturebox'a nasıl kopyalanir?
Command1_Click()
Clipboard.Clear 'Clipboard'i mutlaka sil
Clipboard.SetData Picture1.Picture
Command2_Click()
Picture2.Picture = Clipboard.GetData ' Clipboard içerigini Picture2 içine yapistir.
Mouse pointer nasıl saklanir?
Bu is için ShowCursor API'si kullanilir. Asagidaki kodu bir module içine yaz:
Declare Function ShowCursor Lib "user32" (ByVal bShow
As Long) As Long
Bu kod mouse imlecini saklar:
FareImleci = ShowCursor(False)
Bu kod mouse imlecini görünür hale getirir:
FareImleci = ShowCursor(True)
Programiniz disinda keypress nasıl saptanir?
GetAsyncKeyState API'si kullanilir. Asagidaki kodu module içine yazin
Declare Function GetAsyncKeyState Lib "user32"
(ByVal vKey As Long) As Integer
' Asagidaki constant TAB tusu için. Diger tuslar için
' API Text Viewer'i kullanin
Public Const VK_TAB = &H9
'Timer1_Timer() içine asagidaki kodu ekleyin
If GetAsyncKeyState(VK_TAB) Then
Beep ' TAB'a basilirsa beep
End If
Yazdirma islemi nasıl iptal edilir?
'Bu örnekte ayrica birden fazla sayfanin nasıl yazilacagi da gösteriliyor
Printer.Print "Page 1"
Printer.Newpage
Printer.Print "Page 2"
Printer.KillDoc
Resim nasıl yazdırılır?
Printer.PaintPicture Picture1.Picture
Printer.EndDoc
Windows'un Belgeler içerigi nasıl silinir?
Bir module asagidaki API deklerasyonunu ekle:
Declare Sub SHAddToRecentDocs Lib "shell32.dll" (ByVal uFlags As Long,
ByVal pv As String)
Herhangi bir click içine de asagidaki kodu ekle:
SHAddToRecentDocs(2,vbNullString)
Windows'un Belgeler içine nasıl ekleme yapılır?
Bir module asagidaki API deklerasyonunu ekle:
Declare Sub SHAddToRecentDocs Lib "shell32.dll" (ByVal uFlags As Long,
ByVal pv As String)
Herhangi bir click içine de asagidaki kodu ekle:
Dim ekleme as String
ekleme="c:\falan dizin\filan dosya.txt"
SHAddToRecentDocs(2,ekleme)
Alan adina göre bir Recordset içindeki kayitlar nasıl siraya konur?
'Bu kod tüm kayitlari Z-A (geriye dogru) siraya dizer
' A-Z (ileri dogru) sirasi isterseniz ,DESC yerine ASC kullanin.
Dim DB as Database
Dim Kayitlar as Recordset
Set Kayitlar = DB.OpenRecordset("SELECT * FROM _
Personel " & "ORDER BY Personel.Adi DESC;")
Personel tablosundan tüm kayitlari Adi (personel adi) field degerine göre azalan (Z-A ) sekilde siraya dizer
Listbox'u Access (mdb) veritabanina nasıl baglarsiniz?
On Error GoTo Hata_Kontrol
Dim DB as Database
Dim Kayitlar as Recordset
Dim X as Long, record_count as Long
'Veritabanini açalim
Set DB = OpenDatabase("Ogrenci.mdb", dbOpenSnapshot)
Set Kayitlar = DB.OpenRecordset("Ogrenciler")
' Dikkat ederseniz asagida yapilan islem önce veritabaninin sonuna gitmek, RecordCount degerini
' ögrenmek ve sonra tekrar veritabani basina dönmektir. Veritabani sonuna gitmeden kaç adet kayit
' oldugunu ögrenemezsiniz.
Kayitlar.MoveLast
X = Kayitlar.RecordCount
Kayitlar.MoveFirst
' Listbox içine adlari yerlestirelim
' Ilk kayita geldikten sonra artik sirayla ögrenci adlarini listbox içine alabiliriz
Do
List1.AddItem Kayitlar!OgrenciAdi
Y = Y + 1
Kayitlar.MoveNext
Loop Until Y = X ' X = Recordcount, yani son kayit
Hata_Kontrol:
Select Case (Err)
Case 3021 ' Kayit yok
record_count = 0 'Kayit yoksa degeri 0 a esitleyelim.
Exit Sub
List1.Refresh
End Select
Bir form nasıl asagi ve yukari katlanir? (açilista splash screen olarak kullanmak üzere..)
Sub FormuYukariKatla(frm As Form, yukari As Integer)
' Formunuzun Scalemode property'sine dikkat edin. Eger degeri pixel ise
' ve siz twip deger kullanirsaniz form sonsuz bir döngü içinde katllanir.
' formunuzun ne kadar katlanmasini istiyorsaniz yukari degerini o kadar yükseltin
' Açilista splash screen olarak kullanilir...
Dim NereyeKadar
NereyeKadar = frm.Height - yukari
If NereyeKadar <= 0 Then Exit Sub
If yukari < 0 Then Exit Sub
Do
frm.Height = frm.Height - 1
DoEvents
Loop Until frm.Height <= NereyeKadar
End Sub
Sub FormuAsagiKatla(frm As Form, asagi As Integer)
'Yine scalemode'a dikkatedin!
' Formun ne kadar asagi katlanmasini istiyorsaniz "asagi " degerini o kadar büyütün
Dim NereyeKadar
NereyeKadar = frm.Height + yukari
If yukari < 0 Then Exit Sub
Do
frm.Height = frm.Height + 1
DoEvents
Loop Until frm.Height >= NereyeKadar
End Sub
'Asagidaki sub yordamimiz çagirir
Private Sub Command1_Click()
Call FormuAsagiKatla(Form1, 100)
End Sub
isEven fonksiyonu nasıl kullanilir?
'Bu fonksiyon tek sayilarda TRUE döndürür
Function isEven(n As Integer) As Boolean
isEven = True
If n And 1 Then isEven = False
End Function
Dosya boyutu nasıl ögrenilir?
Aslinda dosya boyutu ögrenmek kolaydir. Buradaki ipucu kullanicinyn seçtigi dosyalarin boyutunu çalisma aninda buluyor.
Bir form üzerine bir dirlistbox (lstDizin) ve bir filelistbox (lstDosya) ve
bir Label (lblDosyaBoyutu) yerlestirin.
Kullanici istedigi dizine gidebilir ve dosya seçebilir. Bu program kullanicinin seçtigi dosyalarin boyutunu gösterecek:
Private Sub cmdDosyaBoyutunuGoster_Click()
Dim strDosyaTemp As String
Dim strBoyutTemp As String
Dim strDizin As String
Dim strDosya As String
' Kullanicinin seçtigi dizin ve dosya kutulari araciligiyla degiskenlerimize deger yüklüyoruz:
strDizin = lstDizin.Path
strDosya = lstDosya.File
' Yukaridan alinan degerlerle ulasilan path degerini geçici dosya degiskenine yükleyip
' o degiskenin dosya boyutunu hesaplatiyoruz.:
strDosyaTemp = strDizin & "\" & strDosya
strBoyutTemp = FileLen(strDosyaTemp)
lblDosyaBoyutu.Caption = strDosyaTemp & " adli dosya " & _
Format(strBoyutTemp, "#,##0") & " byte boyutundadir."
End Sub
Title bar nasıl yanıp söner?
Yeni bir EXE projesi aç ve bir modul içine asagidaki WinApi'yi yaz:
Public Declare Function FlashWindow Lib "user32" (ByVal hwnd As Long, _
ByVal bInvert As Long) As Long
Bir Form üzerine bir timer ve 2 commandbutton yerlestir (özellikleri sagida) :
command1.caption="Baslat"
command2.caption="Durdur"
timer1.interval=500 'yarim saniyede bir yanpi sönecek
timer1.enabled=false
Private Sub Timer1_Timer()
a& = FlashWindow(Me.hwnd, 1)
End Sub
Private Sub Command1_Click() 'Programi çalistirir ve form caption'u yanip söner
Timer1.Enabled = True
End Sub
Private Sub Command2_Click() 'Yanip sönme isini kapatir
Timer1.Enabled = False
End Sub
Ctrl-Alt-Delete ve Ctrl-Esc tus kombinasyonlarinin çalismasi nasıl iptal edilir?
Asagidaki kodu projenizin declarations kismina yazin:
Private Declare Function SystemParametersInfo Lib _
"user32" Alias "SystemParametersInfoA" (ByVal uAction _
As Long, ByVal uParam As Long, ByVal lpvParam As Any, _
ByVal fuWinIni As Long) As Long
Sub CtrlAltDeleteKapat(Kapali As Boolean)
Dim X As Long
X = SystemParametersInfo(97, Kapali, CStr(1), 0)
End Sub
Ctrl-Alt-Delete kombinasyonunu kapatmak için:
Call CtrlAltDeleteKapat(True)
Ctrl-Alt-Delete kombinasyonunu açmak için:
Call CtrlAltDeleteKapat(False)
Sistemin bir ses kartina sahip olup olmadigi nasıl bulunur?
Asagidaki kodu projenizin declarations kismina yazin:
Declare Function waveOutGetNumDevs Lib "winmm.dll" _
Alias "waveOutGetNumDevs" () As Long
Dim i As Integer
i = waveOutGetNumDevs()
If i > 0 Then
MsgBox "Sisteminiz ses dosyalarini çalabilir.", _
vbInformation, "Sound Card Test"
Else
MsgBox "Sisteminiz ses dosyalarini çalamaz.", _
vbInformation, "Sound Card Test"
End If
Hangi kullanicinin login yaptigi nasıl anlasilir?
Dim s As String
Dim cnt As Long
Dim dl As Long
Dim AktifKullanici as String
cnt = 199
s = String$(200, 0)
dl = GetUserName(s, cnt)
If dl <> 0 Then AktifKullanici = Left$(s, cnt) Else AktifKullanici = ""
Asagidaki API fonksiyonunu ya formun decleration kismina yada bir modul içine yazacaksinz:
Declare Function GetUserName Lib "advapi32.dll" Alias _
"GetUserNameA" (ByVal lpBuffer As String, nSize As Long) _
As Long
Bos disk alanı nasıl saptanır?
GetDiskFreeSpace API fonksiyonunu kullanmalisiniz. Bu fonksiyonun declarasyonu söyledir:
Declare Function GetDiskFreeSpace Lib "kernel32" Alias _
"GetDiskFreeSpaceA" (ByVal lpRootPathName As String, _
lpSectorsPerCluster As Long, lpBytesPerSector As Long, _
lpNumberOfFreeClusters As Long, lpTotalNumberOfClusters _
As Long) As Long
Dim SectorsPerCluster&
Dim BytesPerSector&
Dim NumberOfFreeClusters&
Dim TotalNumberOfClusters&
Dim BosAlan&
temp& = GetDiskFreeSpace("c:\", SectorsPerCluster, _
BytesPerSector, NumberOfFreeClusters, TotalNumberOfClusters)
' BosAlan degiskeni toplam bos byte degerini tutar:
BosAlan = NumberOfFreeClusters * SectorsPerCluster * _
BytesPerSector
Bir form altina nasıl gölge eklenir ve form yukarida hissi verilir?
Formlarin altinda bulunan gölgeleri merak etmissinizdir. Formu sanki birkaç santimetre havada duruyormus hissi veren bu isleme "Dithering" denir:
Asagidaki kodu bir forma ekleyin.
Sub Dither(vForm As Form)
Dim intLoop As Integer
vForm.DrawStyle = vbInsideSolid
vForm.DrawMode = vbCopyPen
vForm.ScaleMode = vbPixels
vForm.DrawWidth = 2
vForm.ScaleHeight = 256
For intLoop = 0 To 255
vForm.Line (0, intLoop)-(Screen.Width, intLoop - 1), _
RGB(0, 0,255 -intLoop), B
Next intLoop
End Sub
Kodu çalistirmak için formun Activate olayina ise asagidaki kodu ekleyin:
Form_Activate ()
Dither Me
Kontroller nasıl gölgelendirilir?
Yeni bir proje baslatip form üzerine bir textbox yerlestirin
Asagidakini bir module yerlestirin:
Global Const GFM_BACKSHADOW = 1
Global Const GFM_DROPSHADOW = 2
Public Sub ControlShadow(f As Form, C As Control, shadow_effect _
As Integer, shadow_width As Integer, shadow_color As Long)
Dim shColor As Long
Dim shWidth As Integer
Dim oldWidth As Integer
Dim oldScale As Integer
shWidth = shadow_width
shColor = shadow_color
oldWidth = f.DrawWidth
oldScale = f.ScaleMode
f.ScaleMode = 3
f.DrawWidth = 1
Select Case shadow_effect
Case GFM_DROPSHADOW
f.Line (C.Left + shWidth, C.Top + shWidth)-Step(C.Width - 1, _
C.Height - 1), shColor, BF
Case GFM_BACKSHADOW
f.Line (C.Left - shWidth, C.Top - shWidth)-Step(C.Width - 1, _
C.Height - 1), shColor, BF
End Select
f.DrawWidth = oldWidth
f.ScaleMode = oldScale
End Sub
Form'un Load procedurüne asagidaki kodu ekleyin:
Private Sub Form_Load()
Dim r
r = ControlShadow(me,text1,1,2,black)
End Sub
Title bar'ın rengi nasıl deðiþtirilir?
Windows'un tüm desktop renklerini SetSysColors API fonksiyonu ile degistirebilirsiniz.
Bu fonksiyon 3 parametre alir :
1. Rengi degisecek elemanlarin sayisi
2. Color nesnesi degismezleri (const)
3. RGB degeri
API:
Declare Function SetSysColors Lib "user32" Alias _
"SetSysColors" (ByVal nChanges As Long, lpSysColor As _
Long, lpColorValues As Long) As Long
Degismezler:
Public Const COLOR_SCROLLBAR = 0 'Scrollbar rengi
Public Const COLOR_BACKGROUND = 1 'Duvarkagidi yokken masaüstü arkaplan rengi
Public Const COLOR_ACTIVECAPTION = 2 'Aktif pencere adi rengi
Public Const COLOR_INACTIVECAPTION = 3 'Aktif olmayan pencere adinin rengi
Public Const COLOR_MENU = 4 'Menu
Public Const COLOR_WINDOW = 5 'Windows arkaplan
Public Const COLOR_WINDOWFRAME = 6 'Pencere çerçevesi
Public Const COLOR_MENUTEXT = 7 'Pencere Texti
Public Const COLOR_WINDOWTEXT = 8 '3D koyu gölge (Win95)
Public Const COLOR_CAPTIONTEXT = 9 'Pencere caption text rengi
Public Const COLOR_ACTIVEBORDER = 10 'Aktif pencere sinirlari rengi
Public Const COLOR_INACTIVEBORDER = 11 'Inaktif pencere sinirlari rengi
Public Const COLOR_APPWORKSPACE = 12 'MDI desktop arkaplan rengi
Public Const COLOR_HIGHLIGHT = 13 ' seçili alan arkaplan rengi
Public Const COLOR_HIGHLIGHTTEXT = 14 'Seçili menü rengi
Public Const COLOR_BTNFACE = 15 'Button
Public Const COLOR_BTNSHADOW = 16 '3D buton gölgeleme
Public Const COLOR_GRAYTEXT = 17 'Gri text
Public Const COLOR_BTNTEXT = 18 'Button text
Public Const COLOR_INACTIVECAPTIONTEXT = 19 'Inactive pencere rengi
Public Const COLOR_BTNHIGHLIGHT = 20 'Butonun 3D isaretlenmesi rengi
Aktif pencere title bar rengini degistirmek için :
t& = SetSysColors(1, COLOR_ACTIVECAPTION, RGB(255,0,0))
Bu örnek kirmiziya çevirir