Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

C# to WIN32 API

[es] :: C/C++ programiranje :: C# to WIN32 API

[ Pregleda: 2853 | Odgovora: 13 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

mostart
Ivo Bandić
mostar, BiH

Član broj: 100627
Poruke: 18
*.tel.net.ba.

Sajt: www.mostart.blogspot.com


Profil

icon C# to WIN32 API19.10.2006. u 15:06 - pre 213 meseci
trebao bih neke upute kako da ovu aplikaciju iz C# prebacim u win32 API!
radi se o jednostavnom proogramu za crtanje. ima jedan prozor i 5 dugmadi kojima mjenjam boje.


using System;
using System.Drawing;
using System.Drawing.Imaging;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.IO;



namespace crta
{
//
//kratak opis za obrazac form
//

public class Form1 : System.Windows.Forms.Form
{

Bitmap bitmap = null;
Bitmap curBitmap = null;
Graphics curGraphics;
SolidBrush curBrush, black, red, blue, grin, grej, jelov;
Size fullSize;

int x, y;
bool write;
private System.Windows.Forms.Button button1;
private System.Windows.Forms.Button button2;
private System.Windows.Forms.Button button3;
private System.Windows.Forms.Button button4;
private System.Windows.Forms.Button button5;
private System.Windows.Forms.Button button6;
private System.Windows.Forms.Button button7;
private System.Windows.Forms.Button button8;
private System.Windows.Forms.SaveFileDialog saveFileDialog1;


private System.ComponentModel.Container components = null;

public Form1()
{
//
// Neophodno za podršku Windows Forms Designera
//
InitializeComponent();

SetStyle(ControlStyles.UserPaint, true);
SetStyle(ControlStyles.AllPaintingInWmPaint, true);
SetStyle(ControlStyles.DoubleBuffer, true);

}

///
/// Oslobodite korištene resurse.
///
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}

#region Windows Form Designer generated code
///
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
///
private void InitializeComponent()
{
this.button1 = new System.Windows.Forms.Button();
this.button2 = new System.Windows.Forms.Button();
this.button3 = new System.Windows.Forms.Button();
this.button4 = new System.Windows.Forms.Button();
this.button5 = new System.Windows.Forms.Button();
this.button6 = new System.Windows.Forms.Button();
this.button7 = new System.Windows.Forms.Button();
this.button8 = new System.Windows.Forms.Button();
this.saveFileDialog1 = new System.Windows.Forms.SaveFileDialog();
this.SuspendLayout();
//
// button1
//
this.button1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.button1.Location = new System.Drawing.Point(584, 0);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(64, 23);
this.button1.TabIndex = 1;
this.button1.Text = "Obriši sve";
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// button2
//
this.button2.BackColor = System.Drawing.Color.Black;
this.button2.ForeColor = System.Drawing.SystemColors.ActiveCaptionText;
this.button2.Location = new System.Drawing.Point(0, 0);
this.button2.Name = "button2";
this.button2.Size = new System.Drawing.Size(64, 23);
this.button2.TabIndex = 2;
this.button2.Text = "Crna";
this.button2.Click += new System.EventHandler(this.button2_Click);
//
// button3
//
this.button3.BackColor = System.Drawing.Color.Red;
this.button3.Location = new System.Drawing.Point(64, 0);
this.button3.Name = "button3";
this.button3.Size = new System.Drawing.Size(64, 23);
this.button3.TabIndex = 3;
this.button3.Text = "Crvena";
this.button3.Click += new System.EventHandler(this.button3_Click);
//
// button4
//
this.button4.BackColor = System.Drawing.Color.Blue;
this.button4.Location = new System.Drawing.Point(128, 0);
this.button4.Name = "button4";
this.button4.Size = new System.Drawing.Size(64, 23);
this.button4.TabIndex = 4;
this.button4.Text = "Plava";
this.button4.Click += new System.EventHandler(this.button4_Click);
//
// button5
//
this.button5.BackColor = System.Drawing.Color.Green;
this.button5.Location = new System.Drawing.Point(192, 0);
this.button5.Name = "button5";
this.button5.Size = new System.Drawing.Size(64, 23);
this.button5.TabIndex = 5;
this.button5.Text = "Zelena";
this.button5.Click += new System.EventHandler(this.button5_Click);
//
// button6
//
this.button6.BackColor = System.Drawing.Color.Yellow;
this.button6.Location = new System.Drawing.Point(256, 0);
this.button6.Name = "button6";
this.button6.Size = new System.Drawing.Size(64, 23);
this.button6.TabIndex = 6;
this.button6.Text = "Žuta";
this.button6.Click += new System.EventHandler(this.button6_Click);
//
// button7
//
this.button7.Location = new System.Drawing.Point(320, 0);
this.button7.Name = "button7";
this.button7.TabIndex = 7;
this.button7.Text = "Gumica";
this.button7.Click += new System.EventHandler(this.button7_Click);
this.button7.Paint += new System.Windows.Forms.PaintEventHandler(this.onPaint);
this.button7.MouseDown += new System.Windows.Forms.MouseEventHandler(this.mouseDown);
//
// button8
//
this.button8.Location = new System.Drawing.Point(456, 0);
this.button8.Name = "button8";
this.button8.Size = new System.Drawing.Size(96, 23);
this.button8.TabIndex = 8;
this.button8.Text = "Bože Sacuvaj";
this.button8.Click += new System.EventHandler(this.button8_Click);
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.BackColor = System.Drawing.Color.LightGray;
this.ClientSize = new System.Drawing.Size(648, 266);
this.Controls.Add(this.button8);
this.Controls.Add(this.button7);
this.Controls.Add(this.button6);
this.Controls.Add(this.button5);
this.Controls.Add(this.button4);
this.Controls.Add(this.button3);
this.Controls.Add(this.button2);
this.Controls.Add(this.button1);
this.Cursor = System.Windows.Forms.Cursors.Hand;
this.HelpButton = true;
this.Name = "Form1";
this.Text = "CRTA!";
this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.mouseDown);
this.Load += new System.EventHandler(this.Form1_Load);
this.MouseUp += new System.Windows.Forms.MouseEventHandler(this.mouseUp);
this.Paint += new System.Windows.Forms.PaintEventHandler(this.onPaint);
this.MouseMove += new System.Windows.Forms.MouseEventHandler(this.mouseMove);
this.ResumeLayout(false);

}
#endregion

///
/// Glavna ulazna tocka za aplikaciju.
///
[STAThread]
static void Main()
{
Application.Run(new Form1());
}

string m_strFileName = "";
public void RefreshFormBackground()
{
// Clone the form and use it as a background image
curBitmap = bitmap.Clone(new Rectangle(0, 0, this.Width, this.Height),
bitmap.PixelFormat);
this.BackgroundImage = curBitmap;

}

private void Form1_Closed(object sender, System.EventArgs e)
{


curBrush.Dispose();
curGraphics.Dispose();

}

private void Form1_Load(object sender, System.EventArgs e)
{
// Get form size
fullSize = SystemInformation.PrimaryMonitorMaximizedWindowSize;
// Create a bitmap
bitmap = new Bitmap(fullSize.Width, fullSize.Height);
// Give the bitmap to a graphics object
curGraphics = Graphics.FromImage(bitmap);
// Use the background color of the form
curGraphics.Clear(this.BackColor);



black = new SolidBrush(Color.Black);
red = new SolidBrush(Color.Red);
blue = new SolidBrush(Color.Blue);
jelov = new SolidBrush(Color.Yellow);
grin = new SolidBrush(Color.Green);
grej = new SolidBrush(Color.LightGray);
curBrush = grej;
write = false;
}


private void button1_Click(object sender, System.EventArgs e)
{
curGraphics.Clear(this.BackColor);
RefreshFormBackground();
}

private void mouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
{
// At every mouse mouse, get the current x and y position
// Capture the background
x = e.X;
y = e.Y;
RefreshFormBackground();
}

private void mouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
{
write = false;
}

private void mouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
x = e.X;
y = e.Y;
write = true;
}


private void onPaint(object sender, System.Windows.Forms.PaintEventArgs e)
{
// When mouse is down, fill an ellipse at the current x and y position
if (write)
{
curGraphics.FillEllipse(curBrush, x, y, 5, 5);
}
}

private void button2_Click(object sender, System.EventArgs e)
{
curBrush = black;
}

private void button3_Click(object sender, System.EventArgs e)
{
curBrush = red;
}

private void button4_Click(object sender, System.EventArgs e)
{
curBrush = blue;
}

private void button5_Click(object sender, System.EventArgs e)
{
curBrush = grin;
}

private void button6_Click(object sender, System.EventArgs e)
{
curBrush = jelov;
}

private void button7_Click(object sender, System.EventArgs e)
{
curBrush = grej;
}

private void button8_Click(object sender, System.EventArgs e)
{
SaveFileDialog saveFileDialog1 = new SaveFileDialog();
saveFileDialog1.Filter = "JPeg Image|*.jpg|Bitmap Image|*.bmp|Gif Image|*.gif";
saveFileDialog1.Title = "Save an Image File";
saveFileDialog1.ShowDialog();
// If the file name is not an empty string open it for saving.
if(saveFileDialog1.FileName != "")
{
// Saves the Image via a FileStream created by the OpenFile method.
System.IO.FileStream fs =
(System.IO.FileStream)saveFileDialog1.OpenFile();
// Saves the Image in the appropriate ImageFormat based upon the
// File type selected in the dialog box.
// NOTE that the FilterIndex property is one-based.
switch(saveFileDialog1.FilterIndex)
{
case 1 :
this.button2.Image.Save(fs,
System.Drawing.Imaging.ImageFormat.Jpeg);
break;

case 2 :
this.button2.Image.Save(fs,
System.Drawing.Imaging.ImageFormat.Bmp);
break;

case 3 :
this.button2.Image.Save(fs,
System.Drawing.Imaging.ImageFormat.Gif);
break;
}

fs.Close();
}
}
}
}






[Ovu poruku je menjao mostart dana 23.10.2006. u 16:11 GMT+1]

[Ovu poruku je menjao mostart dana 23.10.2006. u 16:12 GMT+1]
peace!
 
Odgovor na temu

passwdpasswd

Član broj: 116565
Poruke: 24
*.adsl.net.t-com.hr.



Profil

icon Re: hitno! pomoć potrebna! C# to WIN32 API19.10.2006. u 15:27 - pre 213 meseci
Ne kuzim u cem je problem......?

Kako mislis preko Win32Apija?.. ako mislis da znaci samo apije pozivas bez bilo koje C# fje onda prosto uradi RegisterClassEx, CreateWindowEx, ShowWindow i UpdateWindow!

Za kreiranje dugmadi isto koristi CreateWindow sa "BUTTON" style-om.. mozes da ih pravis kao ownerdraw pa ih onda sam crtas, ili jednostavno napravis Rectangle() pa sa CreateRectRgn napravis kao regiju i onda dalje s njom radis... za rad sa fajlovima imas OpenFile, WriteFile, ReadFile, OpenFileMapping, CreateFile, FileExists etc.

Za crtanje i mjenjanje boja imas GDI fje [Rectangle, Poly, SelectObject, GetStockBrush, DeleteObject....]

Za dialoge imas GetOpenFileName, GetSaveFileName etc.

Evo ti jedan primjer iz delphia [isti racku i u BCB-u] gdje sam s apijima napravio listview, znaci bez koristenja LISTVIEW klase.. od nule :)

Code:

unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, CommCtrl, CommDlg, ExtCtrls;




type
  TForm2 = class(TForm)
    GroupBox1: TGroupBox;
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    GroupBox2: TGroupBox;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    GroupBox3: TGroupBox;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Shape1: TShape;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    procedure Button4Click(Sender: TObject);
    procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
    procedure Button3Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormPaint(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);

    procedure LButtonDown(var Msg:TMessage); message WM_LBUTTONDOWN;
  private
    { Private declarations }
  public
    { Public declarations }
    _hdc:HDC;
    pocetna:integer;
    _hbrush:HBRUSH;
    form2_paint:boolean;
    form2_paint_color:COLORREF;
    form2_item:boolean;
    form2_item_color:COLORREF;
    red:array [1..18,1..3] of string;
  end;



var
  Form2: TForm2;

implementation

{$R *.dfm}

var brojac:integer;





procedure UbaciRed(br:integer;s1,s2,s3:string;posebna:boolean;boja:COLORREF);
begin
Form2.red[br,1]:=s1;
Form2.red[br,2]:=s2;
Form2.red[br,3]:=s3;
 Form2._hdc:=GetDC(Form2.Handle);
 if posebna then SetBkColor(Form2._hdc,boja) else
  if Form2.form2_item then
  SetBkColor(Form2._hdc,RGB(GetRValue(Form2.form2_item_color),GetGValue(Form2.form2_item_color),GetBValue(Form2.form2_item_color)))
  else SetBkColor(Form2._hdc,RGB($d4,$ec,$fb));
 SetTextColor(Form2._hdc,RGB(0,0,1));
 TextOut(Form2._hdc,11,16+(br*20),PChar(Form2.red[br,1]),length(Form2.red[br,1]));
 TextOut(Form2._hdc,121,16+(br*20),PChar(Form2.red[br,2]),length(Form2.red[br,2]));
 TextOut(Form2._hdc,241,16+(br*20),PChar(Form2.red[br,3]),length(Form2.red[br,3]));
 ReleaseDC(Form2.Handle,Form2._hdc);
end;







procedure TForm2.LButtonDown(var Msg:TMessage);
var x,y:integer;
    broj_reda:integer;
    r:TRect;
begin
x:=Msg.LParamLo;
y:=Msg.LParamHi-35;
broj_reda:=(y div 20)+1;

 if (x>10) and (x<360) and (Msg.LParamHi>35) and (Msg.LParamHi<410) 
    and (red[broj_reda,1]<>'') and (red[broj_reda,2]<>'') and (red[broj_reda,3]<>'') then
  begin
  Form2._hdc:=GetDC(Form2.Handle);
  Form2._hbrush:=CreateSolidBrush(RGB(255,0,0));
  SelectObject(Form2._hdc,Form2._hbrush);
  r.Left:=10;
  r.Right:=360;
  r.Bottom:=35+(broj_reda*20);
  r.Top:=r.Bottom-20;
  FillRect(Form2._hdc,r,Form2._hbrush);

  //pravljenje 3 kolone
  MoveToEx(_hdc,120,10,NIL);
  LineTo(_hdc,120,410);
  MoveToEx(_hdc,240,10,NIL);
  LineTo(_hdc,240,410);

  //izcrtavanje linija
  for y:=1 to 18 do
  begin
   MoveToEx(_hdc,10,35+(y*20),NIL);
   LineTo(_hdc,360,35+(y*20));
  end;

  UbaciRed(broj_reda,red[broj_reda,1],red[broj_reda,2],red[broj_reda,3],true,RGB(255,0,0));
  DeleteObject(Form2._hdc);
  ReleaseDC(Form2.Handle,Form2._hdc);

end;

end;





procedure TForm2.Button1Click(Sender: TObject);
begin
 if brojac=18 then ShowMessage('Ne stane vise :P') else
 begin
 inc(brojac);
 UbaciRed(brojac,Edit1.Text,Edit2.Text,Edit3.Text,false,RGB(0,0,0));
 end;
end;

procedure TForm2.FormCreate(Sender: TObject);
var z:integer;
begin
form2_paint:=false;
form2_item:=false;
brojac:=0;
 for z:=1 to 18 do
  begin
  red[z][1]:='';
  red[z][2]:='';
  red[z][3]:='';
  end;

end;
procedure TForm2.FormPaint(Sender: TObject);
var y:integer;
begin
Form2._hdc:=GetDC(Form2.Handle);
RoundRect(Form2._hdc,10,10,360,410,10,10);

//podjeljivanje texta za kolone od prvog itema
MoveToEx(Form2._hdc,10,35,NIL);
LineTo(Form2._hdc,360,35);


//bojamo prostor za imena kolona
if form2_paint then begin
   SetBkColor(Form2._hdc,form2_paint_color);
   Form2._hbrush:=CreateSolidBrush(RGB(GetRValue(form2_paint_color),GetGValue(form2_paint_color),GetBValue(form2_paint_color)));
   end else begin
   SetBkColor(Form2._hdc,RGB($7c,$9b,$cf));
   Form2._hbrush:=CreateSolidBrush(RGB($7c,$9b,$cf));
   end;
SelectObject(Form2._hdc,Form2._hbrush);
FloodFill(Form2._hdc,15,20,RGB(0,0,0));
DeleteObject(Form2._hbrush);

//bojamo prostor za iteme
if form2_item then
 begin
 Form2._hbrush:=CreateSolidBrush(RGB(GetRValue(form2_item_color),GetGValue(form2_item_color),GetBValue(form2_item_color)));
 end else Form2._hbrush:=CreateSolidBrush(RGB($d4,$ec,$fb));
SelectObject(Form2._hdc,Form2._hbrush);
FloodFill(Form2._hdc,20,40,RGB(0,0,0));
DeleteObject(Form2._hbrush);


TextOut(Form2._hdc,20,15,'Filename',length('Filename'));
TextOut(Form2._hdc,130,15,'File attributes',length('File attributes'));
TextOut(Form2._hdc,260,15,'Date/Time',length('Date/Time'));

//pravljenje 3 kolone
MoveToEx(Form2._hdc,120,10,NIL);
LineTo(Form2._hdc,120,410);
MoveToEx(Form2._hdc,240,10,NIL);
LineTo(Form2._hdc,240,410);

Form2.pocetna:=35;
 for y:=1 to 18 do
  begin
   MoveToEx(Form2._hdc,10,Form2.pocetna+(y*20),NIL);
   LineTo(Form2._hdc,360,Form2.pocetna+(y*20));
  end;


if Form2.red[1,1]<>'' then
for y:=1 to 18 do UbaciRed(y,Form2.red[y,1],Form2.red[y,2],Form2.red[y,3],false,RGB(0,0,0));


ReleaseDC(Form2.Handle,Form2._hdc);
end;

procedure TForm2.Button2Click(Sender: TObject);
var z:integer;
begin
 for z:=1 to 18 do
   begin
    red[z,1]:='';
    red[z,2]:='';
    red[z,3]:='';
   end;
 brojac:=0;
 Form2.Paint;
end;

procedure TForm2.Button3Click(Sender: TObject);
var kolor:array [1..16] of COLORREF;
    cc:TCHOOSECOLOR;
begin
form2_paint_color:=RGB(0,0,0);

cc.lStructSize:=sizeof(TCHOOSECOLOR);
cc.hWndOwner:=Form2.Handle;
cc.hInstance:=0;
cc.lpCustColors:=@kolor;
cc.rgbResult:=form2_paint_color;
cc.Flags:=CC_RGBINIT or CC_FULLOPEN;
cc.lCustData:=0;
cc.lpfnHook:=Nil;
cc.lpTemplateName:=0;
ChooseColor(cc);

form2_paint_color:=cc.rgbResult;
if RGB(0,0,0)=form2_paint_color then form2_paint:=false else form2_paint:=true;
Form2.Paint;
end;

procedure TForm2.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var broj_r:integer;
    broj_stupaca:integer;
begin

Label5.Caption:=IntToStr(X);
Label6.Caption:=IntToStr(Y);

//za kolone
if (X>10) and (X<120) then broj_stupaca:=1;
if (X>120) and (X<240) then broj_stupaca:=2;
if (X>240) and (X<360) then broj_stupaca:=3;


Y:=Y-35;
broj_r:=(Y div 20)+1;

if (X>10) and (X<360) and (Y>1) and (Y+35<410) then
begin
Label7.Caption:=IntToStr(broj_r);
Label8.Caption:=IntToStr(broj_stupaca);
end else begin
         Label7.Caption:=IntToStr(0);
         Label8.Caption:=IntToStr(0);
         end;
end;

procedure TForm2.Button4Click(Sender: TObject);
var kolor:array [1..16] of COLORREF;
    cc:TCHOOSECOLOR;
begin
form2_item_color:=RGB(0,0,0);

cc.lStructSize:=sizeof(TCHOOSECOLOR);
cc.hWndOwner:=Form2.Handle;
cc.hInstance:=0;
cc.rgbResult:=RGB($80,$80,$80);
cc.lpCustColors:=@kolor;
cc.rgbResult:=form2_item_color;
cc.Flags:=CC_RGBINIT or CC_FULLOPEN;
cc.lCustData:=0;
cc.lpfnHook:=Nil;
cc.lpTemplateName:=0;
ChooseColor(cc);

form2_item_color:=cc.rgbResult;
if RGB(0,0,0)=form2_item_color then form2_item:=false else form2_item:=true;

Form2.Paint;
end;

end.


Znaci to je delphi VCL forma i na njoj sa apijima iscrtan listview, u attachu imas .exe cisto da vidis kako bi to izgledalo sa bojama [rekao si da trebas mjenjat boje buttonima]!

Probaj, ako zapnes javi... mada javi sto prije jer me od danas navece nema nadalje.. :/

z
Prikačeni fajlovi
 
Odgovor na temu

mostart
Ivo Bandić
mostar, BiH

Član broj: 100627
Poruke: 18
*.tel.net.ba.

Sajt: www.mostart.blogspot.com


Profil

icon Re: hitno! pomoć potrebna! C# to WIN32 API19.10.2006. u 16:21 - pre 213 meseci
evo kako to izgleda kompajlirano iz c#


[Ovu poruku je menjao mostart dana 23.10.2006. u 16:13 GMT+1]
peace!
Prikačeni fajlovi
 
Odgovor na temu

passwdpasswd

Član broj: 116565
Poruke: 24
*.adsl.net.t-com.hr.



Profil

icon Re: hitno! pomoć potrebna! C# to WIN32 API19.10.2006. u 16:55 - pre 213 meseci
Cek...aj ovako:

-ovaj program crta.exe je to sto trebas napravit preko cistog win32 apija?
-dali treba bit C++ ili C# style?


Ako je crta.exe ono sto trebas da napravis preko apija i ako ti odgovara C++ [i to u Dev-C++, jer nemam trenutno drugi] onda ti nakucam to za 10 min! :)

Trebao bi ti taj kod radit onda i u borlandovim alatima i u ms studio..


Javi dal ti to odgovara ;)

z
 
Odgovor na temu

mostart
Ivo Bandić
mostar, BiH

Član broj: 100627
Poruke: 18
*.tel.net.ba.

Sajt: www.mostart.blogspot.com


Profil

icon Re: hitno! pomoć potrebna! C# to WIN32 API19.10.2006. u 17:08 - pre 213 meseci
naravno da mi odgovara! to je to!
dakle treba biti c++ style
to bi bilo super.
puno ti zahvaljujem!
peace!
 
Odgovor na temu

passwdpasswd

Član broj: 116565
Poruke: 24
*.adsl.net.t-com.hr.



Profil

icon Re: hitno! pomoć potrebna! C# to WIN32 API19.10.2006. u 17:26 - pre 213 meseci
Evo sad cu pocet kucat.. samo mi reci sta ti onaj button Boze sacuvaj treba radit... neki error mi izbacuje kad ga kliknem??
I oces da jos sta dodam u program.. ovo je jako prosto.. mozda neki mainmenu pa About.. il recimo da mozes birat dal da crta bude tockasta, puna linija itd..??

poz
 
Odgovor na temu

mostart
Ivo Bandić
mostar, BiH

Član broj: 100627
Poruke: 18
*.tel.net.ba.

Sajt: www.mostart.blogspot.com


Profil

icon Re: hitno! pomoć potrebna! C# to WIN32 API19.10.2006. u 17:45 - pre 213 meseci
ma dobro je onako prosto...
a što se tiče dugmeta, ne mora radit. nije bitno toliko
što jednostavnije to bolje. :)
može se dodati samo about.
peace!
 
Odgovor na temu

passwdpasswd

Član broj: 116565
Poruke: 24
*.adsl.net.t-com.hr.



Profil

icon Re: hitno! pomoć potrebna! C# to WIN32 API19.10.2006. u 20:45 - pre 213 meseci
Omg.. jbte :D

Zaboravio ja na tebe :D

Drugar me nesto zvao.. otiso van, doso sad doma i skoro u krevet kad se sjetim ovoga, evo nabrzaka.. nije bog zna sta al radi:

Code:

#include <windows.h>

/*  Declare Windows procedure  */
LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);

/*  Make the class name into a global variable  */
char szClassName[ ] = "WindowsApp";
HWND _hwnd;
char txt[5][10]={"Crna","Crvena","Plava","Zelena","Zuta"};
HBRUSH hBrush[4];


int WINAPI WinMain (HINSTANCE hThisInstance,
                    HINSTANCE hPrevInstance,
                    LPSTR lpszArgument,
                    int nFunsterStil)

{
    MSG messages;            /* Here messages to the application are saved */
    WNDCLASSEX wincl;        /* Data structure for the windowclass */

    /* The Window structure */
    wincl.hInstance = hThisInstance;
    wincl.lpszClassName = szClassName;
    wincl.lpfnWndProc = WindowProcedure;      /* This function is called by windows */
    wincl.style = CS_HREDRAW | CS_VREDRAW;                 /* Catch double-clicks */
    wincl.cbSize = sizeof (WNDCLASSEX);

    /* Use default icon and mouse-pointer */
    wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
    wincl.lpszMenuName = NULL;                 /* No menu */
    wincl.cbClsExtra = 0;                      /* No extra bytes after the window class */
    wincl.cbWndExtra = 0;                      /* structure or the window instance */
    /* Use Windows's default color as the background of the window */
    wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;

    /* Register the window class, and if it fails quit the program */
    if (!RegisterClassEx (&wincl))
        return 0;

    /* The class is registered, let's create the program*/
    _hwnd = CreateWindowEx (
           WS_EX_OVERLAPPEDWINDOW,                   /* Extended possibilites for variation */
           szClassName,         /* Classname */
           "Windows App",       /* Title Text */
           WS_OVERLAPPEDWINDOW, /* default window */
           CW_USEDEFAULT,       /* Windows decides the position */
           CW_USEDEFAULT,       /* where the window ends up on the screen */
           500,                 /* The programs width */
           370,                 /* and height in pixels */
           HWND_DESKTOP,        /* The window is a child-window to desktop */
           NULL,                /* No menu */
           hThisInstance,       /* Program Instance handler */
           NULL                 /* No Window Creation data */
           );

    /* Make the window visible on the screen */

    ShowWindow (_hwnd, SW_SHOWNORMAL);
    UpdateWindow(_hwnd);

  HDC hdc;
  HBRUSH hBrush[4];
  HBRUSH hBr;
  int _x;
            hdc=GetDC(_hwnd);
            hBrush[0]=CreateSolidBrush(RGB(0,0,0)); //crna
            hBrush[1]=CreateSolidBrush(RGB(0xFF,0,0)); //crvena
            hBrush[2]=CreateSolidBrush(RGB(0,0,0xFF)); //plava
            hBrush[3]=CreateSolidBrush(RGB(0x32,0xCD,0x32)); //zelena
            hBrush[4]=CreateSolidBrush(RGB(0xFF,0xFF,0)); //zuta
            
                for (_x=0;_x<=4;_x++)  
                 {
                   SelectObject(hdc, hBrush[_x]);
                   Rectangle(hdc,(_x*70),0,(_x+1)*70,20);
                   SetTextColor(hdc, RGB(0,0,0));
                      if (_x==0) {SetTextColor(hdc, RGB(0xFF,0xFF,0xFF));
                                 SetBkColor(hdc, RGB(0,0,0));};
                      if (_x==1)  SetBkColor(hdc, RGB(0xFF,0,0));
                      if (_x==2)  SetBkColor(hdc, RGB(0,0,0xFF));
                      if (_x==3)  SetBkColor(hdc, RGB(0x32,0xCD,0x32));
                      if (_x==4)  SetBkColor(hdc, RGB(0xFF,0xFF,0));
                        
                  TextOut(hdc,(_x*70)+5,1,txt[_x],strlen(txt[_x]));
                  DeleteObject(hBrush);
                }
                 hBr=CreateSolidBrush(RGB(0xFF,0xFF,0xFF));
                 SelectObject(hdc,hBr);
                 Rectangle(hdc,0,30,500,370);
                 DeleteObject(hBr);
                 ReleaseDC(_hwnd,hdc);
    

    

            hBrush[0]=CreateSolidBrush(RGB(0,0,0)); //crna
            hBrush[1]=CreateSolidBrush(RGB(0xFF,0,0)); //crvena
            hBrush[2]=CreateSolidBrush(RGB(0,0,0xFF)); //plava
            hBrush[3]=CreateSolidBrush(RGB(0x32,0xCD,0x32)); //zelena
            hBrush[4]=CreateSolidBrush(RGB(0xFF,0xFF,0)); //zuta
            
    /* Run the message loop. It will run until GetMessage() returns 0 */
    while (GetMessage (&messages, NULL, 0, 0))
    {
        /* Translate virtual-key messages into character messages */
        TranslateMessage(&messages);
        /* Send message to WindowProcedure */
        DispatchMessage(&messages);
    }

    /* The program return-value is 0 - The value that PostQuitMessage() gave */
    return messages.wParam;
}


/*  This function is called by the Windows function DispatchMessage()  */

LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{ int x,y;
  HPEN hPen=CreatePen(PS_DOT,10,RGB(0,0,0));;
  HDC hdc;
  POINT p;
  static BOOL crna=false, crvena=false, plava=false, zelena=false, zuta=false;
  int tipka;
    
    switch (message)                  /* handle the messages */
    {


       case WM_LBUTTONDOWN:
            GetCursorPos(&p);
            ScreenToClient(_hwnd,&p);
            
            if (p.y<=20 && p.x<=350)
             {
              tipka=p.x/70;
              if (tipka==0) {crna=true;
                             crvena=false;
                             plava=false;
                             zelena=false;
                             zuta=false;
                              hPen=CreatePen(PS_DOT,10,RGB(0,0,0));};
              if (tipka==1) {crna=false;
                             crvena=true;
                             plava=false;
                             zelena=false;
                             zuta=false;
                             hPen=CreatePen(PS_DOT,10,RGB(0xFF,0,0));};
              if (tipka==2) {plava=false;
                             crvena=false;
                             plava=true;
                             zelena=false;
                             zuta=false;
                             hPen=CreatePen(PS_DOT,10,RGB(0,0,0xFF));};
              if (tipka==3) {plava=false;
                             crvena=false;
                             plava=false;
                             zelena=true;
                             zuta=false;
                             hPen=CreatePen(PS_DOT,10,RGB(0x32,0xCD,0x32));};
              if (tipka==4) {crna=false;
                             crvena=false;
                             plava=false;
                             zelena=false;
                             zuta=true;
                             hPen=CreatePen(PS_DOT,10,RGB(0xFF,0xFF,0));};
             }
               
            if (p.y>32)
            {
             
            hdc=GetDC(_hwnd);
             x=LOWORD(lParam);
             y=HIWORD(lParam);
              if (wParam==MK_LBUTTON)
               {               
               if (crna==true) hPen=CreatePen(PS_DOT,10,RGB(0,0,0));
               if (crvena==true) hPen=CreatePen(PS_DOT,10,RGB(0xFF,0,0));
               if (plava==true) hPen=CreatePen(PS_DOT,10,RGB(0,0,0xFF));
               if (zelena==true) hPen=CreatePen(PS_DOT,10,RGB(0x32,0xCD,0x32));
               if (zuta==true) hPen=CreatePen(PS_DOT,10,RGB(0xFF,0xFF,0));
               SelectObject(hdc, hPen);
               MoveToEx(hdc,x,y,0);
               LineTo(hdc,x,y);
               DeleteObject(hPen);
               }
               ReleaseDC(_hwnd,hdc); 
               } 
             break;
        case WM_MOUSEMOVE:
            GetCursorPos(&p);
            ScreenToClient(_hwnd,&p);

            
            if (p.y>32)
            {
             hdc=GetDC(_hwnd);
             x=LOWORD(lParam);
             y=HIWORD(lParam);
              if (wParam==MK_LBUTTON)
               {
               if (crna==true) hPen=CreatePen(PS_DOT,10,RGB(0,0,0));
               if (crvena==true) hPen=CreatePen(PS_DOT,10,RGB(0xFF,0,0));
               if (plava==true) hPen=CreatePen(PS_DOT,10,RGB(0,0,0xFF));
               if (zelena==true) hPen=CreatePen(PS_DOT,10,RGB(0x32,0xCD,0x32));
               if (zuta==true) hPen=CreatePen(PS_DOT,10,RGB(0xFF,0xFF,0));
               SelectObject(hdc, hPen);
               MoveToEx(hdc,x,y,0);
               LineTo(hdc,x,y);
               DeleteObject(hPen);
               }
               ReleaseDC(_hwnd,hdc); 
              }
             break;   
        case WM_DESTROY:
            PostQuitMessage (0);       /* send a WM_QUIT to the message queue */
            break;
        default:                      /* for messages that we don't deal with */
            return DefWindowProc (hwnd, message, wParam, lParam);
    }

    return 0;
}




U attachu imas .exe

z
Prikačeni fajlovi
 
Odgovor na temu

mostart
Ivo Bandić
mostar, BiH

Član broj: 100627
Poruke: 18
*.tel.net.ba.

Sajt: www.mostart.blogspot.com


Profil

icon Re: hitno! pomoć potrebna! C# to WIN32 API20.10.2006. u 00:23 - pre 213 meseci
ludilo!
program je drama, bolje nije moglo! ovo je savršeno!
zahvalan sam ti do neba!
šta god trebalo, možeš tražit, a ja ako mognemto ispunit, uradit ću u što kraćem roku!
nemam riječi da dovoljno zahvalim!
hvala!
peace!
 
Odgovor na temu

passwdpasswd

Član broj: 116565
Poruke: 24
*.adsl.net.t-com.hr.



Profil

icon Re: hitno! pomoć potrebna! C# to WIN32 API21.10.2006. u 20:40 - pre 212 meseci
Evo mene napokon :)

Ovaj... ma to nije nista, to je najgore sto se moglo napravit.. :/

Ne znam kolko cu imat sta vremena tu ic po ES-u, ako sta budes trebao .. bilo sta samo mi posalji mail na [email protected], ako budem u prilici uvijek cu ti pomoc!!

z
 
Odgovor na temu

passwdpasswd

Član broj: 116565
Poruke: 24
*.adsl.net.t-com.hr.



Profil

icon Re: hitno! pomoć potrebna! C# to WIN32 API22.10.2006. u 19:05 - pre 212 meseci
Hehe, bas mi je drago!!

Sta studiras?
 
Odgovor na temu

icobh
Igor Pejašinović
Network Admin
Navigo SC d.o.o.
Banja Luka

Član broj: 18738
Poruke: 1319
*.inecco.net.

Sajt: www.nsc.ba


+4 Profil

icon Re: hitno! pomoć potrebna! C# to WIN32 API22.10.2006. u 20:18 - pre 212 meseci
Eh kad bi se na mom faxu tako polagali ispiti, gdje bi inžinjerima i magistrima bio kraj...
I ♥ ♀

Ovaj post je zlata vrijedan!
 
Odgovor na temu

android~paranoid

Član broj: 81947
Poruke: 211
*.041net.co.yu.



Profil

icon Re: hitno! pomoć potrebna! C# to WIN32 API22.10.2006. u 21:09 - pre 212 meseci
Lep programcic. passwd, gde mogu da skinem slicne kodove (za vc++). Ili ako imas neku svoju kolekciju da posaljes :)
Mislim, šta reći !
 
Odgovor na temu

stargazer
bgd

Član broj: 85916
Poruke: 117
*.eunet.yu.



Profil

icon Re: hitno! pomoć potrebna! C# to WIN32 API23.10.2006. u 08:25 - pre 212 meseci
Lep kod samo malo sumnjiv.

Deklaracija ( globalna i lokalna ) :
HBRUSH hBrush[4];
a u WinMain :
hBrush[4]=CreateSolidBrush(RGB(0xFF,0xFF,0)); //zuta
Ovo je Access Violation koliko znam.

Nigde nema DeleteObject za te HBRUSH objekte, a ovo :
DeleteObject(hBrush);
ne znam šta briše.

U proceduri prozora se za svaku poruku izvršava ovo, ne znam zašto :
HPEN hPen=CreatePen(PS_DOT,10,RGB(0,0,0)); // 2. linija
a nigde nema DeleteObject za nju. Tu malo curi memorija?

PS: Možda sam zakeralo....
With no lovin' in our souls and no money in our coats you can't say we're satisfied
 
Odgovor na temu

[es] :: C/C++ programiranje :: C# to WIN32 API

[ Pregleda: 2853 | Odgovora: 13 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.