system(""); 

win32에서도 지원 (유닉스 계열 전용이 아니었군)

[링크 : http://rockdrumy.tistory.com/483]


다만, system()에서 실행되는 동안 멈추는 단점이 있다.

[링크 : https://msdn.microsoft.com/en-us/library/277bwbdz.aspx]


그리고 얘.. 공백 문자 경로 해결을 못하겠네?

[링크 : https://stackoverflow.com/.../how-to-overcome-spaces-in-the-path-while-passing-to-system]

[링크 : https://stackoverflow.com/.../c-system-not-working-when-there-are-spaces-in-two-different-parameters]



WinExec(cmd, SW_SHOW); 

독립된 프로세스로 구동함.

공백문자 문제 없음(따옴표 하나로 해결)


ShellExecute(NULL, _T("open"), _T("cmd"), NULL, NULL, SW_SHOW); 

얘도 독립된 프로세스로 구동



STARTUPINFO StartupInfo = {0};

PROCESS_INFORMATION ProcessInformation;

BOOL ret;

ret = CreateProcess(_T("c:\\windows\\system32\\cmd.exe"),NULL,NULL,NULL,FALSE,0,NULL,NULL,&StartupInfo, &ProcessInformation);

if(!ret) return ;

WaitForSingleObject(ProcessInformation.hProcess, INFINITE); 

독립된 프로세스 이나 종료대기

STARTUPINFO 구조체 초기화 안해주면 오류남


+

[링크 : http://mafa.tistory.com/entry/WinExec-프로세서에서-외부-프로세스-실행하기]

[링크 : http://karfn84.tistory.com/entry/MFC-프로그램-안에서-외부-파일을-실행시키기...CreateProcess]

[링크 : http://zodd.tistory.com/322]


얘는 종료시키는 애

[링크 : https://stackoverflow.com/questions/13193719/kill-process-started-with-shellexecuteex]

신고

'Programming > C / Win32 / MFC' 카테고리의 다른 글

mfc 파일 경로 얻기  (0) 2017.05.30
MFC CHttpConnection timetout 설정  (0) 2017.05.29
win32 외부 프로그램 실행  (0) 2017.05.29
cstring 'null' append 문제?  (0) 2017.05.18
MFC 시간측정(msec)  (0) 2017.04.18
MFC 다이얼로그 자세히(접기)  (0) 2017.04.14
Posted by 구차니

댓글을 달아 주세요

솔찍히 무슨 문제가 있을지 모르겠지만

구조상으로는 CString이니까 null 로 끝나도록 하니

되도록이면 null을 추가하는건 안좋지 않을까 싶은데

msdn 문서는 안보이네


[링크 : http://stackoverflow.com/questions/5042894/is-a-cstring-always-null-terminated]

신고

'Programming > C / Win32 / MFC' 카테고리의 다른 글

MFC CHttpConnection timetout 설정  (0) 2017.05.29
win32 외부 프로그램 실행  (0) 2017.05.29
cstring 'null' append 문제?  (0) 2017.05.18
MFC 시간측정(msec)  (0) 2017.04.18
MFC 다이얼로그 자세히(접기)  (0) 2017.04.14
mfc ccombobox 문자열 받아오기  (0) 2017.04.05
Posted by 구차니

댓글을 달아 주세요

여러가지 함수들이 있는데 msec 단위라면 이정도로 충분할 듯

typedef long clock_t;

#define CLOCKS_PER_SEC  1000 

_Check_return_ _CRTIMP clock_t __cdecl clock(void);


[링크 : http://ohpotato.tistory.com/30]


다른건 lib 링크해주고 별별 이상한걸 include 해야 하니 귀찮...

신고

'Programming > C / Win32 / MFC' 카테고리의 다른 글

win32 외부 프로그램 실행  (0) 2017.05.29
cstring 'null' append 문제?  (0) 2017.05.18
MFC 시간측정(msec)  (0) 2017.04.18
MFC 다이얼로그 자세히(접기)  (0) 2017.04.14
mfc ccombobox 문자열 받아오기  (0) 2017.04.05
MFC 라디오버튼 사용하기  (0) 2017.04.05
Posted by 구차니

댓글을 달아 주세요

워드를 보면 이런 기능이 있는데





어떻게 구현하는거지? 고민을 했거늘...

결론은 이렇게 쉬운거였나...


karaofdec 11-04-01 09:28  

네...GetWindowRect로 해결 했습니다. 

아래와 같이 하니 상하 크기만 줄어드는 효과를 낼 수 있네요... 

CRect dialog_rc; 

this->GetWindowRect(dialog_rc); 

dialog_rc.bottom += 100; 

dialog_rc.right += 100; 

MoveWindow(dialog_rc); 

[링크 : http://www.tipssoft.com/bulletin/tb.php/QnA/19829]


+

다이얼로그에다가 직접 노가다로 이것저것 넣었다 뺏다 하는거 보다는

이렇게 창 크기를 변경하는게 유용할 듯?



+

생각난김에 동적 컨트롤 추가

[링크 : http://yowon009.tistory.com/418]

[링크 : http://www.tipssoft.com/bulletin/tb.php/update/804] << 요거

    [링크 : http://www.tipssoft.com/bulletin/tb.php/QnA/13289]


신고

'Programming > C / Win32 / MFC' 카테고리의 다른 글

cstring 'null' append 문제?  (0) 2017.05.18
MFC 시간측정(msec)  (0) 2017.04.18
MFC 다이얼로그 자세히(접기)  (0) 2017.04.14
mfc ccombobox 문자열 받아오기  (0) 2017.04.05
MFC 라디오버튼 사용하기  (0) 2017.04.05
mfc cstring 문자열 관련(유니코드)  (0) 2017.04.04
Posted by 구차니

댓글을 달아 주세요

GetLBText() 로 해당 인덱스의 문자열을 받아올 수 있다.


[링크 : http://six605.tistory.com/250]


Gets a string from the list box of a combo box.

int GetLBText( 

   int nIndex, 

   LPTSTR lpszText  

) const;

 

void GetLBText( 

   int nIndex, 

   CString& rString  

) const; 

[링크 : https://msdn.microsoft.com/en-us/library/zcy9kze7(v=vs.110).aspx]

신고
Posted by 구차니

댓글을 달아 주세요

MFC 에서 쓸려면

Group을 설정해야 하는데

여러개를 묶을때 처음 녀석을 Group True로 설정

그리고 나머지는 False로 하고

가장 처음 Group True로 된 녀석에게 변수를 추가해주는데

대개는 DDX 사용하도록 권장하는 듯

[링크 : http://armcc.tistory.com/67]


수작업(!)으로 하려면

라디오 버튼은 CButton을 사용하기 때문에

GetCheckedRadioButton(first, last); 메소드를 이용해서 체크된 녀석의 ID를 받아오거나

[링크 : http://toring92.tistory.com/137]


여러개의 그룹을 수작업으로

((CButton*)GetDlgItem(IDC_RADIO1))->GetCheck() 이런식으로 일일이 체크해야 할 듯 하다.

[링크 : http://stackoverflow.com/questions/1165619/mfc-radio-buttons-ddx-radio-and-ddx-control-behavior]

신고
Posted by 구차니

댓글을 달아 주세요

음.. CString에서 제공하는 메소드는 아래뿐이네.. GetData() 나 다른것들은 상속에 의해서 다른 클래스에서 온 듯

operator LPCTSTR

GetBuffer() 

[링크 : https://msdn.microsoft.com/en-us/library/aa315043(v=vs.60).aspx]


GetString()은 누구꺼냐.. CObject의 스멜이 나긴 한다만...

(LPCTSTR)로 캐스팅하는 것과 거의 구현이 같은 GetString() 이란 메소드도 있습니다. 

[링크 : https://indidev.net/forum/viewtopic.php?f=5&t=92]


음.. 걍 void* 형으로 캐스팅?

CString str = L"английский"; //Russian Language

DWORD dwWritten=0;

WriteFile(pHandle , (void*) str, str.GetLength()*sizeof(TCHAR),&dwWritten , NULL);

[링크 : https://social.msdn.microsoft.com/.../how-to-send-unicode-characters-to-serial-port?forum=vcgeneral]


LPSTR - Long Pointer STRing

LPCSTR - LP Const STRing

LPTSTR - LP Tchar STRing

LPCTSTR - LPC Tchar STRing

LPWSTR - LP Wchar STRing

LPCWSTR - LP Const Wchar STRing

[링크 : http://pelican7.egloos.com/v/1768951]


char 형식의 좁은 문자 리터럴(예: 'a')

wchar_t 형식의 와이드 문자 리터럴(예: L'a')

char16_t 형식의 와이드 문자 리터럴(예: u'a')

char32_t 형식의 와이드 문자 리터럴(예: U'a') 

[링크 : https://msdn.microsoft.com/ko-kr/library/69ze775t.aspx]


TEXT("")과 _T("")의 차이점은

TEXT("")는 WinNT.h에서 #define했고

_T("")는 tchar.h에서 TEXT가 4글자라서 _T이렇게 2글자로 #define했다. 

[링크 : http://x108zero.blogspot.kr/2013/12/text-t-l.html]



+

tchar.h

#define __T(x)      L ## x

#define _T(x)       __T(x)


음.. L 이야 Long에 대한 prefix literal 이니...까?



신고
Posted by 구차니

댓글을 달아 주세요

어라 이거 적은적이 없었나?

대개 비트 구조체라고 했었는데 원래는 비트 필드 인듯

[링크 : https://en.wikipedia.org/wiki/Bit_field]

[링크 : http://lab.cliel.com/entry/C-C-비트필드Bit-Field]


아무튼 얘를 x86에서 쓰려면 대개 아래의 선언문을 통해서 바이트 align을 맞춰야 하는데

컴파일러 별로 사용가능한 선언문이 다르다.

#pragma pack is a Microsoft syntax that has been ported to GCC for compatibility reasons.

__attribute__((aligned)) is a GCC-specific syntax (unsupported by MSVC). 

[링크 : http://stackoverflow.com/.../whats-the-difference-between-pragma-pack-and-attribute-aligned]


신고

'Programming > C / Win32 / MFC' 카테고리의 다른 글

MFC 라디오버튼 사용하기  (0) 2017.04.05
mfc cstring 문자열 관련(유니코드)  (0) 2017.04.04
bit field와 컴파일러별 byte align  (0) 2017.03.27
MFC CButton 마우스 클릭시 작동하기  (0) 2017.03.08
GetHttpConnection()  (0) 2017.03.03
만능의 tokenizer?!  (0) 2017.03.03
Posted by 구차니

댓글을 달아 주세요

MFC에서 버튼은 마우스 릴리즈 시에 이벤트가 발생하는데

버튼을 클릭하는 시점에서 실행하도록 하려면 또 애증의


PreTranslateMessage()를 쓸 수 밖에 없나...


[링크 : http://www.tipssoft.com/bulletin/tb.php/FAQ/648]

[링크 : http://blog.naver.com/1004kiwoo/60128691649]



+

2017.10.17

버튼에서 LBUTTON_DOWN 이벤트 발생시(왼쪽 버튼을 누르는 시점)

행동을 하도록 해보니.. Focus는 누른 이후에 이동하는 거라

버튼에 대해서 포커스로 하기에는 무리..


CButton *pButton;

pButton = (CButton *)GetDlgItem(IDC_BUTTON3);

pButton->GetWindowRect(rect);

if(rect.PtInRect(pMsg->pt))

{

// TODO

}


다만, 키 입력 자체는 이미 클릭하거나 탭키로 포커스를 바꾼 이후에 입력하는 거라 문제가 되지 않을 듯 하다.

if(pMsg->wParam == VK_RETURN || pMsg->wParam == VK_ESCAPE)

{

if(GetDlgItem(IDC_EDIT1) == GetFocus())

{

// TODO

}


신고

'Programming > C / Win32 / MFC' 카테고리의 다른 글

mfc cstring 문자열 관련(유니코드)  (0) 2017.04.04
bit field와 컴파일러별 byte align  (0) 2017.03.27
MFC CButton 마우스 클릭시 작동하기  (0) 2017.03.08
GetHttpConnection()  (0) 2017.03.03
만능의 tokenizer?!  (0) 2017.03.03
mfc md5  (0) 2017.03.03
Posted by 구차니

댓글을 달아 주세요

아놔...

대충 검색하고 하다 보니.. username / password가 있는지도 몰랐네

한마디로 하루 작업한거 괜히 뻘짓 되는 저 마법의 두 인자.. -_ㅠ


CHttpConnection* GetHttpConnection(

   LPCTSTR pstrServer,

   INTERNET_PORT nPort = INTERNET_INVALID_PORT_NUMBER,

   LPCTSTR pstrUserName = NULL,

   LPCTSTR pstrPassword = NULL 

);


CHttpConnection* GetHttpConnection(

   LPCTSTR pstrServer,

   DWORD dwFlags,

   INTERNET_PORT nPort = INTERNET_INVALID_PORT_NUMBER,

   LPCTSTR pstrUserName = NULL,

   LPCTSTR pstrPassword = NULL 

); 


[링크 : https://msdn.microsoft.com/ko-kr/library/59kzsz14(v=vs.71).aspx]




---

수동으로.... 구현 -_ㅠ 아놔..

아무튼 AddRequestHeaders()는 제대로 된 형태가 아니면 삽입이 되지 않고

해당 HTTPConnection은 재사용해도 문제가 되진 않는다.


pHttpFile->SendRequest();

pHttpFile->QueryInfoStatusCode(m_dwStatusCode);

pHttpFile->QueryInfo(HTTP_QUERY_RAW_HEADERS_CRLF, szHeaders);


switch(m_dwStatusCode)

{

case HTTP_STATUS_OK:

{

CString strResult;

while(pHttpFile->ReadString(strResult))

{

strResult.ReleaseBuffer();

}

}

break;


case HTTP_STATUS_DENIED: // unauthorized

{

CString realm;

CString nonce;

CString cnonce("0000000000");

CString str;


pHttpFile->QueryInfo(HTTP_QUERY_WWW_AUTHENTICATE, szHeaders);

delete pHttpFile;


int curPos = 0;

CString resToken;

CString key;

CString val;


resToken = szHeaders.Tokenize(_T(" "), curPos);

while(!resToken.IsEmpty())

{

// Obtain next token

key = resToken = szHeaders.Tokenize(_T("="), curPos);

val = resToken = szHeaders.Tokenize(_T("\""), curPos);

resToken = szHeaders.Tokenize(_T(" "), curPos);

if(0 == key.Compare(_T("nonce"))) nonce = val;

if(0 == key.Compare(_T("realm"))) realm = val;

}


CString HA1,HA2,RES;

HA1 = md5gen(str = id+":"+realm+":"+pw);

HA2 = md5gen(str = CString("GET:")+query);

RES = md5gen(str = HA1+":"+nonce+":00000001:"+cnonce+":auth:"+HA2);


pHttpFile = pHttpConnect->OpenRequest(CHttpConnection::HTTP_VERB_GET, strObject);

auth.Append(_T("Authorization: "));

auth.Append(szHeaders);

auth.Append(_T(",username=\""));

auth.Append(id+"\",");

auth.Append(_T("uri=\""));

auth.Append(query+"\",");

auth.Append(_T("cnonce=\""));

auth.Append(cnonce+"\",");

auth.Append(_T("nc=00000001,response=\""));

auth.Append(RES+"\",");

pHttpFile->AddRequestHeaders(auth);

pHttpFile->SendRequest();

pHttpFile->QueryInfoStatusCode(m_dwStatusCode);

pHttpFile->QueryInfo(HTTP_QUERY_RAW_HEADERS_CRLF, szHeaders);

pHttpFile->Read(content, pHttpFile->GetLength());

}

break;

default:

break;

}


if(pHttpFile) {pHttpFile->Close(); delete pHttpFile; pHttpFile = NULL; }

if(pHttpConnect) {pHttpConnect->Close(); delete pHttpConnect; pHttpConnect = NULL; }

if(pSession) {pSession->Close(); delete pSession; pSession = NULL;


신고

'Programming > C / Win32 / MFC' 카테고리의 다른 글

bit field와 컴파일러별 byte align  (0) 2017.03.27
MFC CButton 마우스 클릭시 작동하기  (0) 2017.03.08
GetHttpConnection()  (0) 2017.03.03
만능의 tokenizer?!  (0) 2017.03.03
mfc md5  (0) 2017.03.03
ms c++ 관련 신규 문법(?)  (0) 2017.03.03
Posted by 구차니

댓글을 달아 주세요