c++ 24

[C++]OS가 32비트인지 64비트인지의 여부

윈도우 OS가 몇 비트 인지 알아오는 방법에는 2가지가 있습니다. 1.GetSystemInfo, GetNativeSystemInfo 함수 사용.2.IsWow64Process 함수 사용. GetSystemInfo 부터 알아 보겠습니다. GetSystemInfo는 시스템 정보를 얻어오는 함수 입니다. 이렇게 정의 되어 있습니다. WINBASEAPI VOID WINAPI GetSystemInfo( __out LPSYSTEM_INFO lpSystemInfo ) ; 얻어오는 인자 값으론SYSTEM_INFO라는 구조체를 사용 합니다.typedef struct _SYSTEM_INFO {union {DWORD dwOemId; // Obsolete field...do not usestruct {WORDwProcessor..

유용한 정보 2024.12.26

[C++]ExitWindowsEx() 를 이용한 시스템 종료

// OS에 따라 적절하게 시스템을 강제 종료한다.BOOL SystemShutDown(){CString strOSName=_T(""); HANDLE hToken; TOKEN_PRIVILEGES tkp; CString l_sErrorCode;OSVERSIONINFO verInfo; //0: default 1: 3.1 // 2: 98 //3: 95 //4: NTverInfo.dwOSVersionInfoSize = sizeof(verInfo); GetVersionEx(&verInfo) ;switch(verInfo.dwPlatformId) { /*case VER_PLATFORM_WIN32s: strOSName = "Microsoft Windows 3.1"; MessageBox(strOSName);break; *..

유용한 정보 2024.12.26

[C++]현재 열려있는 Internet Explorer를 모두 닫는다.

// 현재 열려있는 Internet Explorer를 모두 닫는다.int CSetupDlg::CloseExplorer(void){MSG msg;HWND hWnd = ::GetWindow(::GetDesktopWindow(), GW_CHILD); char szClassName[255] = {0,};while(hWnd > 0){memset(szClassName, 0, sizeof(szClassName));GetClassName(hWnd, szClassName, sizeof(szClassName));if(strcmp(szClassName, "IEFrame") == 0 || strcmp(szClassName, "TabThumbnailWindow") == 0)::PostMessage(hWnd, WM_CLOSE, ..

유용한 정보 2024.12.26

[C++]CListCtrl 제어

전 과목 스타 선생님+영수 심화+영재교육원까지! 초등 인강 '엘리하이'상담 신청하기»  1. 특정 ROW 포커스 주기2. 특정 ROW로 가기3. 헤더 컬럼수 얻어오기4. 컬럼의 너비를 이쁘게 주기5. 한줄 쭉 선택되게 하기, 그리드 라인 주기6. 선택한 아이템(ROW)를 지우기7. 두 아이템을 스왑 하기8. 기존에 선택되어있는 것을 해체하기9. List Control의 0번째 컬럼 사이즈 변경하지 못 하도록 프로그래밍10. List Control 에 다른 Control 넣기11. List Control 행크기 늘리기12. List Control 에서 시스템 아이콘 사용하기 1. 특정 ROW 포커스 주기---------------------------------------------------리스트 컨트롤..

유용한 정보 2024.12.26

[C++]파일 및 디렉토리 존재 여부 체크

// 파일의 존재여부 확인// 파라미터//nFlag = 1 (=default)이면 파일, 2이면 디렉토리인지, 0이면 파일 및 디렉토리를 검색BOOL isExists(const char* fname, int nFlag){if(fname == NULL)return FALSE;DWORD attr = GetFileAttributes(fname);#ifdef _DEBUG_LOG//CString str;//str.Format("%s = 0x%x (file?%d, dir?%d)", fname, attr,((attr & FILE_ATTRIBUTE_DIRECTORY) == 0), ((attr & FILE_ATTRIBUTE_DIRECTORY) != 0));//MessageBox(NULL, str, "OK", MB_OK)..

유용한 정보 2024.12.25

[C++]pragma pack 에 대해서...

전 과목 스타 선생님+영수 심화+영재교육원까지! 초등 인강 '엘리하이'상담 신청하기»  pack 지시자는 이후부터 선언되는 구조체의 정렬 방식을 지정한다. 프로젝트 설정 대화상자에서 구조체 정렬 방식을 각 모듈별로 조정할 수 있지만 pack 지시자는 소스의 중간에서 원하는 구조체에 대해 정렬 방식을 변경할 수 있도록 한다는 점이 다르다. 이 지시자를 사용하면 같은 소스에 있는 두 구조체를 다른 방식으로 정렬할 수 있다. 다음 선언문을 보자. #pragma pack(2)struct st1 { short s; int i; };#pragma pack(4)struct st2 { short s; int i; }; 이렇게 선언하면 st1 구조체는 2바이트 정렬되므로 6바이트를 차지하며 st2는 4바이트 정렬되므로 ..

유용한 정보 2024.12.25