'Programming/C / Win32 / MFC'에 해당되는 글 111건

  1. 2017.03.08 MFC CButton 마우스 클릭시 작동하기
  2. 2017.03.03 GetHttpConnection()
  3. 2017.03.03 만능의 tokenizer?!
  4. 2017.03.03 mfc md5
  5. 2017.03.03 ms c++ 관련 신규 문법(?)
  6. 2017.03.02 MFC HTTP POST + 인증
  7. 2017.03.02 MFC HTTP GET/POST
  8. 2017.02.28 win32 http 인증 관련
  9. 2016.12.19 MFC / stdlib / qsort example
  10. 2016.12.16 MFC UpdateData()

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

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


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


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

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

신고

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

mfc CreateFile com10 이상 열기  (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 구차니

댓글을 달아 주세요

HTTP 파싱하려는데

키와 값을 ,로 분리해서 쓰는녀석이라

고민을 해보는데.. 아무리 생각해도 토크나이저가 짱짱인듯


[링크 : http://codereview.stackexchange.com/questions/107899/converting-a-string-to-a-list-of-key-value-pairs]


[링크 : http://stackoverflow.com/questions/12581169/cstring-tokenization-issue]

신고

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

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
MFC HTTP POST + 인증  (0) 2017.03.02
Posted by 구차니

댓글을 달아 주세요

대부분이 오픈 라이브러리 사용하네..

순수하게 mfc 내부적으로 하는건 영 안보이는 듯..


[링크 : https://msdn.microsoft.com/en-us/library/windows/desktop/aa379908(v=vs.85).aspx] CryptCreateHash 


파일내용을 md5로 만들기

[링크 : https://msdn.microsoft.com/en-us/library/windows/desktop/aa382380(v=vs.85).aspx]

[링크 : http://wwwi.tistory.com/90]





+

Cstring의 유니코드, ascii 변환


CStringA (아스키)

CString (유니코드)

[링크 : http://stackoverflow.com/questions/859304/convert-cstring-to-const-char]



대충 수정해서 만든 코드. 예외처리는 전부 빼버렸음

#include <Wincrypt.h>


CString md5gen(CString input)

{

BYTE rgbHash[16];

BYTE *data;

int data_len;

DWORD cbHash;

CString ret;

CStringA str;


HCRYPTPROV hCryptProv;

HCRYPTHASH hHash;


str = input;

data = (BYTE *)str.GetString();

data_len = str.GetLength();


CryptAcquireContext(&hCryptProv, NULL, NULL, PROV_RSA_FULL, 0);

CryptCreateHash(hCryptProv, CALG_MD5, 0, 0, &hHash);

CryptHashData(hHash,(const BYTE *)data,data_len,0);

CryptGetHashParam(hHash, HP_HASHVAL, rgbHash, &cbHash, 0);

for (DWORD i = 0; i < cbHash; i++)

ret.AppendFormat(_T("%02x"), rgbHash[i]);


CryptDestroyHash(hHash);

CryptReleaseContext(hCryptProv,0);


return ret;


신고

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

GetHttpConnection()  (0) 2017.03.03
만능의 tokenizer?!  (0) 2017.03.03
mfc md5  (0) 2017.03.03
ms c++ 관련 신규 문법(?)  (0) 2017.03.03
MFC HTTP POST + 인증  (0) 2017.03.02
MFC HTTP GET/POST  (0) 2017.03.02
Posted by 구차니

댓글을 달아 주세요

아직 정확한 위치는 모르겠으나

.net 관련 문법인듯?

gcnew야 new의 새로운 버전인거 같은데

저 망할(?) ^는 도대체 무어란 말인가 -_-


String^ str2 = gcnew String(str.c_str());   

[링크 : https://kldp.org/node/99528]

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


The ref new aggregate keyword allocates an instance of a type that is garbage collected when the object becomes inaccessible, and that returns a handle (^) to the allocated object.

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

신고

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

만능의 tokenizer?!  (0) 2017.03.03
mfc md5  (0) 2017.03.03
ms c++ 관련 신규 문법(?)  (0) 2017.03.03
MFC HTTP POST + 인증  (0) 2017.03.02
MFC HTTP GET/POST  (0) 2017.03.02
win32 http 인증 관련  (0) 2017.02.28
Posted by 구차니

댓글을 달아 주세요



[링크 : http://blog.naver.com/asiank/130105719167]

[링크 : http://blog.naver.com/chodadoo/220597496748]


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

[링크 : https://msdn.microsoft.com/en-us/library/0z6f3y99.aspx] CHttpConnection

[링크 : https://msdn.microsoft.com/en-us/library/0tw8chfe.aspx] CHttpFile


+


#include <afxinet.h> 


[링크 : https://social.msdn.microsoft.com/.../how-do-i-include-cinternetsession?forum=vcgeneral]


+

[링크 : https://www.codeproject.com/Articles/3253/Beginners-Intro-to-HTTP-calls]

신고

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

ms c++ 관련 신규 문법(?)  (0) 2017.03.03
MFC HTTP POST + 인증  (0) 2017.03.02
MFC HTTP GET/POST  (0) 2017.03.02
win32 http 인증 관련  (0) 2017.02.28
MFC / stdlib / qsort example  (0) 2016.12.19
MFC UpdateData()  (0) 2016.12.16
Posted by 구차니

댓글을 달아 주세요


[링크 : https://msdn.microsoft.com/en-us/library/windows/desktop/aa383630(v=vs.85).aspx] winInet

[링크 : https://msdn.microsoft.com/en-us/library/windows/desktop/aa384081(v=vs.85).aspx] winHTTP


Authentication in WinHTTP

[링크 : https://msdn.microsoft.com/en-us/library/windows/desktop/aa383144(v=vs.85).aspx]


Handling Authentication

[링크 : https://msdn.microsoft.com/en-us/library/windows/desktop/aa384220(v=vs.85).aspx]



+

2017.03.02

[링크 : https://npteam.net/80]

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

신고

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

MFC HTTP POST + 인증  (0) 2017.03.02
MFC HTTP GET/POST  (0) 2017.03.02
win32 http 인증 관련  (0) 2017.02.28
MFC / stdlib / qsort example  (0) 2016.12.19
MFC UpdateData()  (0) 2016.12.16
윈도우에서 dll 동적 라이브러리 사용하기  (0) 2016.04.04
Posted by 구차니

댓글을 달아 주세요

심심해서 만든 로또 프로그램에 정렬기능 추가

qsort()는 첨 써보네..

일단 compare 함수에서 캐스팅 하는 부분을 잘 해주면...

범용으로 쓸수 있을려나? 무리일려나?


int compare (const void *first, const void *second)

{

    if (*(unsigned char*)first > *(unsigned char*)second)

        return 1;

    else if (*(unsigned char*)first < *(unsigned char*)second)

        return -1;

    else 

        return 0;

}


void CLottoDlg::OnButton1() 

{

// TODO: Add your control notification handler code here

int idx;

unsigned char flag[45];

unsigned char genval = 0;

CString *strarray[42] =

{

&m_edit1,&m_edit2,&m_edit3,&m_edit4,&m_edit5,&m_edit6,

&m_edit7,&m_edit8,&m_edit9,&m_edit10,&m_edit11,&m_edit12,

&m_edit13,&m_edit14,&m_edit15,&m_edit16,&m_edit17,&m_edit18,

&m_edit19,&m_edit20,&m_edit21,&m_edit22,&m_edit23,&m_edit24,

&m_edit25,&m_edit26,&m_edit27,&m_edit28,&m_edit29,&m_edit30,

&m_edit31,&m_edit32,&m_edit33,&m_edit34,&m_edit35,&m_edit36,

&m_edit37,&m_edit38,&m_edit39,&m_edit40,&m_edit41,&m_edit42

};


unsigned char row[42];

memset(flag, 0x00, sizeof(unsigned char) * 45);

srand(time(NULL));


for(idx = 0 ;idx < 30;idx++)

{

do

{

genval = rand() % 45;

}

while(flag[genval] != 0);

flag[genval] = 1;

row[idx] = genval;

}


for(idx = 0; idx < 5; idx++)

{

qsort(row + (idx * 6), 6, sizeof(char), compare);

}


for(idx = 0; idx < 30; idx++)

{

strarray[idx]->Format("%d",row[idx] + 1);

}


UpdateData(FALSE);


lotto.zip


신고

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

MFC HTTP GET/POST  (0) 2017.03.02
win32 http 인증 관련  (0) 2017.02.28
MFC / stdlib / qsort example  (0) 2016.12.19
MFC UpdateData()  (0) 2016.12.16
윈도우에서 dll 동적 라이브러리 사용하기  (0) 2016.04.04
가변 매크로 __VA_ARGS__  (0) 2016.03.18
Posted by 구차니

댓글을 달아 주세요

심심해서 오랫만에 짜본 초 허접 로또번호 생성 ㅋㅋㅋ

DDX 통해서 값 교환은 처음인가.. 어색하네?


아무튼 class wizard로 변수 연결해주다가 귀찮아서

소스에서 DDX 부분에 손봐서는 변수는 연결했는데

값이 안나오길래 검색해보니 UpdateData()라는 함수 발견


msdn은 설명이 어려운데

true 면은 컨트롤에서 연결된 변수로 값을 가져오고(UI쪽에서 끌어오기)

false 면은 연결된 변수의 값을 컨트롤러 넘겨준다(UI쪽으로 넘겨주기)


void CLottoDlg::OnButton1() 

{

// TODO: Add your control notification handler code here

int idx;

unsigned char flag[45];

unsigned char genval = 0;

CString *strarray[42] =

{

&m_edit1,&m_edit2,&m_edit3,&m_edit4,&m_edit5,&m_edit6,

&m_edit7,&m_edit8,&m_edit9,&m_edit10,&m_edit11,&m_edit12,

&m_edit13,&m_edit14,&m_edit15,&m_edit16,&m_edit17,&m_edit18,

&m_edit19,&m_edit20,&m_edit21,&m_edit22,&m_edit23,&m_edit24,

&m_edit25,&m_edit26,&m_edit27,&m_edit28,&m_edit29,&m_edit30,

&m_edit31,&m_edit32,&m_edit33,&m_edit34,&m_edit35,&m_edit36,

&m_edit37,&m_edit38,&m_edit39,&m_edit40,&m_edit41,&m_edit42

};


memset(flag, 0x00, sizeof(unsigned char) * 45);

srand(time(NULL));


for(idx = 0 ;idx < 42;idx++)

{

do

{

genval = rand() % 45;

}

while(flag[genval] != 0);

flag[genval] = 1;


strarray[idx]->Format("%d",genval + 1);

}


UpdateData(FALSE);


[링크 : http://lazypaul.tistory.com/232]

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

신고

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

win32 http 인증 관련  (0) 2017.02.28
MFC / stdlib / qsort example  (0) 2016.12.19
MFC UpdateData()  (0) 2016.12.16
윈도우에서 dll 동적 라이브러리 사용하기  (0) 2016.04.04
가변 매크로 __VA_ARGS__  (0) 2016.03.18
#import ?  (0) 2015.12.21
Posted by 구차니

댓글을 달아 주세요