질문과 답변

윈도우즈 api정복 1권 201~202p 예제 질의 드립니다. 날짜:2023-7-20 12:02:35 조회수:297
작성자 : 황금가물치
포인트 : 63
가입일 : 2022-05-06 15:33:18
방문횟수 : 55
글 9개, 댓글 9개
소개 : 안녕하세요. 윈도우즈api를 공부하기위하여 가입했습니다. 잘 부탁드립니다.
작성글 보기
쪽지 보내기
LRESULT CALLBACK WndProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam) {
    
    HDC hdc = { 0 };
    PAINTSTRUCT ps = { 0 };
    
    switch (iMessage) {
    case WM_CREATE:
        c1 = CreateWindow(TEXT("button"), TEXT("Draw Ellipse?"), WS_CHILD | WS_VISIBLE | BS_CHECKBOX,
               20, 20, 160, 25, hWnd, (HMENU)0, g_hInst, NULL);
        c2 = CreateWindow(TEXT("button"), TEXT("Good bye Message?"), WS_CHILD | WS_VISIBLE | BS_AUTOCHECKBOX,
               20, 50, 160, 25, hWnd, (HMENU)1, g_hInst, NULL);
        c3 = CreateWindow(TEXT("button"), TEXT("3State"), WS_CHILD | WS_VISIBLE | BS_3STATE, 20, 80, 160, 25,
               hWnd, (HMENU)2, g_hInst, NULL);
        c4 = CreateWindow(TEXT("button"), TEXT("Auto 3State"), WS_CHILD | WS_VISIBLE | BS_AUTO3STATE, 20, 110, 160, 25,
               hWnd, (HMENU)3, g_hInst, NULL);
        return(0);
    case WM_COMMAND:
        switch (LOWORD(wParam)) {
        case 0:
            if (SendMessage(c1,BM_GETCHECK,0,0)==BST_UNCHECKED) {
                SendMessage(c1, BM_SETCHECK, BST_CHECKED, 0);
                bEllipse = TRUE;}
            else {
                SendMessage(c1, BM_SETCHECK, BST_UNCHECKED, 0);
                bEllipse = FALSE;}
            InvalidateRect(hWnd, NULL, TRUE);
            break;

해당 찐하게 밑줄 친 부분이 궁금합니다. SendMessage(c1,BM_GETCHECK,0,0)==BST_UNCHECKED에서 체크박스가 표시가 안되면  리턴값이 BST_UNCHECKED로 되지만 SendMessage(c1, BM_SETCHECK, BST_CHECKED, 0);에서 체크상태를 변경하라고 메시지는 보내지만 체크하지 않으면  bEllips값은 계속 FALSE로 남는건지 궁금합니다.
SendMessage에서 BM_GETCHECK와 BM_SETCHECK 두가지가 만족해야지 bEllipse=TRUE로 변경되는 걸로 이해하면 되는지요?
궁금합니다.
 



김민수
썑옣移섍린 蹂댁씠뒪梨꾪똿 룄떦룞꽦씤留쏆궗吏 룎떛뱾쓽紐⑥엫 泥쒖븞 븞留 臾댁궡룞븞留 닔엯李⑤뭹吏곸닔엯 留덈뱾뿭梨꾪똿 異쒖옣씠留덉궗吏 | 븳誘쇨뎅 1벑 留덉궗吏빋 | 遺궛異쒖옣꺏 援궛 뿬愿 洹議깆븣諛 슜씤 肄쒓구꺏 異쒖옣留덉궗吏異붿쿇 留덉씠궛닕諛 꽦씤留뚰솕 뾼留덉쓽蹂닿굔泥댁쑁 吏삤씠異쒖옣留덉궗吏 젅삤봽由곗텧옄留덉궗吏

옱깮遺뾽 醫낅쪟 | 媛긽솕룓 꽭湲 | 눥븨紐곕뾽 媛긽솕룓 닔씡 꽭湲 吏곸옣씤 옱뀒겕 異붿쿇 냼븸닾옄긽뭹 媛怨 異 넻怨 吏곸옣씤遺뾽 怨좎닔씡 遺궛 遺뾽 겢읇 | 닾옄빀땲떎 | 닾옄쑉 怨듦린 옱뀒겕 而⑥꽕똿 cad 遺뾽 옱뀒겕 寃뚯엫 븘湲곕뜲씪由 쑁븘留섑솚쁺 궗옉袁 30 40 二쇰遺뾽 | 옱깮洹쇰Т 궗씠듃 | 냼븸닾옄빋 紐⑤쓽 吏삦 슱궛 釉붾옓諛뺤뒪 뿉봽罹먯뒳 諛섑씗 torrent 媛꽣踰⑦듃뜲 빆臾몄꽦씤留뚰솕

목록보기 삭제 수정 신고 스크랩

Program 7월20일 1:36:11  

if (SendMessage(c1,BM_GETCHECK,0,0)==BST_UNCHECKED) {//c1 에 체크가 안되어 있으면
SendMessage(c1, BM_SETCHECK, BST_CHECKED, 0);// c1 에 체크 하라고 메시지 보내고
bEllipse = TRUE;}// bEllipse 에 TRUE 를 대입하라
else {//그런데 c1 이 체크가 되어 있다면
SendMessage(c1, BM_SETCHECK, BST_UNCHECKED, 0);// c1 을 언체크 상태로 만들고
bEllipse = FALSE;}//bEllipse 에는 FALSE로 세팅하라
InvalidateRect(hWnd, NULL, TRUE);//화면을 갱신하라 그러면 bEllipse 의 TRUE FALSE에 따라 아마 다음 동작이 나타날 것 같습니다

황금가물치 7월20일 8:45:47  

답변 감사합니다.


로그인하셔야 댓글을 달 수 있습니다.