title: How do I use sendmessage for sending wm_timer that has timer proc in win32
body: <p>I have a timer, ID 1, which has a timerproc as a callback function.</p>
  
  <p>I am making the other timers (ID 2, 3, ...) in the timerproc and they use <code>WM_TIMER</code> event, not another timerproc.</p>
  
  <p>When creating window, I want to immediately generate Timer Event, ID 1.</p>
  
  <p>So I used SendMessage function like that</p>
  
  <pre><code>SendMessage(hWnd, WM_TIMER, 1, (LPARAM)&amp;timerproc);
  </code></pre>
  
  <p>but it didn't work.</p>
  
  <p>How do I activate timerproc at right that the first time of window?</p>
  
  <pre><code>void CALLBACK MakeRain(HWND hWnd, UINT iMessage, UINT_PTR wParam, DWORD lParam) 
  { /* this is timerproc for ID 1 */
      if (gRdx &gt;= MAX_WORDS_COUNT) return;
  
      gRain[gRdx].f = 1;
      gRain[gRdx].x = rand() % (gRect.right - 30);
      gRain[gRdx].y = 10;
  
      int id = RdxToTID(gRdx);
      int vel = rand() % 2000 + 1000;
      SetTimer(hWnd, id, vel, NULL);    /* In here I am making other timers */
      gRdx++;
  }
  LRESULT CALLBACK WndProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam)
  {
          HDC hdc;
          PAINTSTRUCT ps;
          int tid = wParam;
          int rdx = TIDToRdx(tid);
  
          switch (iMessage)
          {
          case WM_CREATE:
              GetClientRect(hWnd, &amp;gRect);
              srand((unsigned int)time(NULL));
              SetTimer(hWnd, 1, MAKE_RAIN_TERM, MakeRain);
              /* my trying, It is not working */
              //SendMessage(hWnd, WM_TIMER, 1, (LPARAM)&amp;MakeRain);
              return 0;
          case WM_TIMER:
              gRain[rdx].y += 10;
              if (gRain[rdx].y &gt;= gRect.bottom) {
                  gRain[rdx].f = 0;
                  KillTimer(hWnd, tid);
              }
              InvalidateRect(hWnd, NULL, TRUE);
              return 0;
          case WM_PAINT:
              hdc = BeginPaint(hWnd, &amp;ps);
              for (int i = 0; i &lt; MAX_WORDS_COUNT; i++) {
                  if (gRain[i].f == 0) continue;
                  TextOut(hdc, gRain[i].x, gRain[i].y, words[i], lstrlen(words[i]));
              }
              EndPaint(hWnd, &amp;ps);
              return 0;
          case WM_DESTROY:
              KillTimer(hWnd, 1);
              PostQuitMessage(0);
              return 0;
          }
          return DefWindowProc(hWnd, iMessage, wParam, lParam);
      }
  </code></pre>