'MFC'에 해당되는 글 47건
- 2009.06.21 윈도우창 이동 프로그램 - 2
- 2008.07.09 파일명 일괄변경 프로그램 - 4 11
- 2008.05.09 [펌] List of Windows Messages
- 2008.04.06 윈도우창 이동 프로그램 2
- 2008.02.19 CFileFind에서 MAX_PATH 관련 버그... 6
- 2007.12.29 파일명 일괄변경 프로그램 - 3 6
- 2007.08.29 찬송가 슬라이드쇼 복사 및 실행...
- 2007.08.14 로또 당첨확인 프로그램... 1
- 2007.07.26 프로젝트 클리너... 2
- 2007.07.26 GetFileAttributes() : 파일, 폴더 속성얻기...
우선 기존에 일련번호 제작에 썼던 문자인 '#'을 '*'로 변경했다. 일련번호가 숫자라는 의미로 그냥 #으로 썼었는데 파일명에 #을 써야하는 경우 때문에 변경을 했다.
도깨비님은 escape sequence를 이용해서 파일명에 '#'을 입력할 수 있게 해달라고 요청을 하셨는데 코딩하다보니 어차피 '*'표는 파일명으로 사용을 못하기 때문에 일련번호에 쓰일 문자를 아예 변경하는 것이 더 편하다고 생각되서 현재처럼 변경했다.
그리고 문자 집합을 기존 '멀티바이트 문자 집합'에서 '유니코드 문자 집합'으로 변경함으로써 파일명 변경시 유니코드를 지원한다.
프로젝트 설정에서 문자 집합을 '유니코드 문자 집합'으로 변경하고 문자열 처리와 관련된 변수 선언과 함수 등을 유니코드와 관련된 것으로 바꾸긴 했는데, 여지까지 유니코드 프로그래밍을 안해봤고, 현재 한글OS만 사용중이라서 완벽한 테스트는 하지 못했다.
단순히 키보드입력기에 일본어를 추가하고 테스트해보니 기존 버전에서는 파일명을 바꾸지 못했는데, 이번 버전에서는 파일명을 문제없이 변경했다.
Source: https://github.com/gungume/Renamer/releases/tag/0.4
(사용언어 및 제작툴 : MFC / VS2008)
이전 버전 받기
2006/09/05 - [MFC/Application] - 파일명 일괄변경 프로그램
2007/05/31 - [MFC/Application] - 파일명 일괄변경 프로그램 - 2
2007/12/29 - [MFC/Application] - 파일명 일괄변경 프로그램 - 3
윈도우 메시지 목록
List of Windows Messages
Hex |
Decimal |
Symbolic |
0000 |
0 |
WM_NULL |
0001 |
1 |
WM_CREATE |
0002 |
2 |
WM_DESTROY |
0003 |
3 |
WM_MOVE |
0005 |
5 |
WM_SIZE |
0006 |
6 |
WM_ACTIVATE |
0007 |
7 |
WM_SETFOCUS |
0008 |
8 |
WM_KILLFOCUS |
000a |
10 |
WM_ENABLE |
000b |
11 |
WM_SETREDRAW |
000c |
12 |
WM_SETTEXT |
000d |
13 |
WM_GETTEXT |
000e |
14 |
WM_GETTEXTLENGTH |
000f |
15 |
WM_PAINT |
0010 |
16 |
WM_CLOSE |
0011 |
17 |
WM_QUERYENDSESSION |
0012 |
18 |
WM_QUIT |
0013 |
19 |
WM_QUERYOPEN |
0014 |
20 |
WM_ERASEBKGND |
0015 |
21 |
WM_SYSCOLORCHANGE |
0016 |
22 |
WM_ENDSESSION |
0018 |
24 |
WM_SHOWWINDOW |
0019 |
25 |
WM_CTLCOLOR |
001a |
26 |
WM_WININICHANGE |
001b |
27 |
WM_DEVMODECHANGE |
001c |
28 |
WM_ACTIVATEAPP |
001d |
29 |
WM_FONTCHANGE |
001e |
30 |
WM_TIMECHANGE |
001f |
31 |
WM_CANCELMODE |
0020 |
32 |
WM_SETCURSOR |
0021 |
33 |
WM_MOUSEACTIVATE |
0022 |
34 |
WM_CHILDACTIVATE |
0023 |
35 |
WM_QUEUESYNC |
0024 |
36 |
WM_GETMINMAXINFO |
0026 |
38 |
WM_PAINTICON |
0027 |
39 |
WM_ICONERASEBKGND |
0028 |
40 |
WM_NEXTDLGCTL |
002a |
42 |
WM_SPOOLERSTATUS |
002b |
43 |
WM_DRAWITEM |
002c |
44 |
WM_MEASUREITEM |
002d |
45 |
WM_DELETEITEM |
002e |
46 |
WM_VKEYTOITEM |
002f |
47 |
WM_CHARTOITEM |
0030 |
48 |
WM_SETFONT |
0031 |
49 |
WM_GETFONT |
0032 |
50 |
WM_SETHOTKEY |
0033 |
51 |
WM_GETHOTKEY |
0037 |
55 |
WM_QUERYDRAGICON |
0039 |
57 |
WM_COMPAREITEM |
003d |
61 |
WM_GETOBJECT |
0041 |
65 |
WM_COMPACTING |
0044 |
68 |
WM_COMMNOTIFY |
0046 |
70 |
WM_WINDOWPOSCHANGING |
0047 |
71 |
WM_WINDOWPOSCHANGED |
0048 |
72 |
WM_POWER |
004a |
74 |
WM_COPYDATA |
004b |
75 |
WM_CANCELJOURNAL |
004e |
78 |
WM_NOTIFY |
0050 |
80 |
WM_INPUTLANGCHANGEREQUEST |
0051 |
81 |
WM_INPUTLANGCHANGE |
0052 |
82 |
WM_TCARD |
0053 |
83 |
WM_HELP |
0054 |
84 |
WM_USERCHANGED |
0055 |
85 |
WM_NOTIFYFORMAT |
007b |
123 |
WM_CONTEXTMENU |
007c |
124 |
WM_STYLECHANGING |
007d |
125 |
WM_STYLECHANGED |
007e |
126 |
WM_DISPLAYCHANGE |
007f |
127 |
WM_GETICON |
0080 |
128 |
WM_SETICON |
0081 |
129 |
WM_NCCREATE |
0082 |
130 |
WM_NCDESTROY |
0083 |
131 |
WM_NCCALCSIZE |
0084 |
132 |
WM_NCHITTEST |
0085 |
133 |
WM_NCPAINT |
0086 |
134 |
WM_NCACTIVATE |
0087 |
135 |
WM_GETDLGCODE |
0088 |
136 |
WM_SYNCPAINT |
00a0 |
160 |
WM_NCMOUSEMOVE |
00a1 |
161 |
WM_NCLBUTTONDOWN |
00a2 |
162 |
WM_NCLBUTTONUP |
00a3 |
163 |
WM_NCLBUTTONDBLCLK |
00a4 |
164 |
WM_NCRBUTTONDOWN |
00a5 |
165 |
WM_NCRBUTTONUP |
00a6 |
166 |
WM_NCRBUTTONDBLCLK |
00a7 |
167 |
WM_NCMBUTTONDOWN |
00a8 |
168 |
WM_NCMBUTTONUP |
00a9 |
169 |
WM_NCMBUTTONDBLCLK |
00ab |
171 |
WM_NCXBUTTONDOWN |
00ac |
172 |
WM_NCXBUTTONUP |
00ad |
173 |
WM_NCXBUTTONDBLCLK |
0100 |
256 |
WM_KEYDOWN |
0100 |
256 |
WM_KEYFIRST |
0101 |
257 |
WM_KEYUP |
0102 |
258 |
WM_CHAR |
0103 |
259 |
WM_DEADCHAR |
0104 |
260 |
WM_SYSKEYDOWN |
0105 |
261 |
WM_SYSKEYUP |
0106 |
262 |
WM_SYSCHAR |
0107 |
263 |
WM_SYSDEADCHAR |
0108 |
264 |
WM_KEYLAST |
0109 |
265 |
WM_WNT_CONVERTREQUESTEX |
010a |
266 |
WM_CONVERTREQUEST |
010b |
267 |
WM_CONVERTRESULT |
010c |
268 |
WM_INTERIM |
010d |
269 |
WM_IME_STARTCOMPOSITION |
010e |
270 |
WM_IME_ENDCOMPOSITION |
010f |
271 |
WM_IME_COMPOSITION |
010f |
271 |
WM_IME_KEYLAST |
0110 |
272 |
WM_INITDIALOG |
0111 |
273 |
WM_COMMAND |
0112 |
274 |
WM_SYSCOMMAND |
0113 |
275 |
WM_TIMER |
0114 |
276 |
WM_HSCROLL |
0115 |
277 |
WM_VSCROLL |
0116 |
278 |
WM_INITMENU |
0117 |
279 |
WM_INITMENUPOPUP |
011f |
287 |
WM_MENUSELECT |
0120 |
288 |
WM_MENUCHAR |
0121 |
289 |
WM_ENTERIDLE |
0122 |
290 |
WM_MENURBUTTONUP |
0123 |
291 |
WM_MENUDRAG |
0124 |
292 |
WM_MENUGETOBJECT |
0125 |
293 |
WM_UNINITMENUPOPUP |
0126 |
294 |
WM_MENUCOMMAND |
0127 |
295 |
WM_CHANGEUISTATE |
0128 |
296 |
WM_UPDATEUISTATE |
0129 |
297 |
WM_QUERYUISTATE |
0132 |
306 |
WM_CTLCOLORMSGBOX |
0133 |
307 |
WM_CTLCOLOREDIT |
0134 |
308 |
WM_CTLCOLORLISTBOX |
0135 |
309 |
WM_CTLCOLORBTN |
0136 |
310 |
WM_CTLCOLORDLG |
0137 |
311 |
WM_CTLCOLORSCROLLBAR |
0138 |
312 |
WM_CTLCOLORSTATIC |
0200 |
512 |
WM_MOUSEFIRST |
0200 |
512 |
WM_MOUSEMOVE |
0201 |
513 |
WM_LBUTTONDOWN |
0202 |
514 |
WM_LBUTTONUP |
0203 |
515 |
WM_LBUTTONDBLCLK |
0204 |
516 |
WM_RBUTTONDOWN |
0205 |
517 |
WM_RBUTTONUP |
0206 |
518 |
WM_RBUTTONDBLCLK |
0207 |
519 |
WM_MBUTTONDOWN |
0208 |
520 |
WM_MBUTTONUP |
0209 |
521 |
WM_MBUTTONDBLCLK |
0209 |
521 |
WM_MOUSELAST |
020a |
522 |
WM_MOUSEWHEEL |
020b |
523 |
WM_XBUTTONDOWN |
020c |
524 |
WM_XBUTTONUP |
020d |
525 |
WM_XBUTTONDBLCLK |
0210 |
528 |
WM_PARENTNOTIFY |
0211 |
529 |
WM_ENTERMENULOOP |
0212 |
530 |
WM_EXITMENULOOP |
0213 |
531 |
WM_NEXTMENU |
0214 |
532 |
WM_SIZING |
0215 |
533 |
WM_CAPTURECHANGED |
0216 |
534 |
WM_MOVING |
0218 |
536 |
WM_POWERBROADCAST |
0219 |
537 |
WM_DEVICECHANGE |
0220 |
544 |
WM_MDICREATE |
0221 |
545 |
WM_MDIDESTROY |
0222 |
546 |
WM_MDIACTIVATE |
0223 |
547 |
WM_MDIRESTORE |
0224 |
548 |
WM_MDINEXT |
0225 |
549 |
WM_MDIMAXIMIZE |
0226 |
550 |
WM_MDITILE |
0227 |
551 |
WM_MDICASCADE |
0228 |
552 |
WM_MDIICONARRANGE |
0229 |
553 |
WM_MDIGETACTIVE |
0230 |
560 |
WM_MDISETMENU |
0231 |
561 |
WM_ENTERSIZEMOVE |
0232 |
562 |
WM_EXITSIZEMOVE |
0233 |
563 |
WM_DROPFILES |
0234 |
564 |
WM_MDIREFRESHMENU |
0280 |
640 |
WM_IME_REPORT |
0281 |
641 |
WM_IME_SETCONTEXT |
0282 |
642 |
WM_IME_NOTIFY |
0283 |
643 |
WM_IME_CONTROL |
0284 |
644 |
WM_IME_COMPOSITIONFULL |
0285 |
645 |
WM_IME_SELECT |
0286 |
646 |
WM_IME_CHAR |
0288 |
648 |
WM_IME_REQUEST |
0290 |
656 |
WM_IMEKEYDOWN |
0290 |
656 |
WM_IME_KEYDOWN |
0291 |
657 |
WM_IMEKEYUP |
0291 |
657 |
WM_IME_KEYUP |
02a0 |
672 |
WM_NCMOUSEHOVER |
02a1 |
673 |
WM_MOUSEHOVER |
02a2 |
674 |
WM_NCMOUSELEAVE |
02a3 |
675 |
WM_MOUSELEAVE |
0300 |
768 |
WM_CUT |
0301 |
769 |
WM_COPY |
0302 |
770 |
WM_PASTE |
0303 |
771 |
WM_CLEAR |
0304 |
772 |
WM_UNDO |
0305 |
773 |
WM_RENDERFORMAT |
0306 |
774 |
WM_RENDERALLFORMATS |
0307 |
775 |
WM_DESTROYCLIPBOARD |
0308 |
776 |
WM_DRAWCLIPBOARD |
0309 |
777 |
WM_PAINTCLIPBOARD |
030a |
778 |
WM_VSCROLLCLIPBOARD |
030b |
779 |
WM_SIZECLIPBOARD |
030c |
780 |
WM_ASKCBFORMATNAME |
030d |
781 |
WM_CHANGECBCHAIN |
030e |
782 |
WM_HSCROLLCLIPBOARD |
030f |
783 |
WM_QUERYNEWPALETTE |
0310 |
784 |
WM_PALETTEISCHANGING |
0311 |
785 |
WM_PALETTECHANGED |
0312 |
786 |
WM_HOTKEY |
0317 |
791 |
WM_PRINT |
0318 |
792 |
WM_PRINTCLIENT |
0319 |
793 |
WM_APPCOMMAND |
0358 |
856 |
WM_HANDHELDFIRST |
035f |
863 |
WM_HANDHELDLAST |
0360 |
864 |
WM_AFXFIRST |
037f |
895 |
WM_AFXLAST |
0380 |
896 |
WM_PENWINFIRST |
0381 |
897 |
WM_RCRESULT |
0382 |
898 |
WM_HOOKRCRESULT |
0383 |
899 |
WM_GLOBALRCCHANGE |
0383 |
899 |
WM_PENMISCINFO |
0384 |
900 |
WM_SKB |
0385 |
901 |
WM_HEDITCTL |
0385 |
901 |
WM_PENCTL |
0386 |
902 |
WM_PENMISC |
0387 |
903 |
WM_CTLINIT |
0388 |
904 |
WM_PENEVENT |
038f |
911 |
WM_PENWINLAST |
0400 |
1024 |
DDM_SETFMT |
0400 |
1024 |
DM_GETDEFID |
0400 |
1024 |
NIN_SELECT |
0400 |
1024 |
TBM_GETPOS |
0400 |
1024 |
WM_PSD_PAGESETUPDLG |
0400 |
1024 |
WM_USER |
0401 |
1025 |
CBEM_INSERTITEMA |
0401 |
1025 |
DDM_DRAW |
0401 |
1025 |
DM_SETDEFID |
0401 |
1025 |
HKM_SETHOTKEY |
0401 |
1025 |
PBM_SETRANGE |
0401 |
1025 |
RB_INSERTBANDA |
0401 |
1025 |
SB_SETTEXTA |
0401 |
1025 |
TB_ENABLEBUTTON |
0401 |
1025 |
TBM_GETRANGEMIN |
0401 |
1025 |
TTM_ACTIVATE |
0401 |
1025 |
WM_CHOOSEFONT_GETLOGFONT |
0401 |
1025 |
WM_PSD_FULLPAGERECT |
0402 |
1026 |
CBEM_SETIMAGELIST |
0402 |
1026 |
DDM_CLOSE |
0402 |
1026 |
DM_REPOSITION |
0402 |
1026 |
HKM_GETHOTKEY |
0402 |
1026 |
PBM_SETPOS |
0402 |
1026 |
RB_DELETEBAND |
0402 |
1026 |
SB_GETTEXTA |
0402 |
1026 |
TB_CHECKBUTTON |
0402 |
1026 |
TBM_GETRANGEMAX |
0402 |
1026 |
WM_PSD_MINMARGINRECT |
0403 |
1027 |
CBEM_GETIMAGELIST |
0403 |
1027 |
DDM_BEGIN |
0403 |
1027 |
HKM_SETRULES |
0403 |
1027 |
PBM_DELTAPOS |
0403 |
1027 |
RB_GETBARINFO |
0403 |
1027 |
SB_GETTEXTLENGTHA |
0403 |
1027 |
TBM_GETTIC |
0403 |
1027 |
TB_PRESSBUTTON |
0403 |
1027 |
TTM_SETDELAYTIME |
0403 |
1027 |
WM_PSD_MARGINRECT |
0404 |
1028 |
CBEM_GETITEMA |
0404 |
1028 |
DDM_END |
0404 |
1028 |
PBM_SETSTEP |
0404 |
1028 |
RB_SETBARINFO |
0404 |
1028 |
SB_SETPARTS |
0404 |
1028 |
TB_HIDEBUTTON |
0404 |
1028 |
TBM_SETTIC |
0404 |
1028 |
TTM_ADDTOOLA |
0404 |
1028 |
WM_PSD_GREEKTEXTRECT |
0405 |
1029 |
CBEM_SETITEMA |
0405 |
1029 |
PBM_STEPIT |
0405 |
1029 |
TB_INDETERMINATE |
0405 |
1029 |
TBM_SETPOS |
0405 |
1029 |
TTM_DELTOOLA |
0405 |
1029 |
WM_PSD_ENVSTAMPRECT |
0406 |
1030 |
CBEM_GETCOMBOCONTROL |
0406 |
1030 |
PBM_SETRANGE32 |
0406 |
1030 |
RB_SETBANDINFOA |
0406 |
1030 |
SB_GETPARTS |
0406 |
1030 |
TB_MARKBUTTON |
0406 |
1030 |
TBM_SETRANGE |
0406 |
1030 |
TTM_NEWTOOLRECTA |
0406 |
1030 |
WM_PSD_YAFULLPAGERECT |
0407 |
1031 |
CBEM_GETEDITCONTROL |
0407 |
1031 |
PBM_GETRANGE |
0407 |
1031 |
RB_SETPARENT |
0407 |
1031 |
SB_GETBORDERS |
0407 |
1031 |
TBM_SETRANGEMIN |
0407 |
1031 |
TTM_RELAYEVENT |
0408 |
1032 |
CBEM_SETEXSTYLE |
0408 |
1032 |
PBM_GETPOS |
0408 |
1032 |
RB_HITTEST |
0408 |
1032 |
SB_SETMINHEIGHT |
0408 |
1032 |
TBM_SETRANGEMAX |
0408 |
1032 |
TTM_GETTOOLINFOA |
0409 |
1033 |
CBEM_GETEXSTYLE |
0409 |
1033 |
CBEM_GETEXTENDEDSTYLE |
0409 |
1033 |
PBM_SETBARCOLOR |
0409 |
1033 |
RB_GETRECT |
0409 |
1033 |
SB_SIMPLE |
0409 |
1033 |
TB_ISBUTTONENABLED |
0409 |
1033 |
TBM_CLEARTICS |
0409 |
1033 |
TTM_SETTOOLINFOA |
040a |
1034 |
CBEM_HASEDITCHANGED |
040a |
1034 |
RB_INSERTBANDW |
040a |
1034 |
SB_GETRECT |
040a |
1034 |
TB_ISBUTTONCHECKED |
040a |
1034 |
TBM_SETSEL |
040a |
1034 |
TTM_HITTESTA |
040a |
1034 |
WIZ_QUERYNUMPAGES |
040b |
1035 |
CBEM_INSERTITEMW |
040b |
1035 |
RB_SETBANDINFOW |
040b |
1035 |
SB_SETTEXTW |
040b |
1035 |
TB_ISBUTTONPRESSED |
040b |
1035 |
TBM_SETSELSTART |
040b |
1035 |
TTM_GETTEXTA |
040b |
1035 |
WIZ_NEXT |
040c |
1036 |
CBEM_SETITEMW |
040c |
1036 |
RB_GETBANDCOUNT |
040c |
1036 |
SB_GETTEXTLENGTHW |
040c |
1036 |
TB_ISBUTTONHIDDEN |
040c |
1036 |
TBM_SETSELEND |
040c |
1036 |
TTM_UPDATETIPTEXTA |
040c |
1036 |
WIZ_PREV |
040d |
1037 |
CBEM_GETITEMW |
040d |
1037 |
RB_GETROWCOUNT |
040d |
1037 |
SB_GETTEXTW |
040d |
1037 |
TB_ISBUTTONINDETERMINATE |
040d |
1037 |
TTM_GETTOOLCOUNT |
040e |
1038 |
CBEM_SETEXTENDEDSTYLE |
040e |
1038 |
RB_GETROWHEIGHT |
040e |
1038 |
SB_ISSIMPLE |
040e |
1038 |
TB_ISBUTTONHIGHLIGHTED |
040e |
1038 |
TBM_GETPTICS |
040e |
1038 |
TTM_ENUMTOOLSA |
040f |
1039 |
SB_SETICON |
040f |
1039 |
TBM_GETTICPOS |
040f |
1039 |
TTM_GETCURRENTTOOLA |
0410 |
1040 |
RB_IDTOINDEX |
0410 |
1040 |
SB_SETTIPTEXTA |
0410 |
1040 |
TBM_GETNUMTICS |
0410 |
1040 |
TTM_WINDOWFROMPOINT |
0411 |
1041 |
RB_GETTOOLTIPS |
0411 |
1041 |
SB_SETTIPTEXTW |
0411 |
1041 |
TBM_GETSELSTART |
0411 |
1041 |
TB_SETSTATE |
0411 |
1041 |
TTM_TRACKACTIVATE |
0412 |
1042 |
RB_SETTOOLTIPS |
0412 |
1042 |
SB_GETTIPTEXTA |
0412 |
1042 |
TB_GETSTATE |
0412 |
1042 |
TBM_GETSELEND |
0412 |
1042 |
TTM_TRACKPOSITION |
0413 |
1043 |
RB_SETBKCOLOR |
0413 |
1043 |
SB_GETTIPTEXTW |
0413 |
1043 |
TB_ADDBITMAP |
0413 |
1043 |
TBM_CLEARSEL |
0413 |
1043 |
TTM_SETTIPBKCOLOR |
0414 |
1044 |
RB_GETBKCOLOR |
0414 |
1044 |
SB_GETICON |
0414 |
1044 |
TB_ADDBUTTONSA |
0414 |
1044 |
TBM_SETTICFREQ |
0414 |
1044 |
TTM_SETTIPTEXTCOLOR |
0415 |
1045 |
RB_SETTEXTCOLOR |
0415 |
1045 |
TB_INSERTBUTTONA |
0415 |
1045 |
TBM_SETPAGESIZE |
0415 |
1045 |
TTM_GETDELAYTIME |
0416 |
1046 |
RB_GETTEXTCOLOR |
0416 |
1046 |
TB_DELETEBUTTON |
0416 |
1046 |
TBM_GETPAGESIZE |
0416 |
1046 |
TTM_GETTIPBKCOLOR |
0417 |
1047 |
RB_SIZETORECT |
0417 |
1047 |
TB_GETBUTTON |
0417 |
1047 |
TBM_SETLINESIZE |
0417 |
1047 |
TTM_GETTIPTEXTCOLOR |
0418 |
1048 |
RB_BEGINDRAG |
0418 |
1048 |
TB_BUTTONCOUNT |
0418 |
1048 |
TBM_GETLINESIZE |
0418 |
1048 |
TTM_SETMAXTIPWIDTH |
0419 |
1049 |
RB_ENDDRAG |
0419 |
1049 |
TB_COMMANDTOINDEX |
0419 |
1049 |
TBM_GETTHUMBRECT |
0419 |
1049 |
TTM_GETMAXTIPWIDTH |
041a |
1050 |
RB_DRAGMOVE |
041a |
1050 |
TBM_GETCHANNELRECT |
041a |
1050 |
TB_SAVERESTOREA |
041a |
1050 |
TTM_SETMARGIN |
041b |
1051 |
RB_GETBARHEIGHT |
041b |
1051 |
TB_CUSTOMIZE |
041b |
1051 |
TBM_SETTHUMBLENGTH |
041b |
1051 |
TTM_GETMARGIN |
041c |
1052 |
RB_GETBANDINFOW |
041c |
1052 |
TB_ADDSTRINGA |
041c |
1052 |
TBM_GETTHUMBLENGTH |
041c |
1052 |
TTM_POP |
041d |
1053 |
RB_GETBANDINFOA |
041d |
1053 |
TB_GETITEMRECT |
041d |
1053 |
TBM_SETTOOLTIPS |
041d |
1053 |
TTM_UPDATE |
041e |
1054 |
RB_MINIMIZEBAND |
041e |
1054 |
TB_BUTTONSTRUCTSIZE |
041e |
1054 |
TBM_GETTOOLTIPS |
041e |
1054 |
TTM_GETBUBBLESIZE |
041f |
1055 |
RB_MAXIMIZEBAND |
041f |
1055 |
TBM_SETTIPSIDE |
041f |
1055 |
TB_SETBUTTONSIZE |
041f |
1055 |
TTM_ADJUSTRECT |
0420 |
1056 |
TBM_SETBUDDY |
0420 |
1056 |
TB_SETBITMAPSIZE |
0420 |
1056 |
TTM_SETTITLEA |
0421 |
1057 |
MSG_FTS_JUMP_VA |
0421 |
1057 |
TB_AUTOSIZE |
0421 |
1057 |
TBM_GETBUDDY |
0421 |
1057 |
TTM_SETTITLEW |
0422 |
1058 |
RB_GETBANDBORDERS |
0423 |
1059 |
MSG_FTS_JUMP_QWORD |
0423 |
1059 |
RB_SHOWBAND |
0423 |
1059 |
TB_GETTOOLTIPS |
0424 |
1060 |
MSG_REINDEX_REQUEST |
0424 |
1060 |
TB_SETTOOLTIPS |
0425 |
1061 |
MSG_FTS_WHERE_IS_IT |
0425 |
1061 |
RB_SETPALETTE |
0425 |
1061 |
TB_SETPARENT |
0426 |
1062 |
RB_GETPALETTE |
0427 |
1063 |
RB_MOVEBAND |
0427 |
1063 |
TB_SETROWS |
0428 |
1064 |
TB_GETROWS |
0429 |
1065 |
TB_GETBITMAPFLAGS |
042a |
1066 |
TB_SETCMDID |
042b |
1067 |
RB_PUSHCHEVRON |
042b |
1067 |
TB_CHANGEBITMAP |
042c |
1068 |
TB_GETBITMAP |
042d |
1069 |
MSG_GET_DEFFONT |
042d |
1069 |
TB_GETBUTTONTEXTA |
042e |
1070 |
TB_REPLACEBITMAP |
042f |
1071 |
TB_SETINDENT |
0430 |
1072 |
TB_SETIMAGELIST |
0431 |
1073 |
TB_GETIMAGELIST |
0432 |
1074 |
TB_LOADIMAGES |
0432 |
1074 |
TTM_ADDTOOLW |
0433 |
1075 |
TB_GETRECT |
0433 |
1075 |
TTM_DELTOOLW |
0434 |
1076 |
TB_SETHOTIMAGELIST |
0434 |
1076 |
TTM_NEWTOOLRECTW |
0435 |
1077 |
TB_GETHOTIMAGELIST |
0435 |
1077 |
TTM_GETTOOLINFOW |
0436 |
1078 |
TB_SETDISABLEDIMAGELIST |
0436 |
1078 |
TTM_SETTOOLINFOW |
0437 |
1079 |
TB_GETDISABLEDIMAGELIST |
0437 |
1079 |
TTM_HITTESTW |
0438 |
1080 |
TB_SETSTYLE |
0438 |
1080 |
TTM_GETTEXTW |
0439 |
1081 |
TB_GETSTYLE |
0439 |
1081 |
TTM_UPDATETIPTEXTW |
043a |
1082 |
TB_GETBUTTONSIZE |
043a |
1082 |
TTM_ENUMTOOLSW |
043b |
1083 |
TB_SETBUTTONWIDTH |
043b |
1083 |
TTM_GETCURRENTTOOLW |
043c |
1084 |
TB_SETMAXTEXTROWS |
043d |
1085 |
TB_GETTEXTROWS |
043e |
1086 |
TB_GETOBJECT |
043f |
1087 |
TB_GETBUTTONINFOW |
0440 |
1088 |
TB_SETBUTTONINFOW |
0441 |
1089 |
TB_GETBUTTONINFOA |
0442 |
1090 |
TB_SETBUTTONINFOA |
0443 |
1091 |
TB_INSERTBUTTONW |
0444 |
1092 |
TB_ADDBUTTONSW |
0445 |
1093 |
TB_HITTEST |
0446 |
1094 |
TB_SETDRAWTEXTFLAGS |
0447 |
1095 |
TB_GETHOTITEM |
0448 |
1096 |
TB_SETHOTITEM |
0449 |
1097 |
TB_SETANCHORHIGHLIGHT |
044a |
1098 |
TB_GETANCHORHIGHLIGHT |
044b |
1099 |
TB_GETBUTTONTEXTW |
044c |
1100 |
TB_SAVERESTOREW |
044d |
1101 |
TB_ADDSTRINGW |
044e |
1102 |
TB_MAPACCELERATORA |
044f |
1103 |
TB_GETINSERTMARK |
0450 |
1104 |
TB_SETINSERTMARK |
0451 |
1105 |
TB_INSERTMARKHITTEST |
0452 |
1106 |
TB_MOVEBUTTON |
0453 |
1107 |
TB_GETMAXSIZE |
0454 |
1108 |
TB_SETEXTENDEDSTYLE |
0455 |
1109 |
TB_GETEXTENDEDSTYLE |
0456 |
1110 |
TB_GETPADDING |
0457 |
1111 |
TB_SETPADDING |
0458 |
1112 |
TB_SETINSERTMARKCOLOR |
0459 |
1113 |
TB_GETINSERTMARKCOLOR |
045a |
1114 |
TB_MAPACCELERATORW |
045b |
1115 |
TB_GETSTRINGW |
045c |
1116 |
TB_GETSTRINGA |
0463 |
1123 |
TAPI_REPLY |
0464 |
1124 |
ACM_OPENA |
0464 |
1124 |
BFFM_SETSTATUSTEXTA |
0464 |
1124 |
CDM_FIRST |
0464 |
1124 |
CDM_GETSPEC |
0464 |
1124 |
IPM_CLEARADDRESS |
0464 |
1124 |
WM_CAP_UNICODE_START |
0465 |
1125 |
ACM_PLAY |
0465 |
1125 |
BFFM_ENABLEOK |
0465 |
1125 |
CDM_GETFILEPATH |
0465 |
1125 |
IPM_SETADDRESS |
0465 |
1125 |
PSM_SETCURSEL |
0465 |
1125 |
UDM_SETRANGE |
0465 |
1125 |
WM_CHOOSEFONT_SETLOGFONT |
0466 |
1126 |
ACM_STOP |
0466 |
1126 |
BFFM_SETSELECTIONA |
0466 |
1126 |
CDM_GETFOLDERPATH |
0466 |
1126 |
IPM_GETADDRESS |
0466 |
1126 |
PSM_REMOVEPAGE |
0466 |
1126 |
UDM_GETRANGE |
0466 |
1126 |
WM_CAP_SET_CALLBACK_ERRORW |
0466 |
1126 |
WM_CHOOSEFONT_SETFLAGS |
0467 |
1127 |
ACM_OPENW |
0467 |
1127 |
BFFM_SETSELECTIONW |
0467 |
1127 |
CDM_GETFOLDERIDLIST |
0467 |
1127 |
IPM_SETRANGE |
0467 |
1127 |
PSM_ADDPAGE |
0467 |
1127 |
UDM_SETPOS |
0467 |
1127 |
WM_CAP_SET_CALLBACK_STATUSW |
0468 |
1128 |
BFFM_SETSTATUSTEXTW |
0468 |
1128 |
CDM_SETCONTROLTEXT |
0468 |
1128 |
IPM_SETFOCUS |
0468 |
1128 |
PSM_CHANGED |
0468 |
1128 |
UDM_GETPOS |
0469 |
1129 |
CDM_HIDECONTROL |
0469 |
1129 |
IPM_ISBLANK |
0469 |
1129 |
PSM_RESTARTWINDOWS |
0469 |
1129 |
UDM_SETBUDDY |
046a |
1130 |
CDM_SETDEFEXT |
046a |
1130 |
PSM_REBOOTSYSTEM |
046a |
1130 |
UDM_GETBUDDY |
046b |
1131 |
PSM_CANCELTOCLOSE |
046b |
1131 |
UDM_SETACCEL |
046c |
1132 |
EM_CONVPOSITION |
046c |
1132 |
PSM_QUERYSIBLINGS |
046c |
1132 |
UDM_GETACCEL |
046d |
1133 |
MCIWNDM_GETZOOM |
046d |
1133 |
PSM_UNCHANGED |
046d |
1133 |
UDM_SETBASE |
046e |
1134 |
PSM_APPLY |
046e |
1134 |
UDM_GETBASE |
046f |
1135 |
PSM_SETTITLEA |
046f |
1135 |
UDM_SETRANGE32 |
0470 |
1136 |
PSM_SETWIZBUTTONS |
0470 |
1136 |
UDM_GETRANGE32 |
0470 |
1136 |
WM_CAP_DRIVER_GET_NAMEW |
0471 |
1137 |
PSM_PRESSBUTTON |
0471 |
1137 |
UDM_SETPOS32 |
0471 |
1137 |
WM_CAP_DRIVER_GET_VERSIONW |
0472 |
1138 |
PSM_SETCURSELID |
0472 |
1138 |
UDM_GETPOS32 |
0473 |
1139 |
PSM_SETFINISHTEXTA |
0474 |
1140 |
PSM_GETTABCONTROL |
0475 |
1141 |
PSM_ISDIALOGMESSAGE |
0476 |
1142 |
MCIWNDM_REALIZE |
0476 |
1142 |
PSM_GETCURRENTPAGEHWND |
0477 |
1143 |
MCIWNDM_SETTIMEFORMATA |
0477 |
1143 |
PSM_INSERTPAGE |
0478 |
1144 |
MCIWNDM_GETTIMEFORMATA |
0478 |
1144 |
PSM_SETTITLEW |
0478 |
1144 |
WM_CAP_FILE_SET_CAPTURE_FILEW |
0479 |
1145 |
MCIWNDM_VALIDATEMEDIA |
0479 |
1145 |
PSM_SETFINISHTEXTW |
0479 |
1145 |
WM_CAP_FILE_GET_CAPTURE_FILEW |
047b |
1147 |
MCIWNDM_PLAYTO |
047b |
1147 |
WM_CAP_FILE_SAVEASW |
047c |
1148 |
MCIWNDM_GETFILENAMEA |
047d |
1149 |
MCIWNDM_GETDEVICEA |
047d |
1149 |
PSM_SETHEADERTITLEA |
047d |
1149 |
WM_CAP_FILE_SAVEDIBW |
047e |
1150 |
MCIWNDM_GETPALETTE |
047e |
1150 |
PSM_SETHEADERTITLEW |
047f |
1151 |
MCIWNDM_SETPALETTE |
047f |
1151 |
PSM_SETHEADERSUBTITLEA |
0480 |
1152 |
MCIWNDM_GETERRORA |
0480 |
1152 |
PSM_SETHEADERSUBTITLEW |
0481 |
1153 |
PSM_HWNDTOINDEX |
0482 |
1154 |
PSM_INDEXTOHWND |
0483 |
1155 |
MCIWNDM_SETINACTIVETIMER |
0483 |
1155 |
PSM_PAGETOINDEX |
0484 |
1156 |
PSM_INDEXTOPAGE |
0485 |
1157 |
DL_BEGINDRAG |
0485 |
1157 |
MCIWNDM_GETINACTIVETIMER |
0485 |
1157 |
PSM_IDTOINDEX |
0486 |
1158 |
DL_DRAGGING |
0486 |
1158 |
PSM_INDEXTOID |
0487 |
1159 |
DL_DROPPED |
0487 |
1159 |
PSM_GETRESULT |
0488 |
1160 |
DL_CANCELDRAG |
0488 |
1160 |
PSM_RECALCPAGESIZES |
048c |
1164 |
MCIWNDM_GET_SOURCE |
048d |
1165 |
MCIWNDM_PUT_SOURCE |
048e |
1166 |
MCIWNDM_GET_DEST |
048f |
1167 |
MCIWNDM_PUT_DEST |
0490 |
1168 |
MCIWNDM_CAN_PLAY |
0491 |
1169 |
MCIWNDM_CAN_WINDOW |
0492 |
1170 |
MCIWNDM_CAN_RECORD |
0493 |
1171 |
MCIWNDM_CAN_SAVE |
0494 |
1172 |
MCIWNDM_CAN_EJECT |
0495 |
1173 |
MCIWNDM_CAN_CONFIG |
0496 |
1174 |
IE_GETINK |
0496 |
1174 |
IE_MSGFIRST |
0496 |
1174 |
MCIWNDM_PALETTEKICK |
0497 |
1175 |
IE_SETINK |
0498 |
1176 |
IE_GETPENTIP |
0499 |
1177 |
IE_SETPENTIP |
049a |
1178 |
IE_GETERASERTIP |
049b |
1179 |
IE_SETERASERTIP |
049c |
1180 |
IE_GETBKGND |
049d |
1181 |
IE_SETBKGND |
049e |
1182 |
IE_GETGRIDORIGIN |
049f |
1183 |
IE_SETGRIDORIGIN |
04a0 |
1184 |
IE_GETGRIDPEN |
04a1 |
1185 |
IE_SETGRIDPEN |
04a2 |
1186 |
IE_GETGRIDSIZE |
04a3 |
1187 |
IE_SETGRIDSIZE |
04a4 |
1188 |
IE_GETMODE |
04a5 |
1189 |
IE_SETMODE |
04a6 |
1190 |
IE_GETINKRECT |
04a6 |
1190 |
WM_CAP_SET_MCI_DEVICEW |
04a7 |
1191 |
WM_CAP_GET_MCI_DEVICEW |
04b4 |
1204 |
WM_CAP_PAL_OPENW |
04b5 |
1205 |
WM_CAP_PAL_SAVEW |
04b8 |
1208 |
IE_GETAPPDATA |
04b9 |
1209 |
IE_SETAPPDATA |
04ba |
1210 |
IE_GETDRAWOPTS |
04bb |
1211 |
IE_SETDRAWOPTS |
04bc |
1212 |
IE_GETFORMAT |
04bd |
1213 |
IE_SETFORMAT |
04be |
1214 |
IE_GETINKINPUT |
04bf |
1215 |
IE_SETINKINPUT |
04c0 |
1216 |
IE_GETNOTIFY |
04c1 |
1217 |
IE_SETNOTIFY |
04c2 |
1218 |
IE_GETRECOG |
04c3 |
1219 |
IE_SETRECOG |
04c4 |
1220 |
IE_GETSECURITY |
04c5 |
1221 |
IE_SETSECURITY |
04c6 |
1222 |
IE_GETSEL |
04c7 |
1223 |
IE_SETSEL |
04c8 |
1224 |
CDM_LAST |
04c8 |
1224 |
IE_DOCOMMAND |
04c8 |
1224 |
MCIWNDM_NOTIFYMODE |
04c9 |
1225 |
IE_GETCOMMAND |
04ca |
1226 |
IE_GETCOUNT |
04cb |
1227 |
IE_GETGESTURE |
04cb |
1227 |
MCIWNDM_NOTIFYMEDIA |
04cc |
1228 |
IE_GETMENU |
04cd |
1229 |
IE_GETPAINTDC |
04cd |
1229 |
MCIWNDM_NOTIFYERROR |
04ce |
1230 |
IE_GETPDEVENT |
04cf |
1231 |
IE_GETSELCOUNT |
04d0 |
1232 |
IE_GETSELITEMS |
04d1 |
1233 |
IE_GETSTYLE |
04db |
1243 |
MCIWNDM_SETTIMEFORMATW |
04dc |
1244 |
EM_OUTLINE |
04dc |
1244 |
MCIWNDM_GETTIMEFORMATW |
04dd |
1245 |
EM_GETSCROLLPOS |
04de |
1246 |
EM_SETSCROLLPOS |
04df |
1247 |
EM_SETFONTSIZE |
04e0 |
1248 |
MCIWNDM_GETFILENAMEW |
04e1 |
1249 |
MCIWNDM_GETDEVICEW |
04e4 |
1252 |
MCIWNDM_GETERRORW |
0600 |
1536 |
FM_GETFOCUS |
0601 |
1537 |
FM_GETDRIVEINFOA |
0602 |
1538 |
FM_GETSELCOUNT |
0603 |
1539 |
FM_GETSELCOUNTLFN |
0604 |
1540 |
FM_GETFILESELA |
0605 |
1541 |
FM_GETFILESELLFNA |
0606 |
1542 |
FM_REFRESH_WINDOWS |
0607 |
1543 |
FM_RELOAD_EXTENSIONS |
0611 |
1553 |
FM_GETDRIVEINFOW |
0614 |
1556 |
FM_GETFILESELW |
0615 |
1557 |
FM_GETFILESELLFNW |
0659 |
1625 |
WLX_WM_SAS |
07e8 |
2024 |
SM_GETSELCOUNT |
07e8 |
2024 |
UM_GETSELCOUNT |
07e8 |
2024 |
WM_CPL_LAUNCH |
07e9 |
2025 |
SM_GETSERVERSELA |
07e9 |
2025 |
UM_GETUSERSELA |
07e9 |
2025 |
WM_CPL_LAUNCHED |
07ea |
2026 |
SM_GETSERVERSELW |
07ea |
2026 |
UM_GETUSERSELW |
07eb |
2027 |
SM_GETCURFOCUSA |
07eb |
2027 |
UM_GETGROUPSELA |
07ec |
2028 |
SM_GETCURFOCUSW |
07ec |
2028 |
UM_GETGROUPSELW |
07ed |
2029 |
SM_GETOPTIONS |
07ed |
2029 |
UM_GETCURFOCUSA |
07ee |
2030 |
UM_GETCURFOCUSW |
07ef |
2031 |
UM_GETOPTIONS |
07f0 |
2032 |
UM_GETOPTIONS2 |
2000 |
8192 |
OCMBASE |
2019 |
8217 |
OCM_CTLCOLOR |
202b |
8235 |
OCM_DRAWITEM |
202c |
8236 |
OCM_MEASUREITEM |
202d |
8237 |
OCM_DELETEITEM |
202e |
8238 |
OCM_VKEYTOITEM |
202f |
8239 |
OCM_CHARTOITEM |
2039 |
8249 |
OCM_COMPAREITEM |
204e |
8270 |
OCM_NOTIFY |
2111 |
8465 |
OCM_COMMAND |
2114 |
8468 |
OCM_HSCROLL |
2115 |
8469 |
OCM_VSCROLL |
2132 |
8498 |
OCM_CTLCOLORMSGBOX |
2133 |
8499 |
OCM_CTLCOLOREDIT |
2134 |
8500 |
OCM_CTLCOLORLISTBOX |
2135 |
8501 |
OCM_CTLCOLORBTN |
2136 |
8502 |
OCM_CTLCOLORDLG |
2137 |
8503 |
OCM_CTLCOLORSCROLLBAR |
2138 |
8504 |
OCM_CTLCOLORSTATIC |
2210 |
8720 |
OCM_PARENTNOTIFY |
8000 |
32768 |
WM_APP |
cccd |
52429 |
WM_RASDIALEVENT |
End, list Of Windows Messages
출처 : zextor님 블로그
모니터를 30인치로 바꾼 후 해상도를 2560*1600으로 사용하고 있다.
프로그래밍을 할때는 전체화면으로 작업을 하면 편하지만, 이 해상도로 인터넷 등을 하면 너무 크기 때문에 가로크기를 보통 가로해상도의 절반 크기인 1280으로 맞춘후에 왼쪽에 붙혀서 사용하곤 한다.
그러다 가끔은 하나의 프로그램을 모니터화면상의 가운데로 놓고 쓰거나(한쪽에 붙혀서 사용하면 나도 모르게 몸이 그쪽으로 치우쳐진다;;;), 웹브라우저+문서프로그램 등 2개의 프로그램을 동일한 크기로 좌우로 나눠서 사용해야하는 경우가 생긴다.
프로그램의 위치를 가운데나 기타 위치로 이동하는 경우는 그냥 마우스로 이동시켜도 되지만 성격상 위치를 딱 맞춰주는걸 좋아하고(예전에 자석윈도우 프로그램을 썼었는데 비스타 64비트에서는 작동을 안한다...), 프로그램 2개를 나란히 띄우는 경우도 '창 세로 정렬 보기'를 이용하면 알아서 크기에 맞춰서 배치는 해주지만 왼쪽에 웹브라우저 오른쪽에 문서창 이렇게 하고 싶은데 위치가 서로 반대로 되는 경우도 있다.(원하는 위치지정이 가능한지는 모르겠지만 내 지식으로는 모르겠다;;;)
그래서 간단한 프로그램을 작성했다. 키보드 후킹을 이용해서 Ctrl+1, 2, 3키를 눌렀을 경우 작업표시줄에서 현재 활성화된 윈도우에 대해서 각각 왼쪽, 가운데, 오른쪽 정렬을 하게 만들었다.
내 편의에 맞게 만들어서 고해상도 모니터외에는 별로 쓸모없는 프로그램인것 같긴하다. ㅡㅡ
위에서 설명했듯이 우선 작업표시줄에서 현재 활성화된 윈도우에 대해서 작동을 하고 윈도우의 크기 중 세로길이는 화면상에서 작업표시줄을 제외한 영역중 가장 상단부터 하단까지 꽉 채우도록 지정되어 있다.
그리고 가로 크기는 해상도/2로 정했는데 이것역시 작업표시줄을 제외한 해상도를 사용했다.
즉, 프로그램 2개를 동시에 띄운후에 이 프로그램을 사용해서 위치를 지정해주면 작업표시줄의 크기와 위치에 상관없이 2개의 프로그램을 동일한 크기로 띄울 수 있다.
아래는 DLL에 작성된 키보드 후킹과 관련된 간단한 소스이다. 후킹쪽을 제대로 공부안하고 이전에 가지고 있던 소스 등을 활용해서 만들었기 때문에 조건문 등의 처리가 제대로 된건지 모르겠다...일단 작동은 한다;;;
LRESULT CALLBACK KeyboardHookProc(int code, WPARAM key, LPARAM lParam) { if (code != HC_NOREMOVE) { if (lParam<0) { if(GetKeyState(VK_CONTROL)<0) { RECT rect; HWND Wnd = ::GetForegroundWindow(); SystemParametersInfo(SPI_GETWORKAREA, 0, &rect, 0); switch(key) { case '1' : rect.left = 0; rect.right = rect.right/2; ::MoveWindow(Wnd, rect.left, rect.top, rect.right, rect.bottom, TRUE); break; case '2' : rect.left = rect.right/2/2; rect.right = rect.right/2; ::MoveWindow(Wnd, rect.left, rect.top, rect.right, rect.bottom, TRUE); break; case '3' : rect.left = rect.right/2; rect.right = rect.right/2; ::MoveWindow(Wnd, rect.left, rect.top, rect.right, rect.bottom, TRUE); break; } } } } return CallNextHookEx(NULL, code, key, lParam); }
메인 프로그램에서는 단순히 후킹작동과 해제(프로그램 시작과 종료시에 해당기능 호출), 트레이 아이콘 등 자잘한 것만 있다.
프로그램을 실행하면 아무 화면도 안나오고 단순히 트레이쪽에 아이콘 하나만 등록되면서 프로그램이 작동된다. 프로그램을 종료하고 싶으면 트레이아이콘을 더블클릭하거나 마우스 우클릭을 한 후에 '종료'를 누르면 된다.
- 참고 자료 -
트레이 아이콘 : CodeGuru
MFC 모달 다이알로그를 숨김 상태로 시작 : Jiniya.net
(사용언어 및 제작툴 : MFC / VS2008)
최신 버전 받기
2009/07/09 - [Win32 API] - Windows Layout (윈도우창 이동 프로그램 - 3)
2008년 2월호 마이크로소프트웨어 책을 보다가 "CFileFind 안에 진짜 MAX_PATH 버그" 라는 권용휘님의 기사를 보게되었다.
CFileFind 클래스를 종종 이용하기 때문에 기사를 유심히 봤는데 문제가 되는 부분은 CFileFind 클래스의 FindFile() 멤버함수에서 경로를 설정하는 부분중 MAX_PATH를 사용하는데 해당되는 부분에서 영어인 경우는 문제가 없는데 한글인 경우에 문제가 생긴다는 내용인것 같다.
기사의 내용을 참조해 설명하자면 NTFS와 윈도우 커널자체에서는 유니코드를 사용한다고한다. 즉 윈도우에서 폴더나 파일명을 지정할때는 최대 256자(확장자, '.', null문자 등 포함 최대 260자...)를 지정할 수 있는데, NTFS를 사용하는 경우는 유니코드를 사용하기 때문에 영어, 한글 모두 260자까지 사용가능하다.
이때 문제가 되는 부분이 함수내에서 TCHAR가 사용된 부분인데 MFC에서 문자 집합을 "멀티바이트 문자 집합 사용" 으로 지정을 해 놓으면 TCHAR 부분이 ANSI 상태로 컴파일이 되므로 260바이트로 설정이된다.
그런데 한글의 경우 영어와 달리 문자열이 260자인 경우에 유니코드와 ANSI 문자열 모두 520바이트이다. 영어인 경우는 ANSI 문자열의 경우 260바이트이기 때문에 별다른 문제가 없지만 한글의 경우는 문자열이 길어져서 ANSI 문자열 기준으로 260바이트가 넘는다면 처리과정에서 MAX_PATH의 최대값을 넘어가기 때문에 오류가 발생한다..
즉, 한글로 된 폴더나 파일명의 길이가 ANSI 문자열 기준으로 260바이트가 넘게되는 경우에 오류가 발생하는 문제가 있다.
기사를 보고 직접 테스트했을 때 VisualStudio 2005에서 테스트했는데 기사내용처럼 문제가 생겼었고, 문자 집합을 "유니코드 문자 집합 사용"으로 설정한 경우는 정상작동을 했다.
아래는 마이크로소프트웨어에 있는 권용휘님 기사의 일부와 CFileFind의 FindFile 함수의 일부~.
- 기사 참조 -
마이크로소프트웨어(2008년 2월호) - "CFileFind 안에 진짜 MAX_PATH 버그" (권용휘, http://rodream.net)
(위의 글은 권용휘님께 허락을 받고 포스팅한것입니다. 퍼가시거나 할 경우 권용휘님께 연락을 해보세요...)
오랜만에 업뎃한 리네이머...
기능상의 변화는 없고 성능을 조금 향상시켰다.
우선 왜 그랬는지 모르겠지만 기존 프로그램에서 진행률 출력부분에 Sleep() 함수가 쓰인거를 삭제했고, 많은 갯수의 파일을 다룰때 특히 파일을 드래그&드롭할 때 파일 갯수가 많으면 응답없음이 떴었는데 그 부분을 해결하기 위해서 단일 스레드를 사용했다.
드래그&드롭과, 파일명 변경하는 부분에 스레드를 사용했는데 그냥 단일스레드라 속도향상과는 별 상관없을듯;;;
또한 기존버전까지 있었던 이미지리스트를 제거했다. 있으면 모양은 괜찮아보이는데 드래그&드롭 부분을 스레드로 돌리고나니 뭐가 잘못됐는지 이미지리스트를 얻고 셋팅하는 부분에서 너무 많은 시간이 걸려서 걍 제거 ㅡㅡ
마지막으로 이미 목록에 추가된 파일을 다시 추가하는 것에 대한 중복처리를 반복문으로 처리했었는데 함수를 이용 검색하는 방법으로 중복처리를 함으로써 속도향상시킴...
Source: https://github.com/gungume/Renamer/releases/tag/0.3
(사용언어 및 제작툴 : MFC / VS2005)
이전 버전 받기
2006/09/05 - [프로그래밍.../Source] - 파일명 일괄변경 프로그램
2007/05/31 - [프로그래밍.../Source] - 파일명 일괄변경 프로그램 - 2
교회에서 간단히 사용하려고 만든 프로그램이다...
교회에서 파워포인트 슬라이드쇼 파일(PPS)로된 찬송가 파일을 사용할때 매번 복사 또는 실행을 위해서 파일이 있는 폴더에 이동한 후에 해당 작업을 했었는데 약간의 편의성을 위해서 만들었다.
PPS 파일이 존재하는 경로를 '원본경로'에 지정해주고 원하는 찬송가의 번호를 입력한후에 복사 또는 실행을 하면 된다.
복사는 나열된 번호의 PPS 파일을 바탕화면에 복사해주는 기능이고, 실행은 말그대로 해당 찬송가 번호의 PPS파일을 실행시킴으로서 바로 슬라이드쇼가 진행되게 해준다.
'원본경로'를 변경시키면 변경된 정보가 바로 INI 파일에 저장되서, 다음에 프로그램 실행시 마지막으로 변경된 경로정보가 기본값으로 불러와진다.
특별한 기능 없이 CopyFile()과 ShellExecute() 함수를 이용해서 구현했다...
위의 두 함수만 사용해서 간단히 구현했기 때문에 파일이 없는 경우에 대한 에러처리가 없기 때문에 입력이 잘못되면 그냥 아무런 반응이 없다.
아래는 프로그램 스샷~
(사용언어 및 제작툴 : MFC / VS2005)
오랜만에 코딩한 로또관련 프로그램으로 로또 당첨확인 프로그램이다...
대충 만들다보니 에러처리도 없고 사용방법도 좀 그렇다;;;
대략적인 사용방법은 파일에 저장된 숫자정보를 불러오거나 '수동입력' 버튼을 이용해서 응모한 번호를 입력한다.
파일을 이용하는 방법은 미리 텍스트 파일등에 공백없이 ','로 구분해서 숫자를 입력해놓는다(List.txt 파일 참조...)
'수동입력'은 프로그램 상단에 있는 에디트박스 6개에 숫자를 입력후 버튼을 누르면 입력이 된다.
두가지 방법중 어떤거를 쓰던 입력후에 에디트박스에 당첨번호와 보너스번호를 입력하고 '당첨확인' 버튼을 누르면 당첨여부를 확인할 수 있다.
위에서도 말했듯이 에러처리가 딱히 없으므로 숫자 입력시 중복이 되거나 1~45 이외의 문자를 입력했을때에 대한 처리가 없다.(특히 숫자이외의 문자를 입력하면 오류메시지 많이 뜬다;;;)
아래는 프로그램 스샷~
(사용언어 및 제작툴 : MFC / VS2005)
VisualStudio를 사용해 MFC프로그램을 작성하는 경우 빌드 등을 할때 생성되는 불필요한 파일을 지우는 프로그램이다.
매번 직접 지우기 귀찮아서 간단히 만들어봤다.
사용법은 간단히 프로그램 실행후 정리를 하고 싶은 프로젝트를 폴더채로 드래그&드롭을 한후에 정리하기 버튼을 누르면 된다.
재귀함수를 이용했기 때문에 하위폴더에 있는 파일들도 제거가 가능하고 다수의 프로젝트도 한꺼번에 정리가 가능하다.
제거할 파일의 확장자 기본 목록은 데브피아 오승우님의 프로젝트 클리너 v0.01 을 사용했고 추가로 입력이 가능하다.
아래는 프로그램 스샷~
(사용언어 및 제작툴 : MFC / VS2005)
함수의 원형은 아래와 같은데 인자로 파일이나 폴더의 경로를 넣어주면 된다.
DWORD WINAPI GetFileAttributes(
LPCTSTR lpFileName
);
아래는 샘플소스로 지정된 경로가 폴더인지 아닌지 알아보는 소스이다
CString strPath; strPath = "C:\\Path"; if(GetFileAttributes(strPath) == FILE_ATTRIBUTE_DIRECTORY) MessageBox("폴더o"); else MessageBox("폴더x");
자세한 리턴값은 아래 MSDN 원문을 통해서 확인~
MSDN 원문 보기...