'분류 전체보기'에 해당되는 글 159건
- 2008.10.28 C# 기초시리즈 Method(메소드)
- 2008.10.17 후킹 표
- 2008.10.17 C# 후킹
- 2008.10.14 슬라이드 ^^
- 2008.10.13 Round Rectangle 처리하기
- 2008.10.09 Oracle DB C# Parameter 이용
- 2008.10.01 컨트롤 다중으로 관리 하기 #1
- 2008.10.01 숨겨진 폴더 지울려면.. ^^
- 2008.09.29 최범균님 발표작
- 2008.09.23 Eclipse 단축키
WA_ACTIVE | 1 |
WA_CLICKACTIVE | 2 |
WA_INACTIVE | 0 |
WM_ACTIVATE | 6 |
WM_ACTIVATEAPP | 28 |
WM_AFXFIRST | 864 |
WM_AFXLAST | 895 |
WM_APP | 32768 |
WM_ASKCBFORMATNAME | 780 |
WM_CANCELJOURNAL | 75 |
WM_CANCELMODE | 31 |
WM_CAPTURECHANGED | 533 |
WM_CHANGECBCHAIN | 781 |
WM_CHAR | 258 |
WM_CHARTOITEM | 47 |
WM_CHILDACTIVATE | 34 |
WM_CLEAR | 771 |
WM_CLOSE | 16 |
WM_COMMAND | 273 |
WM_COMMNOTIFY | 68 |
WM_COMPACTING | 65 |
WM_COMPAREITEM | 57 |
WM_CONTEXTMENU | 123 |
WM_COPY | 769 |
WM_COPYDATA | 74 |
WM_CREATE | 1 |
WM_CTLCOLORBTN | 309 |
WM_CTLCOLORDLG | 310 |
WM_CTLCOLOREDIT | 307 |
WM_CTLCOLORLISTBOX | 308 |
WM_CTLCOLORMSGBOX | 306 |
WM_CTLCOLORSCROLLBAR | 311 |
WM_CTLCOLORSTATIC | 312 |
WM_CUT | 768 |
WM_DEADCHAR | 259 |
WM_DELETEITEM | 45 |
WM_DESTROY | 2 |
WM_DESTROYCLIPBOARD | 775 |
WM_DEVICECHANGE | 537 |
WM_DEVMODECHANGE | 27 |
WM_DISPLAYCHANGE | 126 |
WM_DRAWCLIPBOARD | 776 |
WM_DRAWITEM | 43 |
WM_DROPFILES | 563 |
WM_ENABLE | 10 |
WM_ENDSESSION | 22 |
WM_ENTERIDLE | 289 |
WM_ENTERMENULOOP | 529 |
WM_ENTERSIZEMOVE | 561 |
WM_ERASEBKGND | 20 |
WM_EXITMENULOOP | 530 |
WM_EXITSIZEMOVE | 562 |
WM_FONTCHANGE | 29 |
WM_GETDLGCODE | 135 |
WM_GETFONT | 49 |
WM_GETHOTKEY | 51 |
WM_GETICON | 127 |
WM_GETMINMAXINFO | 36 |
WM_GETOBJECT | 61 |
WM_GETTEXT | 13 |
WM_GETTEXTLENGTH | 14 |
WM_HANDHELDFIRST | 856 |
WM_HANDHELDLAST | 863 |
WM_HELP | 83 |
WM_HOTKEY | 786 |
WM_HSCROLL | 276 |
WM_HSCROLLCLIPBOARD | 782 |
WM_ICONERASEBKGND | 39 |
WM_IME_CHAR | 646 |
WM_IME_COMPOSITION | 271 |
WM_IME_COMPOSITIONFULL | 644 |
WM_IME_CONTROL | 643 |
WM_IME_ENDCOMPOSITION | 270 |
WM_IME_KEYDOWN | 656 |
WM_IME_KEYLAST | 271 |
WM_IME_KEYUP | 657 |
WM_IME_NOTIFY | 642 |
WM_IME_REQUEST | 648 |
WM_IME_SELECT | 645 |
WM_IME_SETCONTEXT | 641 |
WM_IME_STARTCOMPOSITION | 269 |
WM_INITDIALOG | 272 |
WM_INITMENU | 278 |
WM_INITMENUPOPUP | 279 |
WM_INPUTLANGCHANGE | 81 |
WM_INPUTLANGCHANGEREQUEST | 80 |
WM_KEYDOWN | 256 |
WM_KEYFIRST | 256 |
WM_KEYLAST | 264 |
WM_KEYUP | 257 |
WM_KILLFOCUS | 8 |
WM_LBUTTONDBLCLK | 515 |
WM_LBUTTONDOWN | 513 |
WM_LBUTTONUP | 514 |
WM_MBUTTONDBLCLK | 521 |
WM_MBUTTONDOWN | 519 |
WM_MBUTTONUP | 520 |
WM_MDIACTIVATE | 546 |
WM_MDICASCADE | 551 |
WM_MDICREATE | 544 |
WM_MDIDESTROY | 545 |
WM_MDIGETACTIVE | 553 |
WM_MDIICONARRANGE | 552 |
WM_MDIMAXIMIZE | 549 |
WM_MDINEXT | 548 |
WM_MDIREFRESHMENU | 564 |
WM_MDIRESTORE | 547 |
WM_MDISETMENU | 560 |
WM_MDITILE | 550 |
WM_MEASUREITEM | 44 |
WM_MENUCHAR | 288 |
WM_MENUCOMMAND | 294 |
WM_MENUDRAG | 291 |
WM_MENUGETOBJECT | 292 |
WM_MENURBUTTONUP | 290 |
WM_MENUSELECT | 287 |
WM_MOUSEACTIVATE | 33 |
WM_MOUSEFIRST | 512 |
WM_MOUSEHOVER | 673 |
WM_MOUSELEAVE | 675 |
WM_MOUSEMOVE | 512 |
WM_MOUSEWHEEL | 522 |
WM_MOVE | 3 |
WM_MOVING | 534 |
WM_NCACTIVATE | 134 |
WM_NCCALCSIZE | 131 |
WM_NCCREATE | 129 |
WM_NCDESTROY | 130 |
WM_NCHITTEST | 132 |
WM_NCLBUTTONDBLCLK | 163 |
WM_NCLBUTTONDOWN | 161 |
WM_NCLBUTTONUP | 162 |
WM_NCMBUTTONDBLCLK | 169 |
WM_NCMBUTTONDOWN | 167 |
WM_NCMBUTTONUP | 168 |
WM_NCMOUSEMOVE | 160 |
WM_NCPAINT | 133 |
WM_NCRBUTTONDBLCLK | 166 |
WM_NCRBUTTONDOWN | 164 |
WM_NCRBUTTONUP | 165 |
WM_NEXTDLGCTL | 40 |
WM_NEXTMENU | 531 |
WM_NOTIFY | 78 |
WM_NOTIFYFORMAT | 85 |
WM_NULL | 0 |
WM_PAINT | 15 |
WM_PAINTCLIPBOARD | 777 |
WM_PAINTICON | 38 |
WM_PALETTECHANGED | 785 |
WM_PALETTEISCHANGING | 784 |
WM_PARENTNOTIFY | 528 |
WM_PASTE | 770 |
WM_PENWINFIRST | 896 |
WM_PENWINLAST | 911 |
WM_POWER | 72 |
WM_POWERBROADCAST | 536 |
WM_PRINT | 791 |
WM_PRINTCLIENT | 792 |
WM_QUERYDRAGICON | 55 |
WM_QUERYENDSESSION | 17 |
WM_QUERYNEWPALETTE | 783 |
WM_QUERYOPEN | 19 |
WM_QUEUESYNC | 35 |
WM_QUIT | 18 |
WM_RBUTTONDBLCLK | 518 |
WM_RBUTTONDOWN | 516 |
WM_RBUTTONUP | 517 |
WM_RENDERALLFORMATS | 774 |
WM_RENDERFORMAT | 773 |
WM_SETCURSOR | 32 |
WM_SETFOCUS | 7 |
WM_SETFONT | 48 |
WM_SETHOTKEY | 50 |
WM_SETICON | 128 |
WM_SETREDRAW | 11 |
WM_SETTEXT | 12 |
WM_SETTINGCHANGE | 26 |
WM_SHOWWINDOW | 24 |
WM_SIZE | 5 |
WM_SIZECLIPBOARD | 779 |
WM_SIZING | 532 |
WM_SPOOLERSTATUS | 42 |
WM_STYLECHANGED | 125 |
WM_STYLECHANGING | 124 |
WM_SYNCPAINT | 136 |
WM_SYSCHAR | 262 |
WM_SYSCOLORCHANGE | 21 |
WM_SYSCOMMAND | 274 |
WM_SYSDEADCHAR | 263 |
WM_SYSKEYDOWN | 260 |
WM_SYSKEYUP | 261 |
WM_TCARD | 82 |
WM_TIMECHANGE | 30 |
WM_TIMER | 275 |
WM_UNDO | 772 |
WM_UNINITMENUPOPUP | 293 |
WM_USER | 1024 |
WM_USERCHANGED | 84 |
WM_VKEYTOITEM | 46 |
WM_VSCROLL | 277 |
WM_VSCROLLCLIPBOARD | 778 |
WM_WINDOWPOSCHANGED | 71 |
WM_WINDOWPOSCHANGING | 70 |
WM_WININICHANGE | 26 |
|
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Drawing2D;
using System.Threading;
namespace Login
{
public partial class LoginForm : Form
{
private int index = 12;
private int index2 = 12;
bool isSleep = false;
Thread t1;
System.Windows.Forms.Timer timer1;
System.Windows.Forms.Timer timer2;
public LoginForm()
{
InitializeComponent();
}
private void LoginForm_Load(object sender, EventArgs e)
{
axWebBrowser1.Navigate(Application.StartupPath + @"\0_main.swf");
timer1 = new System.Windows.Forms.Timer();
timer2 = new System.Windows.Forms.Timer();
timer1.Tick += new EventHandler(timer1_Tick);
timer2.Tick += new EventHandler(timer2_Tick);
timer1.Interval = 10;
timer2.Interval = 10;
timer1.Enabled =true;
timer2.Enabled =true;
}
void timer2_Tick(object sender, EventArgs e)
{
index2++;
if (index2 == 60) index2 = 12;
button2.Location = new Point(index2, 183);
}
void timer1_Tick(object sender, EventArgs e)
{
// isSleep(bool)변수가 false일때만 실행
if (!isSleep)
{
index++;
// index가 30이면 isSleep을 true로 바꾸고
// 쓰레드를 실행합니다.
if (index == 30)
{
isSleep = true;
t1 = new Thread(new ThreadStart(TimerStart));
t1.Start();
}
// index가 60이면 12로(앞으로) 되돌리고 애니메이션~!
if (index == 60) index = 12;
button2.Location = new Point(index, 12);
}
}
private void TimerStart()
{
// 간단하게 0.5초를 쉬고 isSleep변수값을 바꿉니다.
Thread.Sleep(500);
isSleep = false;
}
}
}
RoundPanel 클래스를 제작했습니다.
Panel을 상속해서 처리 했습니다.
Round 하는 코드는 아래의 코드를 참조 하시면 됩니다.
{
int diameter = 2 * radius;
Rectangle arcRect =
new Rectangle(rect.Location, new Size(diameter, diameter));
GraphicsPath path = new GraphicsPath();
path.AddArc(arcRect, 180, 90);
arcRect.X = rect.Right - diameter;
path.AddArc(arcRect, 270, 90);
arcRect.Y = rect.Bottom - diameter;
path.AddArc(arcRect, 0, 90);
arcRect.X = rect.Left;
path.AddArc(arcRect, 90, 90);
path.CloseFigure();
return path;
}
Panel 함수에서 드로잉 하는 코드 입니다.
{
RoundPanel panel = (RoundPanel)sender;
Graphics g = e.Graphics;
g.SmoothingMode = SmoothingMode.HighQuality;
int width = panel.ClientRectangle.Width;
int height = panel.ClientRectangle.Height;
Rectangle rect = new Rectangle(0, 0, width-1, height-1);
using (GraphicsPath path = RoundPanel.GetRoundedRectPath(rect, 8))
{
using (Brush brush = new LinearGradientBrush(
new Rectangle(0, 0, panel.ClientRectangle.Width, panel.ClientRectangle.Height),
Color.FromArgb(panel.Opcity, 102, 102, 102),
Color.FromArgb(panel.Opcity, 0, 0, 0),
90.0f))
{
//graphics.FillRectangle(brush, 0, 0, this.ClientRectangle.Width, this.ClientRectangle.Height);
g.FillPath(brush, path);
}
//g.FillPath(Brushes.Yellow, path);
Pen pen = new Pen(Color.FromArgb(panel.Opcity, 255, 255, 255));
g.DrawPath(pen, path);
}
}
이걸 처리 하다 보면 화면을 전환 하거나 리프레쉬할때 플리커 현상이 생기기도 합니다.
이걸 해결하기 위해서 RoundPanel에 더블버퍼링 처리 코드를 추가 했습니다.
{
...
this.SetStyle( ControlStyles.UserPaint |
ControlStyles.AllPaintingInWmPaint |
ControlStyles.DoubleBuffer, true);
}
출처 : http://iamgsi.com/374
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.OracleClient;
namespace Login
{
public partial class Form2 : Form
{
OracleConnection oConn;
OracleCommand oComm;
OracleParameter[] oPar;
public Form2()
{
InitializeComponent();
}
private void Form2_Load(object sender, EventArgs e)
{
oConn = new OracleConnection("Data Source=mi;User ID=midas;Password=midas123");
}
private void button1_Click(object sender, EventArgs e)
{
StringBuilder sbSql = new StringBuilder();
oConn.Open();
try
{
sbSql.Append(" select userid,userpwd,username ");
sbSql.Append(" from midas_user ");
sbSql.Append(" WHERE userid = :userid ");
sbSql.Append(" AND userpwd = :userpwd ");
oPar = new OracleParameter[2];
oPar[0] = new OracleParameter(":userid", textBox1.Text);
oPar[1] = new OracleParameter(":userpwd", textBox2.Text);
oComm = new OracleCommand(sbSql.ToString(), oConn);
oComm.Parameters.Add(oPar[0]);
oComm.Parameters.Add(oPar[1]);
OracleDataReader dr = oComm.ExecuteReader(CommandBehavior.CloseConnection);
oComm.Parameters.Clear();
dr.Read();
MessageBox.Show(dr["USERNAME"].ToString());
MessageBox.Show(dr["userid"].ToString());
}
catch (Exception ex) { string ok = ex.Message.ToString(); }
}
}
}
With an instance of a DirectoryInfo class in hand that references the directory you want to make hidden in, you need only examine/set the Attributes property with the FileAttributes.Hidden flag ala:
DirectoryInfo di = new DirectoryInfo(@"C:\SomeDirectory");
//See if directory has hidden flag, if not, make hidden
if( (di.Attributes & FileAttributes.Hidden) != FileAttributes.Hidden)
{
//Add Hidden flag
di.Attributes = di.Attributes | FileAttributes.Hidden;
}
//See if directory has hidden flag, if not, make visible
if ((di.Attributes & FileAttributes.Hidden) == FileAttributes.Hidden)
{
//Remove Hidden flag
di.Attributes = di.Attributes ^ FileAttributes.Hidden;
}
Ctrl + F6
Microsoft Visual Studio의 Ctrl + Tab과 동일하다.
이클립스에서는 Ctrl + Tab으로 열려진 파일간 이동을 할 수는 없고 대신 이 단축키를 사용하면 된다. Ctrl + F6과 동일하고 방향만 반대인 Ctrl + Shift + F6 단축키도 존재한다.
Ctrl + F7
각종 '보기' 사이를 이동한다. 예를 들어 편집기에서 콘솔창으로 이동하거나 편집기에서
아웃라인으로 이동할 때 사용할 수 있다. 역시 방향만 반대인 Ctrl + Shift + F7 단축키도 존재한다.
Ctrl + F8
다음 'Perspective'로 이동한다. 역시 방향만 반대인 Ctrl + Shift + F8 단축키도 존재하다.
Ctrl + L
특정 줄번호로 이동할 때 사용한다.
Ctrl + Shift + F
자동으로 소스 코드를 정리해 준다.
팀프로젝트시 개인별로 코딩 스타일이 다르다면, 일단 각자 자기 스타일대로 소스를 작성하고
이 단축키를 사용하여 코딩 스타일을 일치시켜주면 좋을 것 같다.
Ctrl + F11
저장, 컴파일 및 실행
===== 실행 =====
1. Ctrl + F11 : 바로 전에 실행했던 클래스 실행
===== 소스 네비게이션 =====
1. Ctrl + 마우스커서(혹은 F3) : 클래스나 메소드 혹은 멤버를 상세하게 검색하고자 할때
2. Alt + ->, Alt + <- : 이후, 이전
3. Ctrl + o : 해당 소스의 메소드 리스트를 확인하려 할때
4. F4 : 클래스명을 선택하고 누르면 해당 클래스의 Hierarchy 를 볼 수 있다.
===== 문자열 찾기 =====
1. Ctrl + k : 찾고자 하는 문자열을 블럭으로 설정한 후 키를 누른다.
2. Ctrl + Shift + k : 역으로 찾고자 하는 문자열을 찾아감.
3. Ctrl + j : 입력하면서 찾을 수 있음.
4. Ctrl + Shift + j : 입력하면서 거꾸로 찾아갈 수 있음.
5. Ctrl + f : 기본적으로 찾기
[출처] 이클립스 자주 쓰는 단축기|작성자 노아
===== 소스 편집 =====
1. Ctrl + Space : 입력 보조장치(Content Assistance) 강제 호출 => 입력하는 도중엔 언제라도 강제 호출 가능하다.
2. F2 : 컴파일 에러의 빨간줄에 커서를 갖져다가 이 키를 누르면 에러의 원인에 대한 힌트를 제공한다.
3. Ctrl + l : 원하는 소스 라인으로 이동
로컬 히스토리 기능을 이용하면 이전에 편집했던 내용으로 변환이 가능하다.
4. Ctrl + Shift + Space : 메소드의 가로안에 커서를 놓고 이 키를 누르면 파라미터 타입 힌트를 볼 수 있다.
5. 한줄 삭제 CTRL + D
6. 파일 닫기 : CTRL+W
7. 들여쓰기 자동 수정. (3.0 NEW) : CTRL+I
8. 블록 주석(/*..*/) 추가.(3.0 NEW): CTRL+SHIFT+/
8.1 Ctrl + / 해주면 여러줄이 한꺼번에 주석처리됨. 주석 해제하려면 반대로 하면 됨.
9. 위(아래)줄과 바꾸기 : ALT+UP(DOWN)
10. 블록 선택하기. : ALT+SHIFT+방향키
11. 메소드의 파라메터 목록 보기. : CTRL+SHIFT+SPACE
12. 자동으로 import 하기 : CTRL+SHIFT+O
13. 열린 파일 모두 닫기 : CTRL + SHIFT + F4
14. 블록 주석 제거 : CTRL+SHIFT+\
15. 전체화면 토글 : CTRL+M
16. 한줄(블럭) 복사 : Ctrl + Alt + 위(아래)
17. 다음 annotation(에러, 워닝, 북마크 가능)으로 점프 : Ctrl + , or .
18. 퀵 픽스 : Ctrl + 1
19. 메소드 정의부로 이동 : F3
20. 하이어라키 팦업 창 띄우기(인터페이스 구현 클래스간 이동시 편리) : Ctrl + T
21. 메소드나 필드 이동하기 CTRL + O