Page 1 of 1

Create sticky notes? Ideas/suggestions

Posted: Thu Jul 12, 2007 10:56 pm
by rsts
I'd like to permit a user to create a small note and then 'pop' it to the desktop for viewing as a reminder or whatever. So there might be several 'notes' open on the desktop simuntaneously.

Does anyone have any experience and/or ideas for how best to approach this type of task?

Thanks

Posted: Fri Jul 13, 2007 2:24 am
by jack
lamer at the PellesC forum posted a download link of his sticky notes project, really excelent.
http://www.smorgasbordet.com/forum/inde ... pic=2197.0

Posted: Fri Jul 13, 2007 2:42 am
by rsts
Will take a look (despite my lack of c skill :)

Thanks

Posted: Fri Jul 13, 2007 8:28 am
by Fluid Byte
StickyWindow() ?

[EDIT]
Here's a little demo:

Code: Select all

Ipsum$ = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit, "
Ipsum$ + "sed diam nonummy nibh euismod tincidunt ut laoreet dolore "
Ipsum$ + "magna aliquam erat volutpat. Ut wisi enim ad minim veniam." + #CRLF$ + #CRLF$
Ipsum$ + "Quis nostrud exerci tation ullamcorper suscipit lobortis "
Ipsum$ + "nisl ut aliquip ex ea commodo consequat. Duis autem vel " + #CRLF$ + #CRLF$
Ipsum$ + "Eum iriure dolor in hendrerit in vulputate velit esse "
Ipsum$ + "molestie consequat, vel illum dolore eu feugiat nulla faci."

Width = 200 : Height = 250

OpenWindow(0,0,0,Width,Height,"StickyNote",#WS_POPUP | #WS_BORDER | #WS_VISIBLE | 1)
CreateGadgetList(WindowID(0))
TextGadget(0,5,20,Width-10,Height-10,Ipsum$)
ImageGadget(1,Width-19,0,0,0,CatchImage(0,?StickyEdge))

SetWindowColor(0,RGB(255,255,128))
SetGadgetColor(0,#PB_Gadget_BackColor,RGB(255,255,128))

SetWindowLong_(WindowID(0),#GWL_EXSTYLE,#WS_EX_LAYERED)
SetLayeredWindowAttributes_(WindowID(0),0,200,#LWA_ALPHA)

StickyWindow(0,1)

Dim lppt.POINT(2)

lppt(0)\x = Width-17 : lppt(1)\x = Width+2 : lppt(1)\y = 19 : lppt(2)\x = Width+2

hRgnEdge = CreatePolygonRgn_(lppt(),3,#ALTERNATE)
hRgnRect = CreateRectRgn_(0,0,Width + 2,Height + 2)
hRgnWindow = CreateRectRgn_(0,0,Width,Height)

CombineRgn_(hRgnWindow,hRgnRect,hRgnEdge,#RGN_DIFF)

SetWindowRgn_(WindowID(0),hRgnWindow,1)

HideWindow(0,0)

Repeat
	EventID = WaitWindowEvent()

	If EventID = #WM_LBUTTONDOWN
		SendMessage_(WindowID(0),#WM_NCLBUTTONDOWN,#HTCAPTION,0)
	EndIf
Until EventID = #PB_Event_CloseWindow

DataSection
	StickyEdge:
	Data.l $04AA4D42, $00000000, $00360000, $00280000, $00130000, $00130000, $00010000, $00000018
	Data.l $04740000, $00000000, $00000000, $00000000, $00000000, $95030000, $95950395, $03959503
	Data.l $95039595, $95950395, $03959503, $95039595, $95950395, $03959503, $95039595, $95950395
	Data.l $03959503, $95039595, $95950395, $00959503, $95030000, $95950395, $119B9B09, $A718A1A1
	Data.l $ADAD1FA7, $2EB3B326, $C035BABA, $C6C63CC0, $4BCCCC44, $D852D2D2, $DEDE59D8, $68E5E561
	Data.l $F16FEAEA, $F7F776F1, $00000000, $95030000, $9B9B0A95, $18A1A111, $AE20A7A7, $B3B327AE
	Data.l $35BABA2E, $C63DC0C0, $CCCC44C6, $53D2D24B, $DE59D9D9, $E5E561DE, $6FEBEB68, $F777F1F1
	Data.l $000000F7, $00FF00FF, $95030000, $A2A21295, $20A7A718, $B427AEAE, $BABA2EB4, $3DC0C036
	Data.l $CD44C6C6, $D2D24BCD, $5AD9D953, $E561DFDF, $EBEB68E5, $77F1F170, $0000F7F7, $FF00FF00
	Data.l $00FF00FF, $95030000, $A8A81995, $27AEAE20, $BA2FB4B4, $C0C036BA, $45C6C63D, $D34CCDCD
	Data.l $D9D953D3, $62DFDF5A, $EB69E5E5, $F2F270EB, $00F8F877, $00FF0000, $FF00FFFF, $00FF00FF
	Data.l $95030000, $AEAE2195, $2FB4B428, $C136BBBB, $C7C73DC1, $4CCDCD45, $D954D3D3, $DFDF5AD9
	Data.l $69E6E662, $F270ECEC, $F8F878F2, $FF000000, $00FFFF00, $FF00FFFF, $00FF00FF, $95030000
	Data.l $B5B52895, $37BBBB2F, $C73EC1C1, $CECE45C7, $54D3D34C, $E05BDADA, $E6E662E0, $71ECEC69
	Data.l $F878F2F2, $000000F8, $FFFF00FF, $00FFFF00, $FF00FFFF, $00FF00FF, $95030000, $BBBB3095
	Data.l $3EC1C137, $CE46C7C7, $D4D44DCE, $5BDADA54, $E663E0E0, $ECEC6AE6, $78F2F271, $0000F9F9
	Data.l $FF00FF00, $FFFF00FF, $00FFFF00, $FF00FFFF, $00FF00FF, $95030000, $C2C23895, $46C8C83E
	Data.l $D44DCECE, $DADA55D4, $63E0E05C, $ED6AE6E6, $F3F371ED, $00F9F979, $00FF0000, $FF00FFFF
	Data.l $FFFF00FF, $00FFFF00, $FF00FFFF, $00FF00FF, $95030000, $C8C83F95, $4DCECE46, $DB55D4D4
	Data.l $E1E15CDB, $6BE7E763, $F372EDED, $F9F979F3, $FF000000, $00FFFF00, $FF00FFFF, $FFFF00FF
	Data.l $00FFFF00, $FF00FFFF, $00FF00FF, $95030000, $CFCF4795, $55D5D54E, $E15CDBDB, $E7E764E1
	Data.l $72EDED6B, $FA7AF3F3, $000000FA, $FFFF00FF, $00FFFF00, $FF00FFFF, $FFFF00FF, $00FFFF00
	Data.l $FF00FFFF, $00FF00FF, $95030000, $D5D54E95, $5DDBDB56, $E764E1E1, $EEEE6BE7, $7AF3F372
	Data.l $0000FAFA, $FF00FF00, $FFFF00FF, $00FFFF00, $FF00FFFF, $FFFF00FF, $00FFFF00, $FF00FFFF
	Data.l $00FF00FF, $95030000, $DBDB5695, $64E2E25D, $EE6CE8E8, $F4F473EE, $00FAFA7A, $00FF0000
	Data.l $FF00FFFF, $FFFF00FF, $00FFFF00, $FF00FFFF, $FFFF00FF, $00FFFF00, $FF00FFFF, $00FF00FF
	Data.l $95030000, $E2E25D95, $6CE8E865, $F473EEEE, $FBFB7BF4, $FF000000, $00FFFF00, $FF00FFFF
	Data.l $FFFF00FF, $00FFFF00, $FF00FFFF, $FFFF00FF, $00FFFF00, $FF00FFFF, $00FF00FF, $95030000
	Data.l $E8E86595, $73EFEF6D, $FB7BF4F4, $000000FB, $FFFF00FF, $00FFFF00, $FF00FFFF, $FFFF00FF
	Data.l $00FFFF00, $FF00FFFF, $FFFF00FF, $00FFFF00, $FF00FFFF, $00FF00FF, $95030000, $EFEF6D95
	Data.l $7BF5F574, $0000FBFB, $FF00FF00, $FFFF00FF, $00FFFF00, $FF00FFFF, $FFFF00FF, $00FFFF00
	Data.l $FF00FFFF, $FFFF00FF, $00FFFF00, $FF00FFFF, $00FF00FF, $95030000, $F5F57495, $00FBFB7C
	Data.l $00FF0000, $FF00FFFF, $FFFF00FF, $00FFFF00, $FF00FFFF, $FFFF00FF, $00FFFF00, $FF00FFFF
	Data.l $FFFF00FF, $00FFFF00, $FF00FFFF, $00FF00FF, $95030000, $FCFC7C95, $FF000000, $00FFFF00
	Data.l $FF00FFFF, $FFFF00FF, $00FFFF00, $FF00FFFF, $FFFF00FF, $00FFFF00, $FF00FFFF, $FFFF00FF
	Data.l $00FFFF00, $FF00FFFF, $00FF00FF, $95030000, $00000095, $FFFF00FF, $00FFFF00, $FF00FFFF
	Data.l $FFFF00FF, $00FFFF00, $FF00FFFF, $FFFF00FF, $00FFFF00, $FF00FFFF, $FFFF00FF, $00FFFF00
EndDataSection
[/EDIT]

Posted: Sat Jul 14, 2007 10:18 am
by Max

Posted: Sat Jul 14, 2007 11:08 am
by srod
Really cool Fluid. 8)

Posted: Sat Jul 14, 2007 12:20 pm
by Dare
Nice Fluid Byte.

Posted: Sat Jul 14, 2007 2:22 pm
by Fluid Byte
Well thanks but it's actually pretty basic stuff. I mean the main purpose of a sticky note is to be sticky, isn't it? So in fact the command StickyWindow() is all you really need. The rest is just visual design.

Posted: Sat Jul 14, 2007 2:29 pm
by rsts
Impressive - I'm on my way :D

Thanks Fluid Byte