본문 바로가기
반응형

C & C++444

다른 프로그램 제어하기(2) 다른 프로그램 제어하기(2) [ 외부프로그램 제어 ] Dos 프로그램의 경우 하나의 프로세서에 하나의 프로그램만이 동작을 합니다. 그러나 윈도우 프로그램의 경우 여러개의 프로그램이 동작할 수가 있죠 ? 별개의 프로그램의 경우에는 그 상황이 별로 문제가 되지 않지만, 만약 어떤 프로그램내에서 다른 프로그램의 실행을 생성한 경우는 가끔 문제가 되는 경우가 생깁니다. 예를 들어 HTML편집기에서 그 소스를 메모장으로 보내는 프로그램이 있다고 생각해 봅시다. 그럴 경우 편집기에서는 메모장을 생성하고, html태그들을 메모장으로 보냅니다. 순서적으로는 문제가 되지 않지만, 메모장 생성이 조금 느린 경우에는 문제가 생길 수 있습니다. 즉, 메모장을 실행할 수 있는 상태가 된 후에야, 데이터를 보낼 수 있는 방식이 .. 2011. 11. 17.
다른 프로그램 제어하기 (1) 다른 프로그램 제어하기 [ 외부 프로그램의 실행과 종료여부를 판단 ] 자신의 어플리케이션이 아닌 다른 어플리케이션의 종료여부를 판단해야할 경우에 사용합니다. 예를 들어, winzip내의 인스톨를 실행시키면, 압축된 프로그램이 바로 인스톨이 되는 경우를 보셨을껍니다. 이때, 그 인스톨되는 프로그램이 종료되었을 때, winzip도 비로소 종료가 됩니다. 1. 어플리케이션 클래스의 사전 준비 외부 어플리케이션의 정보를 관리하기위한 정보구조체를 선언압니다.이때, 어플리케이션 클래스에 Protected로 작성해 둡니다. class CALApp : public CWinApp { protected: PROCESS_INFORMATION pinfo; }; 이때, pinfo의 값은 쓰레기값을 갖고 있으므로, 이에대한 초기.. 2011. 11. 17.
API함수를 이용한 해상도 조절하기 API함수를 이용한 해상도 조절하기 [ 임의대로 해상도를 조절해 봅시다. ] 윈도우상의 해상도를 조절하기 위해서는 등록정보에서 바꿔줘야 합니다. 하지만, 이것을 자신이 만든 어플리케이션내에서 바꿔보는건 어떨까요 ? 어디에 필요한지는 지금 막 생각나지는 않지만, 다 알면 피가되고 살이 되겠져 ? 1. 먼저 현재 모니터와 비디오카드가 지원해 줄 수 있는 해상도 정보를 받아옵니다. 이때, 해상도에 따른 구조체 DEVMODE를 이용하며, 각 해상도에 따른 해상도 ID(정수값)를 얻어옵니다. 2. 각 해상도 정보로부터 구조체에 해당하는 정보를 가져옵니다. 이렇게 함으로써, 현재 자신의 컴퓨터에서 변경 가능한 해상도의 정보를 가져올 수가 있습니다. DEVMODE *pDevMode=&devMode; int n=0; .. 2011. 11. 17.
툴바의 위치를 레지스트리에 저장하자 레지스트리에 툴바의 위치를 저장하자 [ 레지스트리에 툴바의 위치를 저장하자 ] 윈도우 프로그램을 쓰면서, 자주 사용하는 항목은 툴바라는 것으로 묶어 놓게 됩니다. 한두 개정도의 툴바가 있을 경우는 상관없지만, 아주 많은 툴바가 존재할 경우나, 자신에게는 필요없는 툴바인 경우는 제거하거나, 위치를 바꿔서 사용하신 경험이 있으실껍니다. 그런데, 그 프로그램을 종료하고, 또 사용하시려고 하면, 정리했거나, 제거했던 툴바가 다시 도로 생기게되죠 ? 그러면, 또 제거하고, 위치옮겨놓고... 이러면 짜증~ 나겠져.. 이럴 경우에 사용하는 테크닉입니다. 바로 레지스트리를 이용하여, 데이터를 저장시키면 됩니다. 일단 한번 보시죠 ^_^ 먼저 툴바의 생성과정 및 이용방법에 대해 알아보겠습니다. 툴바의 관리는 CMainF.. 2011. 11. 17.
프로그램 시작시 About박스를 표시하려면 등... + 시스템 메뉴를 없애려면 타이틀바에 있는 시스템 메뉴를 없애려면 CFrameWnd 클래스에서 상속받은 CMainFrame에 있는 PreCreateWindow()에 다음과 같이 한 줄을 추가하면 간단히 제거할 수 있습니다. cs.style &= ~WS_SYSMENU; 보통 윈도우 스타일인 WS_OVERLAPPEDWINDOW에는 시스템 메뉴와 여러 윈도우 스타일이 정의돼 있기 때문에 기본값에서 시스템 메뉴를 없애면 되는 거죠. + 메임프레임이 차지하는 행의 수를 찾으려면 뺄셈과 나눗셈만으로 이 문제를 간단히 해결할 수 있습니다. 먼저 메임프레임과 클라이언트 영역의 높이를 계산합니다. 그 다음 프레임의 높이에서 클라이언트 영역의 높이, 프레임의 테두리, 캡션을 뺀 후 마지막으로 메뉴바의 높이로 나누면 됩니다.. 2011. 11. 8.
[ToolBar] 툴바에 추가된 버튼을 DROPDWON 속성지정 후 메뉴붙이는 툴바에 추가된 버튼을 DROPDWON 속성지정 후 메뉴를 붙이는 방법에 대해서 알아보겠습니다. ResourceView 탭의 Toolbar(IDR_MAINFRAME) 아이템을 선택 오픈한 후 하나의 버튼을 추가하고. 그 버튼의 ID를 ID_DROPDOWN_TEST 으로 지정한다. // MainFrm.cpp 파일에 아래 다섯개의 define 문을 추가한다.(드롭다운 툴바메뉴의 아이템 인덱스) #define ID_MENU0_1 1 #define ID_MENU1_1 2 #define ID_MENU1_2 3 #define ID_MENU1_3 4 #define ID_MENU2_1 5 #define ID_MENU2_2 6 // OnCreate 함수에 툴바를 만들고난 직후에 아래의 코드를 추가한다. int CMainF.. 2011. 11. 8.
반응형