VB에서 DataGridView사용시 해당 컬럼을 기준으로 정렬이 필요할때 이런식으로 사용하면 된다.
Sort 함수를 사용한다.
첫번째는 해당 컬럼, 두번째는 정렬형태(순차, 역순차)


 

DataGridView_PROCESS.Sort(DataGridView_PROCESS.Columns(1), System.ComponentModel.ListSortDirection.Ascending)

Posted by 훈이아제
,

VB.net으로 TASK MANAGER 생성시 사용하기 위하여 생성한 프로그램 소스이다.
TASK Manager 제작시 유용하게 사용가능하도록 하였다.
입력은 TASK의 이름과 해당 TASK의 관리 flag를 입력 받게 하였다.

 



    Private Sub CheckProcess(ByVal strName As String, ByVal iFlag As Integer)
        On Error GoTo WMIError


        Dim bFlag As Boolean
        bFlag = False

        ' -1이면 무조건 죽이기
        ' 0이면 하나만 살리고 죽이기
        ' 1이면 체크만 하기.

        m_strPName = strName.Trim
        m_iRun = 0
        m_DateRun = Nothing

        Dim sQuery As String

        sQuery = "SELECT * FROM win32_process where name='" & m_strPName & ".exe' "

        Dim oWinmg As Object, oExQuery As Object, oProcess
        oWinmg= GetObject("winmgmts:")   ' 해당 서비스 가져오기
        On Error GoTo 0
        oExQuery = oWinmg.ExecQuery(sQuery.ToString())  ' 실행
        'oExQuery = oWinmg.ExecQuery("SELECT * FROM win32_process where name='task1.exe'")
        'oExQuery = oWinmg.ExecQuery("SELECT * FROM win32_process ")
        If oExQuery .Count > 0 Then  'task1.exe 이 새성된다.
            For Each oProcess In oExQuery   ' 각 결과값.

                ' flag가 True가 되면 강제로 죽인다.
                If bFlag Or (iFlag = -1) Then
                    Shell("tskill " & oProcess.processid, vbHide)  '두번째 것부터는 죽임..
                    m_iRun = 0
                End If
                bFlag = True
                m_iRun = 1
            Next
        Else

            If iFlag = 0 Then
                Shell("cmd.exe /c " & m_strPName & ".exe", vbHide)  '해당 프로그램 살리기
            End If

        End If


WMIError:
    End Sub

 

 


 

Posted by 훈이아제
,

ClistCtrl 사용시 폭을 일일이 지정하기 귀찮을 때가 있다.

이 때, 사용하기 좋은 것이 있다.


m_ctrlList1.SetColumnWidth(0, LVSCW_AUTOSIZE_USEHEADER);


위 명령한줄이면 해당 컬럼 (위에서는 0번째)의 폭을 내용에 맞추어서 자동으로 줄이고 늘이고 한다.

단 위의 것을 사용할때 주의사항은 값을 리스트에 다 넣어 놓고 실행해야한다.

먼저 실행시에는 입력 하기 전의 리스트에 맞춘다. 없는경우에는 해더 크기로 맞춘다.




Posted by 훈이아제
,

====================================================================================================================

A mailslot is a pseudofile that resides in memory, and you use standard file functions to access it. The data in a mailslot message can be in any form, but cannot be larger than 424 bytes when sent between computers. Unlike disk files, mailslots are temporary. When all handles to a mailslot are closed, the mailslot and all the data it contains are deleted.
A mailslot server is a process that creates and owns a mailslot. When the server creates a mailslot, it receives a mailslot handle. This handle must be used when a process reads messages from the mailslot. Only the process that creates a mailslot or has obtained the handle by some other mechanism (such as inheritance) can read from the mailslot. All mailslots are local to the process that creates them. A process cannot create a remote mailslot.
A mailslot client is a process that writes a message to a mailslot. Any process that has the name of a mailslot can put a message there. New messages follow any existing messages in the mailslot.
Mailslots can broadcast messages within a domain. If several processes in a domain each create a mailslot using the same name, every message that is addressed to that mailslot and sent to the domain is received by the participating processes. Because one process can control both a server mailslot handle and the client handle retrieved when the mailslot is opened for a write operation, applications can easily implement a simple message-passing facility within a domain.
To send messages that are larger than 424 bytes between computers, use named pipes or Windows Sockets instead.

====================================================================================================================

---위 내용 http://msdn.microsoft.com 에서 퍼옴---




내용인 즉 메일슬롯의 생성은 로컬에서만 가능하고 원격지에 생성은 않된다.

원격지로 메일슬롯을 보낼때는 424바이트를 넘길 수 없다.

도메인 메일슬롯을 생성하여 같은 도메인내의 프로세서들이 공용으로 사용할수 있다.

뭐 이런 내용이다.

메일 슬롯을 사용하는데 내용은 알고 사용하자.


Posted by 훈이아제
,

MFC에서 폰트를 지정하여 사용하기 위해서 사용된다.

CFont는 가장 편하게 많이 사용되는 폰트클래스이다.

주요 함수는

CreateFont();

CreateFontIndirectA();

CreatePointFont();

CreatePointFontIndirect();

가 있다.

 

아래의 두개의 함수는

CreateFont();

CreateFontIndirectA();

일반적으로 폰트와 각 폰트의 속성을 일일이 지정하여 사용할 수 있다.

 

나머지 두개의 함수는

CreatePointFont();

CreatePointFontIndirect();

매우 간단하게 폰트를 생성하여 사용하기 편하다. 단지 2개의 변수 크기와 폰트명만 있으면 사용가능하다.

단, 기울기와 굵은글짜등의 효과는 상위 2개의 함수를 사용하여 생성하기 바란다.

 

예)

cfListFont.CreateFont(16, // 크기
                        0,
                        0,
                        0,
                        FW_SEMIBOLD, // 폰트 굵기
                        FALSE,              
                        FALSE,
                        FALSE,
                        DEFAULT_CHARSET,
                        OUT_DEFAULT_PRECIS,
                        CLIP_DEFAULT_PRECIS,
                        DEFAULT_QUALITY,
                        FF_DONTCARE,
                        _T("나눔고딕코딩")//폰트 이름

  );

GetDlgItem(IDC_EDIT_ID)->SetFont(&cfListFont);

상세하게 폰트 생성하여 설정

 

cfListFont.CreatePointFont(110,"나눔고딕코딩");
GetDlgItem(IDC_EDIT_ID)->SetFont(&cfListFont);

간단하게 폰트 생성하여 설정

 

두개의 차이는 폰트굵기를 위에는 지정하였으므로 ‘IDC_EDIT_ID’라 만든 Edit 박스의 글짜가

아래보다 굵게 나온다는 뿐이다.

Posted by 훈이아제
,

mfc 프로그램을 하면 항상 듣는 이야기가 화면 예쁘게 않되냐.

색상이 맘에 않든다.

너무 삭막하다.

이런 말이다.

기본적인 MFC의 디자인은 매우 단조롭고 평이하다.

따라서 이것들의 이미지등을 입히고 수정하는데 재일 많이 사용하는 함수가 GetDlgItem() 이다.

이 함수는 MFC 다이얼로그의 각 오브젝트를 받아와서 컨트롤 할 수 있게 도움을 준다.

간단한 예로 보였다, 안보였다 하는 역활을 할수 있다.

IDC_STACT_N1 이라는 글자 이미지가 있다하자 이것을 보였다 안보였다 하는 데는 이와 같이 사용할 수 있다.

 

// 보여주기

GetDlgItem(IDC_STACT_N1)->ShowWindows(SW_SHOW);

 

// 숨기기

GetDlgItem(IDC_STACT_N1)->ShowWindows(SW_HIDE);

 

이런식으로 많이 사용한다.

 

 

Daum 태그: ,,
Posted by 훈이아제
,

// Static 부분 글자의 색을 입히는 부분.
// static의 모양을 받아와서 다시 그리는 형태로 처리한다.
// 다른형태로 색을 표현하는 것들이 많지만 이 것이 간단한 색표현에서는 더 낳을듯하다.
CRect     sRect;
COLORREF sColor;

// IDC_STATIC_DB 에 배경을 입힌다.
// 상태에 따라서 색을 지정한다.
if ( m_iDBConnetStat == TRUE)
{
    sColor = RGB(10,180, 10);
}
else
{
    sColor = RGB(250, 10, 10);
}
// 기존 아이템을 받는다.
CStatic *pSvNameTxt = ((CStatic*)GetDlgItem( IDC_STATIC_DB ));
// 기존 아이템의 위치를 받는다.
pSvNameTxt->GetClientRect( sRect );
CClientDC cdcDBSTATE( GetDlgItem( IDC_STATIC_DB ));
// 색을 입힌다.
cdcDBSTATE.SetBkColor(sColor);
// 색을 입힌다.
cdcDBSTATE.FillSolidRect( sRect , sColor );
// 다시 그린다.
cdcDBSTATE.DrawText( theApp.m_pCfg->sDBCFG.cDbAddr , &sRect , DT_CENTER );

 

주의할 점:  최초 초기작업에서 이 부분이 제대로 처리되지 않는 경우가 발생한다. 따라서, 정상적으로 화면을 구동한 후 처리하여 기존 아이템 위에 덧씌우기 하길 바란다.

Daum 태그: ,,,,

Posted by 훈이아제
,

ListCtrl을 사용하여 List를 관리할 때 아이템은 모두 지우는 함수는 있는데.

컬럼을 모두 지우는 것은 없다.

그래서, 찾은 것 이 현 컬럼의 수를 체크하여 하나씩 지우는 수밖에 없다.

결과물)

m_ctrlLIST1.DeleteAllItems();  -- 모든 아이템 지우기
while(m_ctrlLIST1.GetHeaderCtrl()->GetItemCount() > 0)   -- 현재 컬럼의 수를 나타낸다. While문에 수 정보가 ‘0’이상이면 무조건 처리하도록 한다. 수가 0이 될때까지 While문안에서 지운다.
{
    m_ctrlLIST1.DeleteColumn(0);  -- 처음 컬럼을 지운다. 처음 컬럼을 지우면 뒤의 컬럼이 그 위치로 shift 되기 때문에 처음 컬럼만 지운다.
}

Posted by 훈이아제
,
요즘은 Chart FX만 파고 있는거 같다.

이 번에는 그래프의 포인터에 값을 표현할때 값을 내가 원하는 형태로 보여주는 부분이다.
그래프를 표현한 후 특정 포인트의 값을 보고 싶을때 마우스를 포인터 위에 놓으면 보여주는
Chart FX의 착한 기능이 있다. 그런데 이 때 해당 Data의 값이 소수점 이하로 표현이 안되는 것이다. 그렇다고 Y축 값을 바꾸면서 까지 표현하고 싶지 않고 포인터만 표현하고 싶을때 사용하면 참좋다. 이 때 단위까지 넣을수 있으니 더욱 좋은 것이 아니겟는가.

기존.
사용자 삽입 이미지

적용후
사용자 삽입 이미지


적용 소스
            ChartFX.WinForms.AxisY tempAY3;
            tempAY3 = new ChartFX.WinForms.AxisY();
            tempAY3.Title.Text = "3333";
            tempAY3.Title.TextColor = Color.Chocolate;

            tempAY3.DataFormat.CustomFormat = "0.00 ℃";

            chart1.AxesY.Add(tempAY3);


Posted by 훈이아제
,