#include <windows.h>
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
HINSTANCE g_hInst;
LPSTR lpszClass="Regi2";
int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance
,LPSTR lpszCmdParam,int nCmdShow)
{
HWND hWnd;
MSG Message;
WNDCLASS WndClass;
g_hInst=hInstance;
WndClass.cbClsExtra=0;
WndClass.cbWndExtra=0;
WndClass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
WndClass.hCursor=LoadCursor(NULL,IDC_ARROW);
WndClass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
WndClass.hInstance=hInstance;
WndClass.lpfnWndProc=(WNDPROC)WndProc;
WndClass.lpszClassName=lpszClass;
WndClass.lpszMenuName=NULL;
WndClass.style=CS_HREDRAW | CS_VREDRAW;
RegisterClass(&WndClass);
hWnd=CreateWindow(lpszClass,lpszClass,WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,
NULL,(HMENU)NULL,hInstance,NULL);
ShowWindow(hWnd,nCmdShow);
while(GetMessage(&Message,0,0,0)) {
TranslateMessage(&Message);
DispatchMessage(&Message);
}
return Message.wParam;
}
#include "ShReg.h"
#define KEY "Software\\KanamSoft\\RegiTest2\\"
LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
RECT rt;
static HWND hEdit;
char str[256];
switch(iMessage) {
case WM_CREATE:
rt.left=SHRegReadInt(SHCU,KEY"Position","Left",0);
rt.top=SHRegReadInt(SHCU,KEY"Position","Top",0);
rt.right=SHRegReadInt(SHCU,KEY"Position","Right",300);
rt.bottom=SHRegReadInt(SHCU,KEY"Position","Bottom",200);
MoveWindow(hWnd, rt.left, rt.top, rt.right-rt.left,
rt.bottom-rt.top, TRUE);
hEdit=CreateWindow("edit",NULL,WS_CHILD | WS_VISIBLE | WS_BORDER |
ES_AUTOHSCROLL,10,10,200,25,hWnd,(HMENU)100,g_hInst,NULL);
SHRegReadString(SHCU,KEY"Edit","Str","문자열",str,256);
SetWindowText(hEdit,str);
return 0;
case WM_DESTROY:
GetWindowRect(hWnd, &rt);
SHRegWriteInt(SHCU,KEY"Position","Left",rt.left);
SHRegWriteInt(SHCU,KEY"Position","Top",rt.top);
SHRegWriteInt(SHCU,KEY"Position","Right",rt.right);
SHRegWriteInt(SHCU,KEY"Position","Bottom",rt.bottom);
GetWindowText(hEdit,str,256);
SHRegWriteString(SHCU,KEY"Edit","Str",str);
PostQuitMessage(0);
return 0;
}
return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}
#define SHLM HKEY_LOCAL_MACHINE
#define SHCU HKEY_CURRENT_USER
#define SHCR HKEY_CLASSES_ROOT
UINT SHRegReadInt(HKEY hKey, LPCTSTR lpKey, LPCTSTR lpValue, INT nDefault);
BOOL SHRegReadString(HKEY hKey, LPCTSTR lpKey, LPCTSTR lpValue, LPCTSTR lpDefault,
LPTSTR lpRet, DWORD nSize);
BOOL SHRegWriteInt(HKEY hKey, LPCTSTR lpKey, LPCTSTR lpValue, UINT nData);
BOOL SHRegWriteString(HKEY hKey, LPCTSTR lpKey, LPCTSTR lpValue, LPCTSTR lpData);
#include <windows.h>
// 정수값을 읽는다.
UINT SHRegReadInt(HKEY hKey, LPCTSTR lpKey, LPCTSTR lpValue, INT nDefault)
{
HKEY key;
DWORD dwDisp;
UINT Result;
DWORD Size;
if (RegCreateKeyEx(hKey, lpKey,0,NULL,
REG_OPTION_NON_VOLATILE, KEY_READ,NULL,&key,&dwDisp)
!=ERROR_SUCCESS)
return 0;
Size=sizeof(LONG);
if (RegQueryValueEx(key, lpValue, 0, NULL,(LPBYTE)&Result, &Size)
!=ERROR_SUCCESS)
Result=nDefault;
RegCloseKey(key);
return Result;
}
// 문자열을 읽는다.
BOOL SHRegReadString(HKEY hKey, LPCTSTR lpKey, LPCTSTR lpValue, LPCTSTR lpDefault,
LPTSTR lpRet, DWORD nSize)
{
HKEY key;
DWORD dwDisp;
DWORD Size;
if (RegCreateKeyEx(hKey, lpKey,0,NULL,
REG_OPTION_NON_VOLATILE, KEY_READ,NULL,&key,&dwDisp)
!=ERROR_SUCCESS)
return FALSE;
Size=nSize;
if (RegQueryValueEx(key, lpValue, 0, NULL,(LPBYTE)lpRet, &Size)
!=ERROR_SUCCESS) {
strcpy(lpRet, lpDefault);
return FALSE;
}
RegCloseKey(key);
return TRUE;
}
// 정수값을 쓴다.
BOOL SHRegWriteInt(HKEY hKey, LPCTSTR lpKey, LPCTSTR lpValue, UINT nData)
{
HKEY key;
DWORD dwDisp;
if (RegCreateKeyEx(hKey, lpKey,0,NULL,
REG_OPTION_NON_VOLATILE, KEY_WRITE,NULL,&key,&dwDisp)
!=ERROR_SUCCESS) {
return FALSE;
}
if (RegSetValueEx(key, lpValue,0,REG_DWORD,(LPBYTE)&nData,sizeof(UINT))
!=ERROR_SUCCESS)
return FALSE;
RegCloseKey(key);
return TRUE;
}
// 문자열을 쓴다.
BOOL SHRegWriteString(HKEY hKey, LPCTSTR lpKey, LPCTSTR lpValue, LPCTSTR lpData)
{
HKEY key;
DWORD dwDisp;
if (RegCreateKeyEx(hKey, lpKey,0,NULL,
REG_OPTION_NON_VOLATILE, KEY_WRITE,NULL,&key,&dwDisp)
!=ERROR_SUCCESS)
return FALSE;
if (RegSetValueEx(key, lpValue,0,REG_SZ,(LPBYTE)lpData,strlen(lpData)+1)
!=ERROR_SUCCESS)
return FALSE;
RegCloseKey(key);
return TRUE;
}
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
HINSTANCE g_hInst;
LPSTR lpszClass="Regi2";
int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance
,LPSTR lpszCmdParam,int nCmdShow)
{
HWND hWnd;
MSG Message;
WNDCLASS WndClass;
g_hInst=hInstance;
WndClass.cbClsExtra=0;
WndClass.cbWndExtra=0;
WndClass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
WndClass.hCursor=LoadCursor(NULL,IDC_ARROW);
WndClass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
WndClass.hInstance=hInstance;
WndClass.lpfnWndProc=(WNDPROC)WndProc;
WndClass.lpszClassName=lpszClass;
WndClass.lpszMenuName=NULL;
WndClass.style=CS_HREDRAW | CS_VREDRAW;
RegisterClass(&WndClass);
hWnd=CreateWindow(lpszClass,lpszClass,WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,
NULL,(HMENU)NULL,hInstance,NULL);
ShowWindow(hWnd,nCmdShow);
while(GetMessage(&Message,0,0,0)) {
TranslateMessage(&Message);
DispatchMessage(&Message);
}
return Message.wParam;
}
#include "ShReg.h"
#define KEY "Software\\KanamSoft\\RegiTest2\\"
LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
RECT rt;
static HWND hEdit;
char str[256];
switch(iMessage) {
case WM_CREATE:
rt.left=SHRegReadInt(SHCU,KEY"Position","Left",0);
rt.top=SHRegReadInt(SHCU,KEY"Position","Top",0);
rt.right=SHRegReadInt(SHCU,KEY"Position","Right",300);
rt.bottom=SHRegReadInt(SHCU,KEY"Position","Bottom",200);
MoveWindow(hWnd, rt.left, rt.top, rt.right-rt.left,
rt.bottom-rt.top, TRUE);
hEdit=CreateWindow("edit",NULL,WS_CHILD | WS_VISIBLE | WS_BORDER |
ES_AUTOHSCROLL,10,10,200,25,hWnd,(HMENU)100,g_hInst,NULL);
SHRegReadString(SHCU,KEY"Edit","Str","문자열",str,256);
SetWindowText(hEdit,str);
return 0;
case WM_DESTROY:
GetWindowRect(hWnd, &rt);
SHRegWriteInt(SHCU,KEY"Position","Left",rt.left);
SHRegWriteInt(SHCU,KEY"Position","Top",rt.top);
SHRegWriteInt(SHCU,KEY"Position","Right",rt.right);
SHRegWriteInt(SHCU,KEY"Position","Bottom",rt.bottom);
GetWindowText(hEdit,str,256);
SHRegWriteString(SHCU,KEY"Edit","Str",str);
PostQuitMessage(0);
return 0;
}
return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}
#define SHLM HKEY_LOCAL_MACHINE
#define SHCU HKEY_CURRENT_USER
#define SHCR HKEY_CLASSES_ROOT
UINT SHRegReadInt(HKEY hKey, LPCTSTR lpKey, LPCTSTR lpValue, INT nDefault);
BOOL SHRegReadString(HKEY hKey, LPCTSTR lpKey, LPCTSTR lpValue, LPCTSTR lpDefault,
LPTSTR lpRet, DWORD nSize);
BOOL SHRegWriteInt(HKEY hKey, LPCTSTR lpKey, LPCTSTR lpValue, UINT nData);
BOOL SHRegWriteString(HKEY hKey, LPCTSTR lpKey, LPCTSTR lpValue, LPCTSTR lpData);
#include <windows.h>
// 정수값을 읽는다.
UINT SHRegReadInt(HKEY hKey, LPCTSTR lpKey, LPCTSTR lpValue, INT nDefault)
{
HKEY key;
DWORD dwDisp;
UINT Result;
DWORD Size;
if (RegCreateKeyEx(hKey, lpKey,0,NULL,
REG_OPTION_NON_VOLATILE, KEY_READ,NULL,&key,&dwDisp)
!=ERROR_SUCCESS)
return 0;
Size=sizeof(LONG);
if (RegQueryValueEx(key, lpValue, 0, NULL,(LPBYTE)&Result, &Size)
!=ERROR_SUCCESS)
Result=nDefault;
RegCloseKey(key);
return Result;
}
// 문자열을 읽는다.
BOOL SHRegReadString(HKEY hKey, LPCTSTR lpKey, LPCTSTR lpValue, LPCTSTR lpDefault,
LPTSTR lpRet, DWORD nSize)
{
HKEY key;
DWORD dwDisp;
DWORD Size;
if (RegCreateKeyEx(hKey, lpKey,0,NULL,
REG_OPTION_NON_VOLATILE, KEY_READ,NULL,&key,&dwDisp)
!=ERROR_SUCCESS)
return FALSE;
Size=nSize;
if (RegQueryValueEx(key, lpValue, 0, NULL,(LPBYTE)lpRet, &Size)
!=ERROR_SUCCESS) {
strcpy(lpRet, lpDefault);
return FALSE;
}
RegCloseKey(key);
return TRUE;
}
// 정수값을 쓴다.
BOOL SHRegWriteInt(HKEY hKey, LPCTSTR lpKey, LPCTSTR lpValue, UINT nData)
{
HKEY key;
DWORD dwDisp;
if (RegCreateKeyEx(hKey, lpKey,0,NULL,
REG_OPTION_NON_VOLATILE, KEY_WRITE,NULL,&key,&dwDisp)
!=ERROR_SUCCESS) {
return FALSE;
}
if (RegSetValueEx(key, lpValue,0,REG_DWORD,(LPBYTE)&nData,sizeof(UINT))
!=ERROR_SUCCESS)
return FALSE;
RegCloseKey(key);
return TRUE;
}
// 문자열을 쓴다.
BOOL SHRegWriteString(HKEY hKey, LPCTSTR lpKey, LPCTSTR lpValue, LPCTSTR lpData)
{
HKEY key;
DWORD dwDisp;
if (RegCreateKeyEx(hKey, lpKey,0,NULL,
REG_OPTION_NON_VOLATILE, KEY_WRITE,NULL,&key,&dwDisp)
!=ERROR_SUCCESS)
return FALSE;
if (RegSetValueEx(key, lpValue,0,REG_SZ,(LPBYTE)lpData,strlen(lpData)+1)
!=ERROR_SUCCESS)
return FALSE;
RegCloseKey(key);
return TRUE;
}
'Windows > Windows API' 카테고리의 다른 글
클립보드 에디트 복사 (Clipboard) (0) | 2013.10.01 |
---|---|
클립보드 그림 복사 (Clipboard) (0) | 2013.10.01 |
시스템 사용자 정보 (GetComputerName, GetUserName) (0) | 2013.10.01 |
os 버전알기 (GetVersionEx) (0) | 2013.10.01 |
현재 시간 (GetLocalTime) (0) | 2013.10.01 |