|
[타이머 동작으로 100ms 마다 한번씩 해당 작업을 수행하고 싶다] 라는 말씀이시죠?
1. if - else문 제거
현재 소스를 보면 label이 다수 존재 합니다.
그리고 수행 동작들은 모두 동일합니다.
label 안의 내용만 틀리다면 이 label 들을 배열로 선언합니다.
[.h 파일]
TLabel *lbl[10]; // 10개로 가정 하겠습니다.
[.cpp 파일]
그리고 OnCreate()나 OnShow()에서
lb[0] = Label1; ...... lbl[10] = Label10;
으로 좍~~~ 선언을 합니다.
그럼 타이머 안에서의 함수는
if(lbl[index]->Caption!="0.0.0.0")
{
... //
}
index += 1;
으로 수행 하면 될 것 같습니다.
index 관리는 따로 해주셔야 되구요
번외편 님이 쓰신 글 :
: 궁금한게 많아서여;;; 오늘도 질문좀 하려고 합니다.
: 동작하는데는 크게 문제가 없는데 왠지 타이머를 많이 쓰면 안될거 같아서요
: 아래처럼 cmd를 실행하려고 하는데 cmd모드를 너무 빨리 실행시켜서인지는 잘 모르겠지만
: 가끔 route.exe 응용프로그램 오류가 뜹니다.
: 그래서 timer로 두개를 나누었더니 해결이 되더군여 그런데 문제는 밑에 if문이 한두개가
: 아니라 여러개가 있어서요.. timer 갯수만 늘려서 해결하려니 해결하는 방법이 어려운게 아니라
: 왠지 쫌 꺼림찍하더라구여...
:
: 그래서 질문드립니다. 위쪽 if문이랑 아래쪽 if문이랑 다른 타이머나 통신포트쪽에 지장주지 않고
: 0.1초의 시간을 줄수 있는 방법이 없을까여? 물론 timer 여러개로 사용하는거 빼구여
: 좋은 방법좀 알려주셨으면 합니다.
:
: 그럼 이만..
:
:
: if(Label10->Caption!="0.0.0.0")
: {
: sprintf(cmd_0,"route add 0.0.0.0 mask 0.0.0.0 %s metric 4",Label10->Caption);
: STARTUPINFO si3;
: PROCESS_INFORMATION pi3;
: ZeroMemory( &si3, sizeof(si3) );
: si3.cb = sizeof(si3);
: CreateProcess( NULL, cmd_0, NULL, NULL, FALSE, DETACHED_PROCESS, NULL, NULL, &si3, &pi3 );
: }
:
: if(Label11->Caption!="0.0.0.0")
: {
:
: char *addr1 = Label11->Caption.c_str();
: long addrVal = inet_addr(addr1);
:
: IN_ADDR temp;
: temp.s_addr = (addrVal & maskVal) | addVal;
: sprintf(cmd_1,"route add 0.0.0.0 mask 0.0.0.0 %s metric 3",inet_ntoa(temp));
: STARTUPINFO si4;
: PROCESS_INFORMATION pi4;
: ZeroMemory( &si4, sizeof(si4) );
: si4.cb = sizeof(si4);
: CreateProcess( NULL, cmd_1, NULL, NULL, FALSE, DETACHED_PROCESS, NULL, NULL, &si4, &pi4 );
: }
|